| 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 |
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.
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:
ls, find, grep,
mkdir, etc.
gdb debugger.
You'll find that using a debugger greatly increases your
productivity,
and is well worth the time investment.
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.
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.
| 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.
| 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.
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.
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.
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.
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.
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.
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.
| 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] | ||