Welcome to CompSci 108!
Software Design and Implementation



This is a course in object oriented programming and design. It is based on working in teams, ranging from two to four people. There are smaller, individual assignments as well to ensure that everyone who completes the course is "certified" as capable of writing and understanding reasonably complex programs. The course will use both Java and C++. It is assumed that you have previously programmed extensively using C++ (e.g., at the level of CompSci 100 at Duke).

This is a course in which you will design and implement lots of programs. Along the way, you will learn both low-level and high-level idioms and patterns of programming that will make you wonderful, intelligent programmers and designers. You will study about optimizations for people and for computers, become more adept at object oriented design and programming, and learn that doing things simply is a wonderful way to start.

If you do not have experience programming with C++ as learned in CompSci 100, this probably is not the right course for you. See the course staff if you have questions.


The Computer Science department at Duke University aims to excel in education and research. To ensure that our courses fulfill the needs and expectations of students in our courses, students can submit comments anonymously about this computer science course. These comments will be read only by the Director of Undergraduate Studies for Teaching and Learning and the professor teaching the course. Our goal is to adapt the subject and delivery of our courses to meet student needs while maintaining our high standards.

This course runs on your comments. If you do not speak up, we will assume everything is fine, which may not be an accurate impression. So, please speak up.