SYLLABUS
CS
163: Data Structures
Winter
2018
Prerequisite: |
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
E-mail: karlaf@pdx.edu
Message Phone: 503-725-5394
Office Location: FAB 120-19
Office hours:
Tuesday and Thursday 2:30-3:20
in FAB 120-19
Text: Data
Abstraction and Problem Solving with C++, Carrano (6th or 7th
edition)
D2L: |
Lecture
notes and course power point slides are on D2L |
||||||
Lab Materials: PSU ID: Handouts: |
Required. Purchase from the PSU Book Store The
Linux and Vim Manual published for 2017-2018
academic year and The CS163
Lab Manual published for Winter 2018 (earlier editions are not
acceptable) Bring your PSU ID card to all lectures and labs; it
will be used for attendance purposes. All
handouts, due dates, and assignments can be retrieved from D2L |
||||||
Disabilities: |
If
you have a disability and are in need of academic accommodations, |
||||||
|
please
notify the instructor immediately to arrange needed support. This
includes any accommodations required for taking examinations. All DRC
quizzes and exams must be taken at the same time as the in-class quizzes and
exams except when otherwise pre-authorized. Such pre-authorization should
take place at least 24 hours prior to the in-class quiz or exam. |
||||||
System &
Compiler: |
|
||||||
|
Expected: Use
of gdb with each C++ assignment |
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) and, understand recursion at a
conceptual level
Students should be proficient
programming linear linked lists (traversal, insertion, and removal algorithms).
Course Description
and Goals:
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.
To acquaint students
with 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. Students are encouraged to examine algorithms and to make
judgments about the practical and social application of these algorithm
concepts to large scale programming projects; the course stresses the
importance of quantitative methods.
Overview
of Grading Policies:
Demonstrate Proficiency in C++ - Midterm Demo - Final Demo |
Pass/No Pass |
At PSU or by Proctor (must pass both demos
with E, P, or PW) |
Lab Participation - Prelabs - Lab Code Submitted |
Pass/No Pass |
Pre-labs and Lab code (Attendance to all but
1 lab required) |
-
Design
and Test Plan -
Programming
Projects |
||
Quizzes
and Midterm Exam -
2
Quizzes -
Midterm
Exam |
5% 25% |
At PSU or by Proctor (Midterm score must be
65% or greater to pass) |
Comprehensive Final Exam |
40% |
At PSU or by Proctor Final exam score must
be 65% or greater to pass the class |
Important Class
Expectations:
1.
Attending
lectures is required to pass the class.
b.
Arrive
within the first 10 minutes to count as attending.
c.
It
is expected that students will stay for the entire class period, until excused.
b.
Arrive
within the first 10 minutes to count as attending.
Proficiency Demonstrations:
•
E
(exceeds, passing),
•
P
(proficient, passing),
•
PW
(pass with warning, passing)
•
IP
(in-progress, non-passing),
•
U
(unsatisfactory, non-passing)
•
Computing Environment:
The CS linux systems using the g++ compiler must be used for all assignments and lab. Students
must use the GNU GCC C++ compiler (g++) in the default –ansi mode. This mode
meets the C++ standard 98 guidelines
(which can be obtained through these flags: –std=c++98, -std=gnu++98, or
-ansi).
Students
should compile with the –Wall flag to enable warnings about constructions that
should be avoided. Students may compile with the –g flag to support the use of
gdb. Use of any other flags is not allowed.
Students must use vi, vim, or emacs
when programming in C++. No IDEs may be used for C++ coding; Dev Cpp, Visual
C++, xcode are not acceptable
Each student needs a CS
account (which can be received from FAB 88 or contacting the tutors (tutors@cs.pdx.edu)
·
Lab
work is done using quizor2.cs.pdx.edu.
o
Login
with your CS account login name and password.
o
The
lab system is only available for the term in which you take the class and all
materials will be deleted at the end of the term.
·
Individual
graded programming assignments are to be done using linux.cs.pdx.edu
Lab Sessions:
The lab sessions are where we reinforce the materials learned in lecture.
It is where concepts will be practiced prior to applying them to the larger individual
programming assignments. It is expected
that all students will attend the lab section enrolled in, each week.
1. Every student in CS163 is enrolled
in both a lecture and a lab session.
2. Bring
both the Linux and Vim manual (for 2017-2018) and the CS163 Lab Manual for Winter
2018. They may be purchased from the PSU Book
Store.
a. Read the background for each lab, prior to attending the corresponding
lab!
b. Expect
the lab assistants
to initial and date the completion of each lab and make corrections to prelabs
within the lab manual.
c. Plan
to fill out all of
the questions and progress through the lab manual as it is designed.
d. Make
sure to perform
and practice all of the vim exercises as part of the lab.
Individual
Programming Assignments:
1. Individual
Coding:
4. Every
assignment (programs and write-ups) must be submitted to pass CS163.
a. 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.
b. Always make a back-up of your work. Deleting your work and asking for an
extension is not acceptable. A back-up should always be made in a
different folder or system.
c. Never let anyone write the code for
you! Never just copy code from the internet!
5. Follow the STYLE SHEET!
a. Focus on program style and comments. This is 20% of the program’s grade.
a. Each file must have your name and
header comments describing the purpose of the code within the file.
b. The file header comments should be
a paragraph, at a minimum
c. Each function must have header
comments describing the purpose of the function and arguments. No exceptions!
d. Make sure that each function that
has a non-void return type returns a value through each possible path
e. Always use the returned value when
calling a function
f. Avoid single character variable
names, except for loop control variables and array indices
g. Avoid while(1) or the use of break
or from within a loop
h. Very few functions in CS163 should
have void return types.
6. Each program will have multiple files (.h and .cpp files for
C++) and have their name and header comments in each file.
·
Group
related functions and classes within a single file.
·
Never
place function implementations in a .h file and never #include a .cpp file!
7.
Submit
assignments using tar (or zip) electronically to
the D2L Dropbox (make sure to select the “submit” button after uploading
the files, otherwise your submission will be lost).
a. Before using tar or zip, make sure
to backup your files.
b.
Check
the archive, to make sure that they are built correct and that
you have not destroyed the contents of the file(s).
c.
Check D2L
afterwards to make sure your files are correct.
Grading Policies:
1. Two quizzes combined are 5% of your
grade
2. A Midterm Exam is 25% of your grade
3. The Final Exam is 40% of your grade
• It is against
department policy to give exams early (no exceptions!). Exams will all be
closed book, closed notes.
4.
All DRC exams must be arranged to
take place at the same time as the in-class
exams, except when otherwise authorized by your teacher. Such authorization
must be requested prior to 24 hours in advance of the in-class exam taking
place.
· If
a DRC exam is being taken, please email your teacher with a reminder that an
exam is needed at the testing center.
Do not expect an exam to automatically be sent without such email.
CHEATING:
Each
student is expected to submit only original work. Any person who violates these requirements will receive a grade of zero
for an assignment which based on the above grade requirements will result in an
F for the course. A letter will be sent to the head of the CS
Department.
Students will receive a zero on an
assignment if any of these activities take place:
1. Student provides proficiency demo
questions to other students
2. Student provides proficiency demo
solutions to other students
3. Student solicits (asks for)
proficiency demo questions and/or solutions from other students
4. Student copies lab code from
another student
5. Student copies lab manual solutions
from another student
6. Student accepts an assignment
and/or program from another student
7. Student supplies an assignment
and/or program to another student
8. Student posts the assignment and/or
program on the web, social networking site, or D2L discussions
9. Student shares their password with
another student at PSU giving that student access to their assignments and/or
programs
10. Students work together on
assignments and turn in the same and/or similar assignments.
11. Student turns in work that was
obtained from other sources such as the web, friends, tutors or TA’s.
12. Student leaves work available for
others to copy from
13. Student attempts to purchase
programs from others (in person or electronically).
Performing
any of these actions will result in a ZERO grade on that assignment.
Seeking
Assistance
Be careful when seeking
help from others. We recommend seeking help from (a) instructor, (b) TA’s and
lab assistants, and (c) Tutors. Use caution otherwise. Do not to share your
code with others! Never accept code that was not written by someone else! This means, NEVER accept code from someone
else, even if it is a tutor!
·
Never
post your code in the D2L discussions, the web, or social networking sites.
·
Never
give your assignments to any other PSU students, regardless of their
situation.
·
Never
email your code to anyone except your instructor.
·
I
recommend NEVER having someone else use your keyboard when asking for help. Ask
them to teach you what you need to know rather than do it for you!!!
The work
you submit must be your own. It is not acceptable to hand in assignments in
which substantial amounts of the material was done by someone else. You must be
especially careful that in the process of discussing problems with other
students that they do not inadvertently end up using your work. In such an
event, all students involved will receive a zero on that assignment.