Course Description: Fast-paced introduction to the C and C++ programming languages. Both are useful for classes, research, and jobs. Focus will be placed on practical knowledge, especially best practices, the powerful advantages C/C++ can offer you, and modern features of C++. You'll come away understanding when and why you might want to use C/C++ over another language, how both "low-level" and more abstracted programming can help you, and how to best develop your own software projects in these languages. Weekly coding assignments and a final project. Assumes no C/C++ knowledge, but is intended for programmers with some background and experience in other languages.
Schedule: Jan 8–31. MWF 2–4pm. Open lab Weds. 7–9pm.
Location: Lecture 54-100; Lab 32-044
Instructor: Andre Kessler
Contact: akessler@mit.edu

Assignments

Online grader - go here for assignments and submissions.

Assignment 1 (20%): released 1/10 at 2pm; due 1/15 at 2pm.
Assignment 2 (20%): released 1/17 at 12pm; due 1/23 at 12am.
Assignment 3 (10%): released 1/22 at 11pm; due 1/26 at 12am.
Assignment 4 (50%): to be released 1/25 at 4pm; due 2/1 at 2pm.

Recommended computing environment
Helpful resources

Lectures

Lecture 1 - Introduction to C, memory model, compilers (zipped examples from lecture)
Lecture 2 - Subtleties of C: memory, structs, floating point (zipped examples from lecture)
Lecture 3 - Guest lectures on x86 Assembly and Secure C
Lecture 4 - Transition to C++ (zipped examples from lecture)
Lecture 5 - Object-Oriented C++ (zipped examples from lecture)
Lecture 6 - Design Patterns (zipped examples from lecture)
Lecture 7 - Introduction to Projects
Lecture 8 - Project Environments
Lecture 9 - Visualization
Lecture 10 - Grab Bag: Advanced C++

C++ Coding Standards
Do you want to learn how create blazingly fast programs, be organized about developing a software project, write C/C++ code that will keep the people who maintain it very happy, learn how to ace an interview in either of these languages since you'll know them so well, and understand how to properly debug your code when you inevitably run into problems? Then this might be the crash course for you. (Stellar)

If you're interested, please complete the diagnostic "test" (meant to be short—not much more than hour) available and submit it to akessler@mit.edu by 12/27, in addition to pre-registering for the course on WebSIS.

Update: sample solutions to the coding problems on the diagnostic can be found here.

Should I take this class?