Instructor(s)
Prof. Daniel Jackson
Prof. Robert Miller
MIT Course Number
6.005
As Taught In
Fall 2008
Level
Undergraduate
Course Description
Course Features
- Lecture notes
- Projects (no examples)
- Assignments: problem sets (no solutions)
- Assignments: programming with examples
Course Description
This course provides an introduction to the fundamental principles and techniques of software development that have greatest impact on practice. Topics include capturing the essence of a problem by recognizing and inventing suitable abstractions; key paradigms, including state machines, functional programming, and object-oriented programming; use of design patterns to bridge gap between models and code; the role of interfaces and specification in achieving modularity and decoupling; reasoning about code using invariants; testing, test-case generation and coverage; and essentials of programming with objects, functions, and abstract types. The course includes exercises in modeling, design, implementation and reasoning.
Other Versions
Open Learning Library Versions
MIT Open Learning Library offers a free version of this subject:
Other OCW Versions
OCW has published multiple versions of this subject.
Archived versions: