Elements of Software Construction

Lecture Notes

These lecture notes have been collaboratively authored, with contributions from Saman Amarasinghe, Srini Devadas, Michael Ernst, John Guttag, Daniel Jackson, Rob Miller, Martin Rinard, and Armando Solar-Lezama. Used with permission.

LECTURE NOTES

SUPPORTING FILES

Lecture 1: Static checking (PDF)

Addendum: Snapshot diagrams (PDF)

(ZIP) (This ZIP file contains: 1 .java file.)

Lecture 2: Test-first programming (PDF)

(ZIP) (This ZIP file contains: 2 .java files.)

Lecture 3: Specifications (PDF - 1.0MB)

(ZIP) (This ZIP file contains: 2 .java files.)

Lecture 4: State machines (PDF - 1.1MB)

(ZIP) (This ZIP file contains: 5 .java files.)

Lecture 5: Regular expressions and grammars (PDF)

(ZIP) (This ZIP file contains: 10 .java files.)

Lecture 6: Abstract data types (PDF - 1.2MB)

(ZIP) (This ZIP file contains: 8 .java files.)

Lecture 7: Recursive data types (PDF)

(ZIP) (This ZIP file contains: 4 .java files.)

Lecture 8: Interpreters and visitors (PDF - 1.1MB)

(ZIP) (This ZIP file contains: 8 .java files.)

Lecture 9: Review

 

Lecture 10: Concurrency (PDF)

(ZIP) (This ZIP file contains: 3 .java files.)

Lecture 11: Processes and sockets (PDF)

(ZIP) (This ZIP file contains: 2 .java files.)

Lecture 12: Thread safety (PDF)

(ZIP) (This ZIP file contains: 4 .java files.)

Lecture 13: Synchronization (PDF)

(ZIP) (This ZIP file contains: 19 .java files.)

Lecture 14: Graphical user interfaces (PDF - 1.2MB)

(ZIP) (This ZIP file contains: 4 .java files.)

In the beforeclass\hogwarts\gui\images folder, three images (harry.jpg, hermione.jpg, and no-photo.jpg) have been removed due to copyright restrictions.

Lecture 15: Map, filter, reduce (PDF)

(ZIP - 8.9MB) (This ZIP file contains: 12 .class files, 5 .java files, 4 .py files, and 1 .jar file)

Jython 2.5.2 © Python Software Foundation. All rights reserved. This content is excluded from our Creative Commons license. For more information, see http://ocw.mit.edu/fairuse.

Lecture 16: Little languages (PDF)

(ZIP - 8.9MB) (This ZIP file contains: 17 .java files, 1 .py file, and 1 .jar file.)

Jython 2.5.2 © Python Software Foundation. All rights reserved. This content is excluded from our Creative Commons license. For more information, see http://ocw.mit.edu/fairuse.

Assignments

PROBLEM SETS

SUPPORTING FILES

Problem set 0: Getting started(PDF - 1.0MB)

Installing Subclipse (PDF - 1.1MB)

(ZIP) (This ZIP file contains: 2 .java files.)

Problem set 1: Pi poetry (PDF)

(ZIP) (This ZIP file contains: 11 .java files.)

Problem set 2: Midi piano (PDF)

(ZIP) (This ZIP file contains: 7 .java files.)

Problem set 3: Calculator parser (PDF)

(ZIP) (This ZIP file contains: 5 .java files.)

Problem set 4: Building a Sudoku solver with SAT (PDF)

(ZIP) (This ZIP file contains: 21 .java files and 6 .txt files.)

Problem set 5: Finding prime factors with networking (PDF)

(ZIP) (This ZIP file contains: 5 .java files.)

Problem set 6: Multiplayer minesweeper (PDF)

(ZIP) (This ZIP file contains: 2 .java files.)

Problem set 7: Jotto client GUI (PDF)

(ZIP) (This ZIP file contains: 2 .java files, 1 .py file and 1 .png image.)

 

Exams

QUIZZES

SOLUTIONS

Quiz 1 (PDF)

(PDF)

Quiz 2 (PDF)

(PDF)

 

Projects

PROJECTS

SUPPORTING FILES

Project 1: An ABC music player (PDF)

An ABC subset for 6.005 (PDF)

Grammar in an EBNF (TXT)

Team contract (PDF)

(ZIP) (This ZIP file contains: 10 .abc files and 3 .java files.)

The following abc files are © Musica Viva: scale, little_night_music, paddy, invention, prelude, fur_elise. All rights reserved. This content is excluded from our Creative Commons license. For more information, see http://ocw.mit.edu/fairuse.

Project 2: Instant messaging (PDF)

Project 2 amendment (PDF)

(ZIP) (This ZIP file contains: 2 .java files.)