Skip to main content
MIT
Electrical Engineering & Computer Science
15 units

MIT 6.1020: Software Construction

6.1020, formerly 6.031 (whose public course readings are a renowned free resource), teaches writing software that's safe from bugs, easy to understand, and ready for change: specifications, testing, abstract data types, and concurrency. It's MIT's software engineering foundation, taught in recent terms in TypeScript after years in Java.

Fennie is independent and not affiliated with MIT. This is an unofficial study guide.

What makes it hard

The course grades how you write code, not whether it runs. Specs, invariants, and test-first discipline are the actual curriculum, and strong programmers used to just making things work find their habits suddenly insufficient. Concurrency at the end is the conceptual spike: race conditions resist the debugging instincts everything else built.

What you'll cover

  • Specifications and contracts
  • Test-first programming
  • Abstract data types and invariants
  • Immutability and equality
  • Recursive data types
  • Concurrency and thread safety

The 6.1020 study guide

How to study for MIT 6.1020, step by step.

  1. 1

    Do the readings actively, exercises included

    The course readings, public on the web and famously good, embed exercises that build the judgment the psets grade. Reading without doing them is how strong programmers end up surprised by their grades.

  2. 2

    Write the spec before the body, every time

    Preconditions, postconditions, and what's left unsaid: the spec-first habit is the course's core deliverable. Practice it on small functions until it stops feeling like ceremony.

  3. 3

    Let the tests drive, genuinely

    Write the test suite from the spec before implementing. It feels slower for a week and then permanently faster, because the tests catch the misunderstandings while they're still cheap.

  4. 4

    Slow way down for concurrency

    Race conditions don't yield to normal debugging; they yield to reasoning about interleavings. Work the concurrency readings' examples by hand, tracing what each thread can observe, before touching the pset.

Today

Today's 6.1020 plan

Preview
65 min

What a Fennie Daily Plan looks like for 6.1020. Yours is built from your own syllabus and adapts every day to your deadlines and progress.

0 / 4 done~65m remaining
Keep this plan free

First plan free, no card required. Fennie is independent and unaffiliated with your school.

FAQ

Is 6.1020 the same as 6.031?

Yes. 6.031 became 6.1020 in the 2022 renumbering. The famous public course readings remain the heart of the course; recent versions use TypeScript where older ones used Java.

Is 6.1020 hard?

The hours are steady and the adjustment is philosophical: code is graded on safety, clarity, and changeability, not just behavior. Concurrency is the one unit that's hard in the traditional sense.

Can I self-study 6.031/6.1020?

Yes, mostly. The full course readings with embedded exercises are publicly available and self-study-friendly. You lose the autograded psets and code review, so pair the readings with a real project you hold to the course's standards.

More MIT courses