6.005 | Spring 2016 | Undergraduate

Software Construction

Course Description

6.005 Software Construction introduces fundamental principles and techniques of software development, i.e., how to write software that is safe from bugs, easy to understand, and ready for change. The course includes problem sets and a final project. Important topics include specifications and invariants; testing; …

6.005 Software Construction introduces fundamental principles and techniques of software development, i.e., how to write software that is safe from bugs, easy to understand, and ready for change. The course includes problem sets and a final project. Important topics include specifications and invariants; testing; abstract data types; design patterns for object-oriented programming; concurrent programming and concurrency; and functional programming.

The 6.005 website homepage from Spring 2016, along with all course materials, is available to OpenCourseWare users.

Learning Resource Types
Problem Sets
Exams with Solutions
Online Textbook
Programming Assignments
A blue and yellow fractal.
A fractal generated from the hailstone sequence discussed in Lecture 1 (Image in the public domain courtesy of Pokips76 on Wikipedia).