CompSci 108
Fall 2006
Software Design and Implementation

This is a course in object-oriented design and programming. It is based on working in teams of two to five people; however, there are also several individual assignments. Among the main goals you should have, and that I have for those in the course, is to learn both low-level and high-level idioms and patterns of programming that will make you wonderful, intelligent programmers and designers. The course is not organized so that you will be become 3am code hackers, but that is a reality that may happen.

If you do not already know a programming language well, this probably is not the right course for you, although dedicated participants may be able to keep up. By the end of the course you should expect to have written several 500-1000 line programs, a few 1000-3000 line programs, and one 5000+ line program. Of course using lines of code (LOC) as a programming metric is not the best thing to do, but it conveys a sense of the scale of the programming you will do. You will become more proficient at object-oriented design and programming and your programs will consist of hundreds of classes by the end of the semester.

You will be expected to do a lot of reading and a lot of debugging outside of lecture.

LSRC
Meeting Time

MWF 2:50-4:00pm in LSRC room D106

Course Staff

Professor Duvall Professor: Robert C. Duvall

  • Office: LSRC room D228
  • Office Hours: after class or any time for quick questions
  • Email: rcd AT cs DOT duke DOT edu
  • Phone: 660-6567

Kshipra Bhawalkar Undergraduate TA: Kshipra Bhawalkar

  • Office: TBA
  • Email: kub AT duke DOT edu
  • Office Hours: By appointment Sunday evenings
  • AIM Screen Name: KshipraUB

Marcin Dobosz Undergraduate TA: Marcin Dobosz

  • Office: TBA
  • Email: md36 AT duke DOT edu
  • Office Hours: By appointment Tuesday evenings
  • AIM Screen Name: faarel

David Winslow Undergraduate TA: David Winslow

  • Office: TBA
  • Email: cdw21 AT duke DOT edu
  • Office Hours: By appointment Wednesday evenings
  • AIM Screen Name: DukeCSTA David

Ben Wolf Undergraduate TA: Ben Wolf

  • Office: TBA
  • Email: brw6 AT duke DOT edu
  • Office Hours: By appointment Monday evenings
  • AIM Screen Name: nebflow85
Books

Most of the readings assigned during the semester will be excerpts from books or online articles. However, most students also like to use a reference book about advanced programming topics, so the books listed below are optional. There is lots of information available online, but the books below are rather complete in their coverage (though big).

If you choose to buy any of these books online, please click on this link) to buy from Amazon so that your purchase contributes to undergraduate Computer Science Research at Duke.

Java Books
C++ Books

In general you should do the readings in order to be prepared to ask and answer questions in class. While there may be no formal check that you have done the reading, if you have looked at material before it is discussed in class you will get much more out of the class discussion. Although time will be given at the beginning of lecture for you to ask questions about the reading, the majority of the lecture will be an extension of the reading, not a summary.

Course Policies

These pages should answer your questions about the day-to-policy questions about the course.

Online Course Information