CS 330: Syllabus -- Spring 2014

Steven Zeil

Last modified: Feb 13, 2014

1. Basic Course Information

1.1 When and Where

Meets: Tues. and Thurs., 1:30–2:45, Dragas 1117

Website: http://www.cs.odu.edu/~zeil/cs330.html

1.2 Objectives:

This course will explore the techniques of object-oriented programming, analysis, and design. The emphasis will be upon the development of clean interfaces that permit easy modification and reuse of software components. Other techniques, drawn from outside the object-oriented approach, that significantly contribute to this goal will also be discussed.

Students will gain facility in an object-oriented programming language and will learn the constructs that differentiate such languages from others. This course will explore the idioms and styles of object-oriented programming in C++ and Java, with emphasis upon how these contribute to reusable software components.

Students will learn how to use object-oriented techniques in support of programming. In particular, students will be introduced to the process of object-oriented analysis as a means of understanding an unfamiliar problem domain. Students will learn to build and use models, expressed in the Unified Modeling Language (UML) to codify and evaluate that understanding and to evolve system requirements. Students will learn how to use those models to facilitate a smooth transition from analysis to design and from there to implementation.

1.3 Textbooks:

Required:

Optional:

2. Communications

Steven J. Zeil E&CS 3208
(757) 683–4928 Fax: (757) 683–4900
cs330@cs.odu.edu

In most cases, questions about the course materials or assignments should be placed in the course Forum. E-mail should be used only when the Forum is unavailable or otherwise inappropriate.

Specific course options and policies regarding communications are presented in Navigating The Course Website and Asking Questions.

2.1 Office Hours:

A week-by-week schedule of available meeting times with me can be found at http://www.cs.odu.edu/~zeil/officehours/.

Note that I am available during office hours both in person and via network conferencing and often have evening hours via network-conferencing only.

3. Course Prerequisites

The prerequisites for this course are:

Note that, if it has been some time since you took CS 250 or 333, or if you received weak grades in them, then you may need to do some review work to prepare for this class.

If you are a transfer student who took equivalent courses elsewhere, you would do well to review the material on those course websites and look for topics that may not have been covered in your prior courses, because course “equivalence” is often a very rough approximation. Pay particular attention to the material on design, testing, and debugging, as these are often given short shrift at other institutions.

Either way, if you need to review any of the prerequisite topics described below, the time to do so is early in the semester, before you need it to understand the lectures or are called to use it in assignments.

Students who have successfully completed those prerequisites should have acquired the following knowledge and skills:

4. Assignments

Assignments for this course will include programming assignments (in C++ and Java), which must be done on an individual basis, and design assignments, which may be done in small teams.

4.1 Computer Accounts:

Students will need an account on the CS Dept. Unix network to participate in this class. This account is unrelated to any University-wide account you may have from the ODU’s Information Technology Services (ITS).

If you have had a CS Unix account in the recent past, you should find it still active with your login name, password, and files unchanged. If you have had an account and it has not been restored, contact the CS Dept systems staff at root@cs.odu.edu requesting that it be restored.

If you do not yet have such an account, go to the CS Dept. home page and look for “Account Creation” under “Online Services”. All students in this course are responsible for making sure they have a working CS Unix account prior to the first assignment.

4.2 Compilers

The “official” environment in which students’ programming assignments will be evaluated is defined by our Dept. Linux servers. It is the student’s responsibility to be sure that their code compiled and executes using the compilers and run-time environment provided there. As of this writing, the compiler versions used are

5. Course Policies

5.1 Due Dates and Late Submissions:

Late papers and projects and make-up exams will not normally be permitted.

Exceptions will be made only in situations of unusual and unforeseeable circumstances beyond the student’s control, and such arrangements must be made prior to the due date in any situations where the conflict is foreseeable.

I’ve fallen behind and can’t catch up”, “I’m having a busier semester than I expected”, or “I registered for too many classes this semester” are not grounds for an extension.

Extensions to due dates will not be granted simply to allow “porting” from one system to another. “But I had it working on my office PC!” is not an acceptable excuse.

5.2 Academic Honesty:

Everything turned in for grading in this course must be your own work. Some assignments may be done by small teams, in which case the submitted material must be the work of only those team members. Such assignments will be clearly marked as team assignments. Where teams are permitted, specific guidelines will be given in the online assignment description. In the absence of any such explicit statement, an assignment must be performed by a single individual.

The instructor reserves the right to question a student orally or in writing and to use his evaluation of the student’s understanding of the assignment and of the submitted solution as evidence of cheating.

Students who contribute to violations by sharing their code/designs with others may be subject to the same penalties. Students are expected to use standard Unix protection mechanisms (chmod) to keep their assignments from being read by their classmates.

This policy is not intended to prevent students from providing legitimate assistance to one another. Students are encouraged to seek/provide one another aid in learning to use the operating system, in issues pertaining to the programming language, or to general issues relating to the course subject matter. Student discussions should avoid, however, explicit discussion of approaches to solving a particular programming assignment, and under no circumstances should students show one another their code for an ongoing assignment, nor discuss such code in detail.

Violations will be reported to Student Judicial Affairs for consideration for punitive action.

5.3 Attendance:

Attendance at classes is not generally required, but students are responsible for all material covered and announcements made in class. Consequently, if you are going to miss class, be sure to get notes, handouts, etc., from another class member.

5.4 Grading:

Assignments: 40%
Midterm Exam: 25%
Final Exam: 35%

It is my general policy that, should a student perform significantly better (a rise in class rank of at least 1.25 standard deviations) on the final than upon the midterm, or should a student have one project grade that is significantly lower than the rest, to waive that single low grade (adjusting the percentages of the remaining grades accordingly).

For the truly curious, some further information on my approach to grading is available.