SYLLABUS
CS
202 Programming Systems
Winter
2018
Prerequisite: |
CS163 Data
structures Students
are expected to be able to fluently write complete programs in C++ at the
linux command line (without an IDE) using classes, pointers, dynamic memory,
developing data structures such as Linear Linked Lists, Circular Linked
Lists, Doubly Linked Lists, Arrays of Linked Lists, Linked Lists of Arrays,
Trees, and Graphs. |
Instructor: Karla Steinbrugge Fant,
E-mail: karlaf@pdx.edu
Message Phone: 503-725-5394
Office: Fab 120-19
Office
hours: Tuesday
and Thursday 2:30-3:20 in FAB 120-19
Text: C++ Primer Plus, Stephen Prata
Thinking in Java, Bruce Eckel
Lab Manuals: |
Required. Purchase from the PSU Book Store The
Linux and Vim Manual published for 2017-2018
academic year and The CS202
Lab Manual published for Winter 2018 (earlier editions are not acceptable) |
Lecture Notes: PSU ID: |
Lecture
notes and power point slides are on D2L Bring
your PSU ID card to all lectures and labs; it will be used for attendance
purposes. |
Handouts: |
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 as close to the same time as the in-class
quizzes and exams as possible, except when otherwise pre-authorized. Such
pre-authorization should take place at least 24 hours prior to the in-class
quiz or exam. Quizzes and exams may
not be taken prior to the in-class students. |
System &
Compiler: |
|
|||||||
|
Expected: Use
of gdb with each C++ assignment |
|
Prior Knowledge
expected:
CS202 is designed for students who
have already have programmed in C++ and
are proficient
applying recursion to data structure algorithms. Students should
already be able to program each of the following using C++ at the linux command
line, without an IDE:
(a) Classes, constructors,
destructors
(b) Pointers and dynamic memory
(new, delete)
(c) Pointer arithmetic
(d) Dynamically allocated arrays
(e) Linear, circular, and doubly
linked lists
(f) Arrays of linked lists
(g) Binary search trees
(h) Be prepared to apply algorithms
to implement balanced trees and graphs
Students should be able to
demonstrate proficiency at applying recursive solutions to insert, traverse or
remove from pointer based linked data structures of: linear linked lists,
circular linked lists, doubly linked lists, arrays of linked lists, and binary
search trees.
Course
Description and Goals:
Students will become familiar with
the language and operating system environment used in most upper division
courses in the Computer Science major curriculum. Use of the file system,
operating system calls, and shell-level programming; low-level debugging of
high-level programs. Programming exercises will include applications of data
structures and memory management techniques.
The primary goal in CS202 is to prepare students for
programming in the upper division 3xx and 4xx level classes. To achieve this
goal, CS202 focuses on three areas: object oriented programming, advanced C++,
and an overview of how Java relates to what we have learned in C++.
The majority of the term will be spent introducing
students to object-oriented programming while learning advanced C++ syntax.
Students will understand the difference between procedural abstraction and
object oriented solutions. Students will spend the term designing and
programming with inheritance hierarchies, with the goal of solving problems
efficiently: producing high quality, robust, maintainable as well as efficient
object oriented solutions. This will provide students with the chance to
experience object oriented design and programming. Programming assignments will
focus on advanced data structures while at the same time accomplishing these
other goals. Students will learn about C++'s function overloading, operator
overloading, copy constructors, and be introduced to inheritance.
Java skills developed include writing two programs
using advanced data structures in Java with strict requirements to follow OOP
guidelines – all data members private, no friendly access, and complete
implementation of functions required to handle issues of deep versus shallow
copies and compares. Students learn the relationship between the two languages
and the similarity of Java’s references to pointers.
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.
Overview
of Grading Policies:
Demonstrate
Proficiency in C++ -
Midterm
Demo -
Final
Demo |
Pass/No
Pass |
At
PSU or by Proctor (must pass both demos) |
Lab
Participation -
Prelabs -
Lab
Code Submitted |
Pass/No Pass |
Pre-labs
and Lab code (Attendance to all but
1 lab required) |
Graded
Lab Manuals -
Student
will submit a rubric with the manual |
5% |
Lab
manuals are graded twice (Manuals are graded for completeness, relevance, and readability) |
-
Term
Paper -
3
Written Designs/UML -
5
Programming Projects |
||
Quizzes
and Midterm Exam -
2
Quizzes -
Midterm
Exam |
5% 25% |
At
PSU or by Proctor (The midterm score must
be 65% or greater to pass CS202) |
Comprehensive
Final Exam |
35% |
At
PSU or by Proctor *** Must
receive a Passing score of 65% to
pass the class *** |
Proficiency Demonstrations:
•
E
(exceeds, passing),
•
P
(proficient, passing),
•
PW
(pass with warning, passing)
•
IP (in-progress, non-passing),
•
U
(unsatisfactory, non-passing)
• Midterm proficiency demos may only
be retaken once. Retakes need to be taken with a 1-2 week period.
• There are no re-tests available for
the final proficiency demo.
• Final
proficiency demonstrations are only scored for students receiving a passing
grade in CS202.
• If a student receives a non-passing
score on the proficiency demos, they may meet with the instructor to discuss
their performance.
• Every student in CS202 must show
proficiency in programming in C++ and data structures, using linux with either
vi, vim, or emacs, and gdb. Students in CS202 are expected to be fluent with vim (or emacs). This is Pass/No Pass.
Lab Sessions:
The labs 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 perform the lab work each week.
Individual
Programming Assignments:
• Every
assignment (programs and write-ups) must be submitted and receive a passing
grade to pass CS202.
• 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.
• Every
assignment must be backed-up before
creating an archive. A back-up should always be made in a different
folder or system. If your code become corrupt due to the archive process, there
will be a 5% penalty.
• Due dates and late dates are specified
in the Course Outline.
·
Assignments (Programs and Writeups) may not be turned in later than the late due date. There are no exceptions.
·
Late programs and write-ups will have a
5% automatic deduction.
·
Due
“times” are always by 6pm on the due date or late date. Plan
ahead!
• Design Write-ups and UML
diagrams:
1. There are 3 written design OO write-ups
that are turned in prior to the
related program, with accompanying UML diagram. The diagrams may be hand-drawn
(and scanned) or electronically generated and submitted as a pdf.
2. All
written design write-ups must be completed to pass CS202.
3. They
must consist of a minimum of 600 words
·
The
write-up should cover the major design considerations: what classes you are
using, how they are related to other classes (using, containing, hierarchical);
it should discuss how the methods provided minimize the use of getters. It
should be clear in the design what functions will be needed in each class and
how they will be used by the other classes in your design.
·
All
designs 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.
·
Refer
to the background information sheet on D2L for details.
•
Individual Coding:
1. There are 5 programming
assignments.
2. They comprise 20% of your grade in
the course.
3. All programs must be created
individually and written in C++ on CS linux using a linux editor.
4. The programming assignments provide
experience building correct implementations of object oriented situations.
5. All
5 programs must be submitted and received a passing score to pass CS202
6.
Each
programming assignment must include the following write-ups (turned in at the
same time as the program):
· A minimum 400 word written document
analyzing your design and discussing how effective the classes that you created
were. Discuss the validity of your approach and analyze it in terms of object
oriented programming. Think in terms of
analyzing your solution! This means discussing the efficiency of the
approach as well as the efficiency of the resulting code.
· A minimum 200 word written
discussion of how debuggers (gdb, xxgdb, ddd, etc.) assisted in the
development. This write up must describe experiences with the debugger, how it
assisted code development, or how it could be used to enhance the programming
experience.
7. Focus on program style and comments:
·
Each
file must have your name and header comments describing the purpose of the code
within the file.
·
The
file header comments should be a paragraph,
at a minimum
·
Each
function must have header comments describing the purpose of the function and
arguments. No exceptions!
·
Make
sure that each function that has a non-void return type returns a value through
each possible path
·
Always
use the returned value when calling a function
·
Avoid
single character variable names, except for loop control variables and array
indices
·
Avoid
while(1) or the use of break from within a loop
·
Very
few functions in CS202 should have void return types.
8. 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!
·
Limit
your submissions to FIVE
source code files in total.
9.
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).
· Before using tar or zip, make
sure to backup your files.
· Check the archive, to make
sure that they are built correct and that you have not destroyed the contents
of the file(s).
· Check D2L
afterwards to make sure your files are correct.
10. Due “times” are always by 6pm on
the due date or late date.
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
Term Paper:
•
Each student will be required to submit a typed term paper. The paper must explore how well the programs written this
term have met our objectives of being object oriented! Discuss how the designs met
the criteria set out for OOP, and how they could have been improved.
•
The paper must be a minimum length of 4 pages and a maximum of 7 pages (double
spaced, 12 point font) of text. This does not include the cover sheet,
table of contents or reference pages.
•
Attach any tables or sample code as exhibits; these may not be part of the 4-7
page count.
•
The term paper should be done using Word or plain text. It may be
submitted as a pdf if other word processors are used.
Grading Policies:
• It is against
department policy to give exams early (no exceptions!). Exams will all be
closed book, closed notes.
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.
·
Never
have another person use your keyboard to type in code for you. Have them teach
you what is needed rather than take over!!!
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.
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
and reported to the Dean of Students.
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.
Remember
to Program Every day!!