SYLLABUS
CS 202
Programming Systems
Winter
2006
Prerequisite: CS163
Instructor: Karla
Steinbrugge Fant,
E-mail: karlaf@cs.pdx.edu,
Office: Fab
120-19
Message Phone: 503-725-5394
Karla's Office hours: Tuesday/Thursday 9:00-9:50am
Other
times may be arranged via appointment
Text: C++
Primer Plus, Stephen Prata
Thinking in Java, Bruce Eckel
Clean
Copy: C++ Lecture notes and Lecture slides
System Requirements: UNIX using g++ (either from odin or the cs
machines)
UNIX Requirements: All programs are to be implemented and
tested on odin or the cs unix systems. Programs must be submitted in both
hardcopy and email form. Diskettes will not be accepted.
Questions?
If you have questions, the best
approach is to either make use of the office hours listed on this syllabus, or
send electronic mail. Please be advised that questions should be clearly
formulated and it should be clear from the question that you have attempted to
solve the problem on your own. Do not, unless explicitly asked by the
Instructor, simply email your program to the teacher and expect a response!
Instead, talk about what problems you are encountering and what you have done
to make progress. Remember, my email address is karlaf@cs.pdx.edu.
Since
I received 100s of email messages, make sure to put 202 Question in the
subject heading.
Course Description:
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.
Goals:
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 Javas references to pointers.
Then, the rest of the term compares Java to C++, where we will work through example projects in both languages.
Programs/Individual Projects:
Course
requirements consist of five programming assignments in C++ and Java.
20% of each
program's grade is based on the program style, comments, and documentation
provided with the program.
10% of each program's
grade is based on a written discussion of how the unix debuggers (gdb,
xxgdb, ddd, etc.) assisted them in their development. Each assignment must
have an accompanying one full page (8
1/2 x 11) debugger write up. 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.
10% of each programs grade is based on a written discussion of the major
design consideration encountered when solving the specified problem. In the
design considerations, students are required to discuss what the main design
considerations are, why they are the main design considerations, how they are
solved, and why the approach taken is valid. Think in terms of analyzing your solution! This means discussing
the efficiency of the approach as well as the efficiency of the resulting code.
In addition,
each student will be required to submit a typed term paper. The paper must explore how well your C++ programs have met
our objectives to become object oriented programmers! Discuss how the designs
meet the criteria set out for OOP, and how they can be improved. The paper
must be a minimum length of 4 pages and a maximum of 7 pages (double spaced, 12
point font). Tables and sample code MUST be attached as exhibits and should not
be part of the 4-7 page count.
Each student is expected to submit only original work. Any person who violates this will receive a
grade of F for the course and a letter will be sent to the head of the CS
Department. Note that the Instructor
may ask any student to explain his/her assignment verbally.
Your programs will
not be graded if I dont receive both hardcopy and emailed copy of
your programs!
Programs consisting
of more than one file must be emailed using the following syntax:
type: /bin/sh
at the prompt type: shar file1.h file1.cpp file2.cpp >prog1
next, type control-d
To email this archive, type the following.
The double quotes are essential!
mailx -s My Name -
202 Prog #1 Submission karlaf@cs.pdx.edu <prog1
Group Projects:
Teams
will be used in this class to become familiar and master the object oriented
programming techniques. Teams, formed the second week of the term, are expected
to meet together outside of class to critically analyze their designs.
Teams will
present their best object-oriented solution to the class in 20 minute
presentations, where each member of the team must verbally participate.
Presentations will be graded on the depth of material
investigated/presented. Handouts are encouraged.
Late Assignments:
Each assignment will
be due during the first 10 minutes of class on the specified due date. Late assignments will be accepted the
following class period for 10 points late. Programs will not be accepted
after that unless previously arranged with the Instructor.
Partial credit will
be given for incomplete work. However, 25 points will be automatically deducted
for programs that cannot successfully compile and link.
Grades:
Grades are based on the following percentages:
Individual Paper on OOP Program
Design 5%
Group Project 10%
Midterm 20%
Comprehensive Final 30%
Minimum Grade Requirements: For C or better in this class, you must have a
grade of 65% or better on the programming assignments and a grade of 65% or better on the examinations. In additional, grades must be received
(above 40%) on each individual assignment, otherwise a failure will result
this means you cant skip turning in a program or paper.
Grading will be done near 90% (A), 80% (B), and 65% (C). However, exact break
points for grades will depend upon the overall class results. For P/NP grade
option, a "pass" grade requires an overall class grade of at least a
C.
Policies:
See instructor in advance if you have a conflict with the
midterm (or quizzes); the final is given only at the scheduled time. It is against department policy to give
final exams early (no exceptions!). Exams will all be in-class (no take home
exams allowed) and closed book. All makeup exams will be proctored through the
testing services center and cost students a fee ($10).
ATTENDANCE is not mandatory. However,
you are responsible for anything that transpires during class. Therefore, make
sure to get notes from someone (other than the Instructor) when you are unable
to attend. However, BORDERLINE GRADE
DECISIONS may be influenced by regular class attendance and participation
in class discussions.
Remember,
assignments are due during the first 10 minutes of class -- not at the end
of class. Failure to turn assignments in on time will result in a zero for
that assignment.
CHEATING: Each student is expected to
submit only original work; programs must compile and must produce output
consistent with test input. Any person
who violates these requirements will receive a grade of F for the course and a
letter will be sent to the head of the CS Department. Note that the instructor may ask any student to explain his/her
program verbally.
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. You may not use code from textbooks or the web in your assignments for this class.
Incompletes will be given only when a minimal amount of work remains to be
completed, only for a valid reason and only for a fixed time period. Students
must have a C average or better. Do not expect an Incomplete in this class!
Withdrawal requests
will be signed without question.
Students who attend class, turn in any
homework, or take any of the examinations will not be given an X in the
class for any reason.
BORDERLINE GRADE
DECISIONS may be influenced by regular class attendance and participation in
class. This really can make a difference!
Try to Exceed my Expectations!