0% found this document useful (0 votes)
31 views

CS163 Syllabus - Part 1 Expectations

Uploaded by

Wagon Wizard
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
31 views

CS163 Syllabus - Part 1 Expectations

Uploaded by

Wagon Wizard
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

CS163: Data Structures

Syllabus - Expectations
Summer 2024
Computer Science Prerequisites:
CS162 or consent of instructor
This means you should have experience writing complete
programs in C++ and be proficient creating classes and
building linear linked lists

Instructor: Karla Steinbrugge Fant


Office Phone: 503-725-5394
Email: [email protected]
Office Location: FAB 120-26
Office Hours: Tuesday/Thursday 2-2:50 or by appointment
Both Zoom and in-person office hours are available. Zoom id: 257 779 553
To get in line, use this google form: https://forms.gle/4ciFt3vagBuFiFJm8
To request an appointment: https://forms.gle/ohQz1UVrHxv9xxNX8
Discord Invite: https://discord.gg/VgFAhuKdMH
Code Party: Wednesday 2-5:50 in FAB 130 (and adjacent fishbowl)
Required Data Abstraction and Problem Solving with C++, Carrano (latest edition)
Textbooks: CS163 Lab Manual for Winter 2024, CS162-163 Linux & Vim Manual 2022-2023
Requirements: Required: webcam, microphone, internet access for Proficiency Demos
Computing All work is to be performed on the MCECS linux systems:
System: Host name for Lab: cs163lab.cs.pdx.edu
Host name for Assignments: linux.cecs.pdx.edu
Compiler: GNU GCC C++ compiler using Modern C++ on MCECS linux systems:
g++ -std=c++17 program.cpp -Wall -g
Editors Allowed: vi, vim, or emacs, NO OTHER EDITORS may be used
Disabilities: If you have a disability and need academic accommodations, you must notify the
instructor immediately to arrange needed support. This includes any
accommodation required for taking examinations.
Such arrangements should take place at least 7 business days advanced notice.

Fant – Summer 2024 CS163 in-person Syllabus: Expectations Page 1 of 9


Welcome to CS163

Welcome to CS163 – Data Structures. This is a great course and moves us into learning how
to apply the syntax covered in CS162. I am dedicated to the Computer Science field. Success
isn’t just about what we do today or tomorrow, but success is about preparing for your future.
CS163 is an important step along your journey into upper division and industry. I pare my
teaching with my industry background. I incorporate feedback from graduates and local
industries to ensure that you are receiving the best possible education. The material that is
covered in this class is vital to building a solid foundation for any Computer Scientist and I am
excited for you to start!

Course Description and Goals


Course Catalog: Data abstraction with formal specification. Elementary algorithm analysis.
Basic concepts of data and its representation inside a computer. Linear, linked, and
orthogonal lists; tree structures. Data structures are implemented as data abstractions.
Sorting and searching strategies. Data management.

Our goal is to acquaint you with the structures used in C++ for the storage and manipulation
of data. The concept of data abstraction and the problem of building implementations of
abstract data types are emphasized. Both static and dynamic implementations of major
structures are presented and the advantages and disadvantages of each are discussed.
Structures include lists of several types, stacks, queues, trees, binary trees, B-trees and
graphs. Recursion and key transformation (hashing) are examined. We encourage you to
stretch the boundaries of your programming skills. Start examining algorithms in terms of
their efficiency and effectiveness.

You do not need to be an expert in C++, but we do need 10 weeks of C++ background with
experience programming pointers and dynamic memory to meet these goals. Prior
experience building, traversing and manipulating linear linked lists is important. The key is to
keep up with the course materials and program regularly.

What does it mean to be hybrid?


CS163 is primarily an in-person class. This means we will have two in-person class lectures
each week, and attendance is required unless you are sick or not feeling well. However, as a
hybrid class, we may have some preannounced sessions held remotely via zoom and it allows
you to attend remotely if you are out of town or sick (up to a maximum of 25% of your
attendance). Participating with the class in this way will reinforce our online content. Activities
that take place in-class include drills to reinforce the concepts, in-person quizzes, and guided
notes. ***Class lectures are not recorded***
If you are not able to attend class, you should discuss your absences with your instructor.
Fant – Summer 2024 CS163 in-person Syllabus: Expectations Page 2 of 9
Attendance Expectations
Success is directly related to attending and being engaged. We expect you to attend each
lecture and lab session. If you are sick, please do not attend in-person.

Getting Started
Please be patient as you get started! It will take time to adjust to a different approach than
CS162. In CS162, we learned the fundamentals of Computer Science building the base-layer
of C++ concepts with a heavy focus on syntax. Now, we want to apply those programming
skills to thinking about how to use memory to solve problem. This class is not about learning
more C++ syntax. Instead, we want to fine tune our programming skills and make sure the
foundation layer skills are firmly established. By doing so, we shift our focus to building
“abstractions”. This may be uncomfortable for you at first – so make sure to be patient and
give yourself the time to get acquainted with abstractions. Your job will be to stay current
with the material and make sure to read the textbook! All of our plans to guide you will be
useless if you elect not to use them. This is a big risk! That means use care to not fall behind.

The First Week of Class


In our first week together, we will begin unveiling the concepts that are most important to
start with. They will come, one step at a time. Our first week is specifically designed to give
you the space to get comfortable with the flow of the class. In our first week of lab, you will
learn how to login and use our systems if you are new to PSU. We also use the first week of
lab to review linear linked lists and apply recursion. By attending our first week of lectures,
you will get acquainted with much about this class and how to be successful. Remember, it
will happen one step at a time. The materials can be found on the Canvas Page for that week.
These are all in one place.

After the first week, this course runs in 2-week cycles with deliverables that repeat every two
weeks. Each week you will have reading assignments, lectures to attend, weekly prelabs to
perform prior to attending lab and linux & vim exercises. The programming assignments have
progress submission to help incrementally guide to towards successfully completing each
assignment within that 2-week period.

Setting Expectations
The name of our course is “Data structures”. This is not “Introduction to Programming”. It is
not “Introduction (or advanced) C++”. This course is the only Data Structures course in our
curriculum and establishes how to best use memory to solve problems. This material will be
heavily used in the upper division and ultimately in industry.

This class focusses on learning how to create, traverse and modify data structures. IIn CS162
we learned about arrays and linear linked lists. These are examples of two data structures.

Fant – Summer 2024 CS163 in-person Syllabus: Expectations Page 3 of 9


But they are not the only ones. They are just the first of a long list of ways in which we can
work with memory. As a Computer Scientist, we need to learn how to apply data structures
to problems that we may have never thought about. This means we want to think about how
we solve problems as we learn new data structures. We will be using a programming language
(in this case C++) as a tool to advance our knowledge data structures to solve problems.

Success in this course is very achievable. But it does require your active involvement. Every
week, you will need to keep up with the course materials, attend lectures, complete the
weekly linux & vim exercises, participate with lab, program frequently, and communicate
when you need assistance. Learning is an active process that truly requires deep, personal
engagement with the material. A checklist is provided so you can make sure to stay on top of
what is due each week!

Being Ready for CS163


It is essential that you already know 10 weeks of C++ before taking this class. You need to
know the basic concepts of how to traverse, insert and remove from a linear linked list. If you
are concerned about your level of expertise, please contact [email protected] directly.

Prior Knowledge expected: CS163 is designed for students who have already have
programmed in C++ previously. In this class we use C++ to learn about data structures
applying the syntax previously learned. You should already be able to program using C++:
(a) classes, pointers and dynamic memory (new, delete)
(b) functions with pass by reference
(c) linear linked lists (traversal, creation, removal)
(d) understand recursion at a conceptual level

During the first week we will have a knowledge check quiz on pointers, dynamic memory and
linear linked lists in C++. This is an in-person quiz (~15 minutes) If you receive a score below
70%, you are required to attend a Code Party or attend office hours (or set up an appointment
with your teacher) to build the necessary foundational knowledge to be successful in CS163.
Please contact [email protected] ahead of time if you require DRC accommodations.

Fant – Summer 2024 CS163 in-person Syllabus: Expectations Page 4 of 9


Labs
Purchase Lab Manuals from the PSU Bookstore during the first week of class – they will be
needed for your first lab. You will need the CS163 Lab Manual Summer 2024 and the CS162-
163 Linux & Vim manual for 2023-2024.

You may already have the linux & vim manual from CS162. In this course we will be working
on the level 2 exercises.
• When you registered for this class, you also registered for a lab.
• Labs begin the first week of the term!
• If you don’t complete a lab and want to continue working on the lab material – please check
in with your lab facilitator to see what options are available!
• Starting Week #3, there are prelabs in the printed lab manual which must be completed to
attend lab!

Before attending lab, a weekly prelab must be completed; these can be found in your lab
manual. These are required in order to attend lab. If you can’t complete the prelab, make
sure to seek additional help right away!

Purpose of Labs
The weekly lab sessions reinforce the content learned in the lecture materials. It is where
concepts are practiced in small groups prior to applying them to your larger individual
programming assignments. Labs are designed to bridge the gap between the lecture and
programming assignments and to provide a vehicle for you to ask questions that aren’t
possible when watching videos.

For in-person labs, the lab manuals are graded. They are graded in terms of completeness,
readability, and relevance. Make sure we can read what you are writing and to answer the
questions in the lab manual as you progress through the lab.

Examinations
We have two midterms and one final exam. These graded examinations will take place in-person in
our classroom, during class time, unless COVID-19 restrictions require us to perform these in an
alternate manner. If you are sick or not feeling well, make sure to contact your instructor to schedule
a makeup. Examinations are to be performed individually and are not group activities. There are
quizzes prior to the exams to help you make sure you are prepared!

If you have a DRC accommodation for testing, please contact [email protected] 24 hours in advance as
a reminder. If you need services that cannot be provided by your Instructor, please contact
[email protected] to schedule your midterms and final exam immediately! Do not wait as they
may not have space available. If space is not available with testing services, reach out to your
instructor for assistance in scheduling your exams. At a minimum, you should plan ahead at least 7
business days to schedule an exam with either testing services or with Karla Fant.
Fant – Summer 2024 CS163 in-person Syllabus: Expectations Page 5 of 9
Assignments use 2-week Cycles
After the first week, this course runs in 2-week cycles with deliverables that repeat every two
weeks. Each week you will have reading assignments, lectures to attend, weekly prelabs to
perform prior to attending lab and linux & vim exercises. The prelabs can be found in the
CS162 lab manual that is purchased from the PSU Bookstore. A checklist is provided so you
can make sure to stay on top of what is due each week!

There are five programming assignments that are to be implemented individually and turned
in during the term. Every two weeks a new assignment cycle begins focusing on the current
topics that we are covering. The first cycle begins the second week of the term. All due times
are by 7pm. Late work is only accepted with 24 hour prior authorization.

Each programming assignment consists of progress submissions which show your


incremental development of a solution. These are not optional and are required as part of
your grade in this course. They may not be received late – as it no longer shows that
incremental process. Turn in your progress even if it isn’t as far as you had hoped!

It is important to realize with a programming class that it is your responsibility to implement


your own assignments and to practice on a regular basis. Learning to programming takes
time and can’t be done overnight. An assignment that is given two weeks means that you will
need to work on it incrementally over that two-week period. Incremental implementation is
the key!

Be cautious about receiving too much help, plagiarizing code from the web, copying a friends
work, or having someone else program for you. All of these violate the integrity expected and
it won’t help you become proficient. To truly become proficient at programming requires that
you, yourself, program from scratch. The more you solve problems and apply syntax, the
more confident and fluent you will become with the material from this course.

Week #1 of a Cycle:
Each assignment’s cycle begins with critical thinking. By collaborating with your Virtual Group,
you can consider issues of user friendliness, how to separate the application program from
the class that manages the assigned data structure, and prepares for programming. When
developing software, you should always consider these and other questions. Then, we can
begin drafting our software, using incremental implementation techniques. This is what a
Computer Scientist does. This can be an incredible experience if everyone participates!

The first week of a cycle is about getting started. You will be establishing the framework for
the programming assignment – setting up the draft header file and beginning to
incrementally build the ADT member function.

Fant – Summer 2024 CS163 in-person Syllabus: Expectations Page 6 of 9


• By Monday: Discuss your prototype and design plan with your virtual group
• By Tuesday: Upload your draft .h file
• By Thursday: Respond to your peers' plans in your virtual group
• By Friday: Upload your revised .h file and your draft .cpp file

Week #2 of a Cycle:
In the second week of a cycle, you will be submitting a more formal progress submission of
your code and then ultimately the completed code along with an efficiency writeup
(minimum 600 words). Our goal through this process is to gain success each step of the way.

• By Monday: Discuss how to test your software with your virtual group
• By Tuesday: Upload your progress submission
• By Thursday: Respond to your peers in your virtual group
• By Friday: Upload completed programming assignment as a tar or zip file. An efficiency
writeup is submitted with this completed assignment

Proficiency Demonstrations
Becoming proficient with the material for this term means that you will need hands on time
implementing the constructs yourself in a complete program. We find that implementing just
a portion of a program or using someone else’s code does not build that proficiency. It is like
playing the violin. If you just look at someone else playing, your playing doesn’t improve! If
you just practice once a week right before your lesson, you won’t improve. It will take daily
practice to achieve results. This is the same for learning how to apply computer science
concepts. It will take daily practice!

To measure your progress, we will be holding two proficiency demonstrations during the
term. The first is at the middle of the term (typically week #5) and the second during finals
week. A proficiency demo is a live programming demonstration performed, remotely, by
appointment. Calendar sign-ups will be available at the beginning of the term. By signing up
early in the term, you can better control your schedule. Please communicate any specific
requirements with your Instructor.

Students are required to have a webcam (USB or internal), a microphone, and internet access
for these events. It is recommended to plan in advance to ensure you have a space that is
private or semi-private and that the recordings that will be made do not invade any third-
party privacy rights. Special arrangements may be made by contacting [email protected].

Fant – Summer 2024 CS163 in-person Syllabus: Expectations Page 7 of 9


Building a Virtual Community
Community is a huge part of building a quality class. We need each other and we will achieve
this through the development of our virtual groups. We encourage you to use Zoom or Google
Meet to have study sessions with other students. When your webcams are on, please be
aware that you are in a “class” environment and to follow the student code of conduct at all
times.

When using text-based communication, such as Zoom’s chat feature, it is important to realize
that we miss body language cues and immediate feedback; therefore, it is very important to
be aware of online etiquette.

When writing messages in the chat, keep in mind these points:


• Be respectful. It is essential to keep in mind the feelings and opinions of others, even if
they differ from your own.
• Discuss material related to the class. Remember chat sessions are not the same as
personal social media.
• Be aware of strong language, all caps, and exclamation points.
• Be clear with humor and sarcasm. Is what you are saying clear?

Academic Integrity
Academic integrity is a vital part of the educational experience at PSU. Please see the PSU
Student Code of Conduct for the university’s policy on academic dishonesty. A confirmed
violation of that Code in this course may result in failure of the course. Assignments submitted
must be of your own individual creation and may not include someone else’s work. This
means the use of ChatGPT or other such tools is strictly prohibited. Examinations are to be
performed individually and are not group activities.

All code and written material must be your own work and may not be copied from the web
or other students. Be careful to not plagiarize. Doing so will result in a zero on an assignment
and a failure in the class. Receiving “to much help” is not a valid reason to receive a passing
score. Refer to the Syllabus: Guidelines and Grades for the details.

Use of Technology: You are Granting Your Permission to be Recorded


For this course, we will use technology for virtual meetings, proficiency demos and recorded
course content in this course. Our use of such technology is governed by FERPA, the
Acceptable Use Policy and PSU’s Student Code of Conduct. A record of all meetings and
recordings is kept and stored by PSU, in accordance with the Acceptable Use Policy and
FERPA. Your instructor will not share recordings of your class activities outside of course
participants, which include your fellow students, TAs/GAs/Mentors, and any guest faculty or
community-based learning partners that we may engage with. You may not share recordings
outside of this course. Doing so may result in disciplinary action.
Fant – Summer 2024 CS163 in-person Syllabus: Expectations Page 8 of 9
Seeking Assistance
We have numerous ways for you to seek assistance when programming. It is important to
understand that we do not expect you to implement an entire programming assignment
without help. When you hit a wall and can’t understand the errors, it is important to look for
assistance from those that can help. It can save hours of time.

On the other hand, it is important to not “get too much help”. By this I mean if you sit and
code with someone coaching you line by line, it is not helpful. If the code in the end is not
your own or not understandable to you, then you have received too much help. Never let
someone just write the code for you. It will decrease your learning and impact your long term
success. Instead, ask for help by having them teach you what you need to know to write the
code yourself. That is how to get help! Here are some ways to get help:
• Work with the CS tutors ([email protected])
• Attend our Code Parties in person
• Use the discord channel to communicate with peers who are taking this class
• Visit in-person or remotely with your Instructor

Be careful when seeking help from others that do not work for PSU. Use caution otherwise.
Do not to share your code with others! Never accept code that was written by someone else!

This means, NEVER accept code from someone else, even if it is a tutor!
• Never post your code in the Canvas Discussions, discord, the web, or social networking sites.
• Never give your assignments to other PSU students, regardless of their situation.
• Never email your code to anyone except your instructor.
• I recommend NEVER having someone write code for you when asking for help. Ask them to teach
you what you need to know rather than do it for you!!!

Let’s make this a Great Term!

Fant – Summer 2024 CS163 in-person Syllabus: Expectations Page 9 of 9

You might also like