CS 340-Fall 2007: Object-Oriented Analysis and Design

Time T, R 1:15–2:40 PM
Place SW 313
Instructor Kenneth Chiu
Office EB T-22 (Soon moving to T-10)
Phone 777-7320 (Do not leave voice mail, I won't know I have any.)
Office Hours T R, 4:30-5:30
Web Page http://www.cs.binghamton.edu/~kchiu/cs340/
Mailing Lists

Public: cs340@cs.binghamton.edu (Subscribe at http://www.cs.binghamton.edu/mailman/listinfo/cs340/.)

Private: cs340-internal@cs.binghamton.edu

Objectives

The objective of this course is to give you a solid background in designing object-oriented applications. I will focus on how to design programs in an object-oriented context. I will also try to expose you to some current ideas and trends in object-oriented programming.

Prerequisites

A solid background in C++ is required. You should also have experience with developing on UNIX/Linux systems, using the gdb debugger, makefiles, and a good editor.

Here are some things you should be familiar with. It is not exhaustive by any means, but is just meant to give you a sample:

Course Topics

Course topics will include: If you have other topics you would like to cover, please suggest them.

Lectures

Lecture slides will be available via the course web page. Lecture slides are not a substitute for class attendance, since they will not be complete and significant parts of lectures may not come from the class notes. Also, I sometimes take exam questions from questions asked by myself or others during class.

Class participation during lectures is highly encouraged, and will affect your grade. If you don't understand something, please interrupt, since it's likely that others also don't understand. The more effort you make to understand the material during lecture, the less you will need to study for the exams.

Readings

For background in C, I recommend Kernighan and Ritchie's The C Programming Language (Second Edition). For a C++ reference, I recommend Lippman's The C++ Primer (3rd Edition). For UNIX systems programming, I recommend Steven's Advanced Programming in the UNIX Environment (2nd Edition). For POSIX threads programming (pthreads), I recommend Butenhof's Programming with POSIX Threads. All of these are just recommendations, however. You should feel free to use any book of your choosing.

There is currently no required textbook for this course, though I reserve the right to change my mind on this.

Format

Percentage of grade Component
12% Exam 1
12% Exam 2
12% Exam 3
5% Assignment 0: Lookup Program
8% Assignment 1: XML Parser
3% Assignment 2, Phase 0: Project Description
12% Assignment 2, Phase 1: Project Design and Presentation
31% Assignment 2, Phase 2: Project Implementation
5% Class attendance, participation, and discussion

Grading will be scaled (on a curve), so your absolute score is not significant. However, you will be competing with your classmates. All requests for changes of grades must be made in writing, not in person, and you must wait 24 hours after receiving the grade before requesting a change. Resubmit your homework or exam to me, along with a written statement describing why you feel you deserve more points, and I will consider your case.

Exams

Exam Percentage of grade Date
Exam 1 12% About 10/2
Exam 2 12% About 11/1
Exam 3 12% 12/6

Exams will be open book, and notes, but you will not be allowed to use laptops during exams. They will be held during class time. The exams will not be cumulative.

Programming Assignments

You may actually develop your programming projects on any machine, but they will be graded on the bingsuns machine, which runs Solaris.

Extensions programming assignments will rarely be granted, especially not when requested at the last minute. All assignments will come with a firm due date, and a late policy.

Programming Assignment 0

Programming Assignment 1

Programming Assignment 2

Participation

Class participation makes up some portion of your grade. This participation can take the form of questions in class, or discussion at office hours or through e-mail. It can also be in the form of answering people's questions on the mailing list.

Some of you will be asking me later for recommendation letters, or references. For me to be able to write a strong recommendations, you will need to interact with me and participate in class. Without something more, the only thing I can say is that you did or did not show up in class, and list your grade. That will not be a very strong recommendation, even if you receive an A in the class.

Academic Integrity

You are free to discuss assignments in general terms with one another. However, each of you must write your own code; please do not show your work directly to other students, and do not look at other students' code. Students submitting programming assignments or exams that I decide are too similar, will receive no credit on that assignment, and the maximum grade those students can receive for the class is a C. If necessary, I will be using source code comparison programs to check programs against one another.

Office Visits, Telephone, E-mail

Open Door Policy

My door is usually open if I'm in. If so, please come in or knock. If my door is closed, I'm either not in, or on the phone or otherwise engaged. Please don't knock, unless you have an urgent matter or a prior appointment.

If you wish to come to office hours, but will not arrive at the beginning of the period, let me know one day in advance. Otherwise, I will leave early. If you find this policy inconvenient, let me know. If you have made an appointment, a reminder the day before would be helpful.

If you verbally arrange a meeting with me or ask me to do something, please follow up with an e-mail so that I will have a written record. Otherwise, it is almost guaranteed that I will forget.

Telephone

If you would like to talk on the phone, please arrange it first with e-mail.

Also, do not leave voice mail. Since my phone does not have a visible indication that I have voice mail, sometimes several days pass before I realize that I have voice mail.

Mailing Lists

There are two mailing lists for this course. The first list, cs340@cs.binghamton.edu is an open, public list. Subscribe at http://www.cs.binghamton.edu/mailman/listinfo/cs340/. It will be used by me for announcements, and may be used by students for questions and discussion. The subject of announcements will be prefixed with “ANNOUNCEMENT:”. This list should be read carefully, and will often contain hints and tips for the programming assignments. The second list, cs340-internal@cs.binghamton.edu, is read only by me, and may be used for administrative issues. You are encouraged to use the public list for questions of a general nature.

Please use the e-mail lists rather than sending questions directly to me. The lists automatically archive e-mails, for future reference. I can then go back to these e-mails later to improve the course.

I may sometimes lose track of what e-mail I've responded to, so don't hesitate to remind me if I seem to have forgotten about your e-mail or request. I never ignore e-mail on purpose.

Syllabus

Section
Date Topic Slides Documents and/or Files Notes
Introduction
August 28th, 2007 Introduction Introduction [PPT]
C++
August 30th, 2007 Types, Operators, Expressions, Statements C++ Crash Course [PPT]
September 4th, 2007 Functions, Program Structure
September 6th, 2007 Classes
September 11th, 2007 Classes
September 18th, 2007 Class Templates
Template Metaprogramming [PPT]
Generic Programming [PPT]
Standard Library [PPT]
UML/OOA/OOD
Object-Orientation [PPT]
Classification [PPT]
Notation [PPT]
Design Patterns
October 23rd, 2007 Design Patterns [PPT]
Refactoring
November 13th, 2007 Refactoring [PPT]