SYLLABUS
CS 202
Programming Systems
Fall
2013
Prerequisite: |
CS163 Data structures This
means you should have experience writing complete programs in C++ using
classes, pointers, dynamic memory and have experience writing programs
developing data structures such as Linear Linked Lists, Arrays of Linked
Lists, Linked Lists of Arrays, Trees, and Graphs. |
Instructor: Karla Steinbrugge Fant,
E-mail: karlaf@cs.pdx.edu,
Message Phone: 503-725-5394
Office: Fab 120-19
Office hours: Mondays
12-2pm in FAB 120-19
Text: C++ Primer Plus, Stephen Prata
Thinking
in Java, Bruce Eckel
Lecture Notes: |
Lecture notes and
course power point slides are on D2L with a backup available on the class web
site: http://www.cs.pdx.edu/~karlaf |
|
Handouts: |
All handouts, due
dates, required videos and programming 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 |
|
Hardware: |
CS
UNIX systems (Solaris). www.cs.pdx.edu |
Compiler: |
C++
language implemented by the g++
compiler. All
work this term will be done on unix or linux! Allowed
editors: vi, vim, or emacs Do
not use pico, or nano Do
not use Dev Cpp, Visual Studio or xcode No
IDEs are allowed Use
of gdb with each assignment is expected. |
Two Sections
of CS202
This term there are two sections of CS202.
Section 001 is an “in-class” section and Section 002 is an “online” section. These
classes are not the same.
Section 001: In-class students will experience
traditional lectures. Attendance to lectures and labs are required. Lectures
may be augmented with required course videos to allow for in-class
demonstrations. Videos will be assigned to
allow for even lab attendance.
Section 002: Online students will have
online materials available through D2L which will include lecture videos,
slides, quizzes, and discussions. Online students will be required to take the
midterm and final exam at PSU and demonstrate programming proficiency during
that time. Remote students will need to arrange for examination and proficiency
demonstrations early in the term through proctoring centers.
To account
for the fact that each of us may be watching the class at different times, all
announcements will be emailed to your pdx.edu email account (please forward
this email and read it frequently). The lecture video links and handwritten
notes are only available through D2L.
Which Lab?
There are
both in-class and self-paced labs available. These labs are where we will
reinforce the materials learned in lecture. It is where concepts will be
practiced prior to applying them to your larger programming assignments.
The in-class
labs are those that have times and classrooms assigned. Students will use their
own computers (laptop, netbook, table, etc.) or check-out a PSU laptop
computer. All work will be done on unix. Attendance is required.
The self-paced lab is the “CS202L-TBA lab section” which is supported
through D2L All materials are available on D2L and code files used can be found
in D2L’s “Locker” (there will be a link on the home page of the CS202 D2L
shell). It is expected as a self-paced lab student that you are working
individually with minimal assistance. To gain assistance, contact your
instructor (karlaf@cs.pdx.edu), the tutors (tutors@cs.pdx.edu) or plan to attend the makeup labs.
Course Materials:
All course materials (except exams and textbooks) are available electronically and programs can be submitted entirely electronically, so there is no requirement to come on campus to turn in your work! However, the on-campus labs have tutors that can help with the assignments – so you might consider scheduling some time to work at PSU. There will be online activities and discussions to encourage progress; these are a vital part of your grade. The midterm and final exam must be taken in the classroom (daytime and evening exam times will be made available) or at proctoring centers upon teacher approval. Students will be demonstrating proficiency in programming in Unix, C++ and data structures.
Questions?
If you have questions, the best
approach is to post messages on Desire 2
Learn or send email directly to karlaf@cs.pdx.edu. Sending
D2L Mail will not provide for a quick response as it is an internal-only mail
system – it is not “email”.
When
sending email, make sure to include your name
and the class you are enrolled
in…otherwise we may not be able to answer your questions. Office hours listed on this syllabus are also
highly recommended.
Electronic mail works the best if you
have a question that you encounter as you work on the programming assignments.
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 post
code online or on Desire 2 Learn. 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.
Be careful when seeking help from
others. You should seek help from (a) instructor, (b) TA’s, and (c) Tutors. We
are here to work with you – either in person or remotely. But, beyond this be
careful. Do not to share your code with others! Never
post your code in the D2L discussions, the Web, social networking sites, or the
web. Never give your assignments to
any other PSU students, regardless of their situation. Never email your code to anyone except
your instructor. Performing any of these actions will result in a ZERO grade on
that assignment.
If you have administrative questions
and need to talk directly with the Instructor, send mail to: karlaf@cs.pdx.edu
Since
I received 100’s 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 Java’s references to pointers.
Then, the rest of the term compares Java to C++, where we will work through example projects in both languages.
Computing Environment:
The CS unix or linux systems using the g++ compiler must be used for all assignments. Login remotely using ssh, putty, or terminal
programs to www.cs.pdx.edu. Dev Cpp, or Visual C++ are not acceptable. Do
not use the excuse but it runs at home on
my PC.
Approach:
There
are three major learning outcomes expected for CS202. You must receive a passing grade in each of
these three learning outcomes:
1.
Proficiency in Programming (in C++)
a.
5 graded
programming assignments
b.
Midterm and
Final Syntax Proficiency demonstrations (Pass/No Pass)
2.
Problem Solving and Critical Thinking (via participation)
a.
Pre-Lab
exercises (Pass/No Pass)
b.
Participation
(Pass/No Pass)
i.
Section 001: Attendance
and Lab Participation
ii.
Section
002: Online Lab Participation (upload the
prelabs each week and spend no more than 1 hour and 50 minutes on the lab code)
3.
Proficiency in the Course Concepts
a.
Examinations
(Midterm, Final)
b.
Term Paper
c.
Section 002:
Watch the course videos each week.
Policies
for Assignments:
• Course requirements consist of five programming
assignments in C++ and Java. The programming
assignments provide experience building correct implementations of object
oriented situations.
• 20% of each program's grade is based on the program style comments, and documentation provided with the program.
• Each
programming assignment must include the following writeups:
1.
a minimum 600
word written discussion of the major design consideration encountered when
solving the specified problem. In the design considerations, 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.
Refer to the style sheet for more
information about what to discuss!
2.
a minimum
400 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.
• Partial credit will be given for
incomplete work. However, 25 points will be deducted for programs that cannot
successfully compile and link.
• ***NEW CHANGE *** LATE assignments will be
accepted: one week late, for 5% off (except for the last assignment).
There will be situations where I will announce changes to the due dates in
class and posted on the web site. Assignments may not be
turned in later than one week late. There are no exceptions. Turn in what you
have after one week late.
• Each
student is expected to submit only
original work. Software and passwords must be kept confidential. Any person who
violates these will receive a grade of
zero on an assignment which will result in an F for the course and a letter
will be sent to the head of the CS Department. Identical programs will be
treated as copying even with cosmetic changes.
• Submit assignments
electronically to the D2L Dropbox (make sure to select the “submit” button
after uploading the files, otherwise your submission will be lost). It is
important to submit your assignment to the correct D2L Dropbox, otherwise it
cannot be graded. For backup, please also email your assignment’s files as
attachments to karlafgr@cs.pdx.edu.
You may need to use a file
transfer program – you can talk with the tutors (tutors@cs.pdx.edu) to get more information.
Term Paper:
• Each student
will be required to submit a typed term paper. The paper must explore how well your 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). If you have tables and sample code, they MUST be attached as
exhibits and should not be part of the 4-7 page count. Your term paper should
be done using Word or plain text.
Policies for Demonstrations:
Pass/No Pass
Policies
for Participation: Pass/No Pass
•
Lectures:
• In-class students participate by attending class lectures.
• Online students
participate by watching videos. It is expected that online students will
watch the lecture videos posted on D2L. Missing the videos will mean missing
what you need to be successful in the course. Keeping up with the course material is vital.
Labs:
• In-class lab students participate by attending the labs. Pre-lab exercises must be brought to the labs already completed. They are required for your attendance. They are designed to prepare you for the labs and are Pass/No-Pass.
• Self-paced lab students participate by uploading completed pre-lab exercises onto D2L. Limit your work on labs to no more than 1 hour and 50 minutes each week on the actual lab work. It is not expected that you complete each labs, but make as much progress as this time allows. If a concept is not clear, then arrange with the instructor to attend one of the lab sessions or contact the tutors (tutors@cs.pdx.edu) for additional support.
Policies
for Lecture
Videos – Pass/No Pass
Policies for Exams:
• It is against department
policy to give final exams early (no exceptions!). Exams will all be closed
book, closed notes.
Administrative
and Grading Policies
Demonstrate Proficiency in C++ -
Midterm
Demo -
Final Demo |
Pass/No Pass |
At PSU or by Proctor |
Participation |
Pass/No
Pass |
Section 001: Attendance Section 002: Upload pre-labs |
Keep up with Course Material |
Pass/No Pass |
Every week attend lecture or watch Videos and Read Chapters |
- Term Paper - 5 Programming Projects |
||
Midterm |
25% |
At PSU or by Proctor |
Comprehensive Final |
40% |
At PSU or by Proctor ***
Must receive a Passing score of 65% to pass the class *** |
• Failure to turn assignments in on
time will result in a zero for that assignment. Assignments will not be
accepted after the last day of class.
• No Basis for a Grade – A no basis for a grade in this class only
applies when a student has not turned in any work, not taken any exams, and
have not participated on D2L. If you have complications and cannot finish the
class, make sure to drop or withdraw. Otherwise
you will get a grade in the 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. Do not expect an incomplete in this class.
• 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
accepts an assignment and/or program from another student
2.
Student
supplies an assignment and/or program to another student
3.
Student posts
the assignment and/or program on the web, social networking site, or D2L
discussions
4.
Student
shares their password with another student at PSU giving that student access to
their assignments and/or programs
5.
Students work
together on assignments and turn in the same and/or similar assignments.
6.
Student turns
in work that was obtained from other sources such as the web, friends, tutors
or TA’s.
7.
Student
leaves work available for others to copy from
8.
Student
attempts to purchase programs from others (in person or electronically).
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.
Keys to Success:
1.
Login
to D2L to check grades and ask questions.
2.
Keep
up with Materials (readings, assignments, labs)
3.
Watch all class lecture videos
each week (online)
4.
Attend all class sessions (in-class)
5.
Practice Programming Constructs
6.
Perform the pre-lab exercises
to get ready for each construct
7.
Ask Questions! Use Tutors, use D2L discussions, and correspond with me!
Try to Exceed my Expectations!