MIT 6.102: Software Construction
MIT's undergraduate course on writing software that is safe from bugs, easy to understand and ready for change, with every reading free on the public course site. Its readings on specifications, abstract data types, rep invariants, interfaces and code review are the university-level version of good object-oriented design.
19
MIT course site · Sept 2026
Spring 2026
MIT course site · Sept 2026
TypeScript
MIT course site · Sept 2026
Course
Other
MIT
19 readings, about a semester at your own pace
Intermediate
Free
What 6.102 is
6.102 Software Construction is an MIT undergraduate course, and its course website publishes the readings for each term openly. The Spring 2026 edition uses TypeScript and is built around 19 readings, from static checking and testing through to concurrency and little languages. An earlier edition of the course, numbered 6.031 and taught with TypeScript in its final term, is also archived on MIT's servers.
The course is not a design patterns course. It is about the habits underneath good design: stating clearly what a function promises, hiding how a type is stored, and proving to yourself that code is correct before you ship it. Those habits are what make SOLID and the patterns make sense later.
The readings worth your time for software design
The Spring 2026 reading list runs in this order:
- 01 Static Checking and 02 Testing: why types and tests catch different bugs.
- 03 Code Review: a practical list of what reviewers look for, such as repeated code, magic numbers and unclear names.
- 04 Specifications and 05 Designing Specifications: preconditions, postconditions and how to write a contract a caller can rely on.
- 06 Abstract Data Types and 07 Abstraction Functions & Rep Invariants: encapsulation taken seriously, with the invariants that make a type safe.
- 08 Interfaces & Subtyping: what it really means for one type to substitute for another, which is the idea behind the Liskov substitution principle.
- 09 Equality, 10 Functional Programming and 11 Recursive Data Types: value semantics and tree-shaped data, the ground for Composite, Interpreter and Visitor.
- 12 Grammars & Parsing through 19 Little Languages: debugging, concurrency, callbacks, message passing and small languages.
For a software design roadmap, readings 03 to 09 are the core. Read them in order; each builds on the last.
Is it worth it if I do not use TypeScript?
Yes. The examples are in TypeScript, but the ideas are language independent, and the code is short enough to follow if you know Java, C# or Python. If you write TypeScript already, you get the ideas and idiomatic code together.
How long does it take?
Each reading is a long article with small exercises built in. Working through the seven core readings carefully takes a few weeks at a steady pace alongside other study. The later readings are optional for design, but valuable if you go on to concurrency.
What you need first
You should be comfortable writing functions, loops and simple classes in at least one language. No prior computer science theory is needed.
Common questions
Is it free? The readings on the public course site are free to read. Graded work, exams and staff support are for enrolled MIT students.
Do I get a certificate? No. Treat it as a very high-quality free textbook.
What should I do after it? Move on to SOLID and design patterns: you will find that most of them are the specification and abstraction ideas from these readings, given names.
Ready to start?
Opens on MIT in a new tab.
Stuck on something specific?
Writing only gets you so far. If you want an answer to your situation rather than the general case, book a session and we will work through it together. Sessions are free for approved Sefism members, and a few slots open each week.
Follow along
New writing, resources and project ideas land here first.