If you don't already know C++, this probably is not the right course to learn that language, although dedicated participants may be able to. 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.
Professor: Robert C. Duvall
- Office: LSRC D228
- Office Hours: after class or any time for quick questions
- Email: rcd@cs.duke.edu
- Phone: 660-6567
Graduate TA: Avik Bhattacharya
- Office: LSRC D206
- Office Hours:
Monday 4:30 PM - 6:30 PM
Thursday 4:00 PM - 6:00 PM
or by appointment.- Email: avik@cs.duke.edu
- Phone: 660-6512
>
![]()
Undergraduate TA: Adam Durity
- Office: Soc-Pysch Room 133
- Office Hours:
Sunday 8 PM - 10 PM
Wednesday 10 PM - 12 PM (online)>- Email: ald12@duke.edu
- AIM ID: DukeCSTA Adam
![]()
Undergraduate TA: Steve Gore
- Office: Soc-Pysch Room 133
- Office Hours:
Monday 9 PM - 11 PM (online)
Wednesday 6 PM - 8 PM >- Email: sag8@duke.edu
- AIM ID : Duke CS TA Steve
>
![]()
Undergraduate TA: Jadrian Miles
- Office: Soc-Pysch Room 133
- Office Hours:
Tuesday 7 PM - 9 PM
Thursday 7 PM - 9 PM- Email: jjm14@duke.edu
- AIM ID: Duke CS TA Jadrian
> >>
You will use several books, copied excerpts, and online readings during the semester. The books listed below will be available at the Duke bookstore, but you can find these and other useful resources at the Gothic bookstore, Barnes and Noble (online or at New Hope Commons), or online from Amazon books (using the linked images below contributes to Computer Science Education at Duke).
![]()
As you mature as a programmer, you need to develop many skills beyond simply coding. This book explores several important issues about working in teams, using tools, and testing your programs.
- The Pragmatic Programmer, by Andrew Hunt and David
![]()
Design is an important component of the course. This book helps you to develop and think about different design strategies in a practical format.
- Design Patterns Explained, by Alan Shalloway and James Trott
![]()
You will need a Java reference. There is lots of information online, but the books below are rather complete in their coverage (though big). Lots of other Java books will do.
- Big Java: Programming and Practice, by Cay Horstmann
- Core Java 2, Volumes 1 and 2, by Cay Horstmann and Gary Cornell
- Java How To Program by Deitel and Deitel, Fifth Edition
In general you should do the readings in order to be prepared to ask and answer questions in class. 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.
These pages should answer your questions about the day-to-policy questions about the course.