601.220: Intermediate Programming

You’re in the right place if you want to expand your programming skills into the realms of C and C++ while picking up some useful programming techniques at the same time. You’ll also learn basic UNIX skills and get experience with a number of widely-used development tools.


Catalog Description: This course covers intermediate to advanced programming in both C and C++. The focus of the course is on programming techniques and development tools. Students are expected to learn syntax and basic language features independently. Coursework involves significant programming projects in both languages.

Prerequisite(s): 600.107: Introduction to Programming in Java. (For some assignments, 600.226: Data Structures is also useful.)

Policies: Please read the general course policies and take them to heart. The following course-specific policies are also in effect. Additional policies may be posted at a later date.



There is no required text. However, the following two books are highly recommended if you want to really learn C and C++ well. Neither covers exactly what we’ll do in the course, and both cover things we’ll never even mention, but they are excellent books in any case.



Homework assignments are designed for you to practice certain skills and techniques, they are not formally graded. If you want feedback on your solutions, please ask in office hours.


Programming projects are designed to evaluate how good of a software developer you are. They are formally graded. Please check the individual projects for due dates and the structure your solutions should have. See our Piazza site for detailed submission instructions.




This is not a schedule. It’s a “log” of what we did, roughly, in each lecture. Don’t expect it to turn into a schedule, it won’t.