Elements of Software Construction
Spring 2016 · Software Construction
_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](/ans7870/6/6.005/s16/) from Spring 2016, along with all course materials, is available to OpenCourseWare users.
Readings
- Most classes will have a reading that you must read before coming to class. There is no course textbook.
Fall 2008
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.
Sources
- Course catalogue ↗Historical OpenCourseWare
- MIT OpenCourseWare ↗Spring 2016
- MIT OCW readings ↗
- MIT OCW calendar ↗
- MIT OCW syllabus ↗
- MIT OCW calendar ↗
- MIT OCW syllabus ↗
- Historical MIT OpenCourseWare offering. Named reading entries and schedule topics are automatically extracted from the linked source pages.
- Historical MIT OpenCourseWare offering. Named reading entries and schedule topics are automatically extracted from the linked source pages.