Abbreviations
JSP = Jackson Structured Programming
DPLL = Davis-Putnam-Logemann-Loveland (algorithm)
SQL = Structured Query Language
SES # | TOPICS | ASSIGNMENTS | PROJECTS |
---|---|---|---|
1 |
IntroductionBasic Java syntax and semantics; overview of objectives and structure of the course | Do lab 0.1 | |
2 |
ClassesMore Java: exceptions, input/output, classes, access control, static | Exploration 1 out | |
3 |
Subclassing and interfacesSubclassing, inheritance, overriding, interfaces, packages; distinction between declared type and actual type; downcasting; anonymous classes | Do lab 0.2 | |
4 |
Designing state machinesState machine design; graphical and textual notation; state machine semantics; parallel combinations of machines |
Exploration 1 due Problem set 1 out | |
5 |
Implementing state machinesState machine implementation patterns; concurrency and queues; modularity and interfaces | ||
6 |
State machine invariantsSafety and liveness properties; state properties and invariants; inductive reasoning; computing the product machine of a parallel combination; state explosion; fault tolerance; interlocks and the idea of a trusted base | ||
7 |
Designing stream processorsStream processing programs; grammars vs. machines; JSP method of program derivation; regular grammars and expressions |
Project 1 out Do lab 1 | |
8 |
Decoupling and interfacesModularity, decoupling, information hiding; module dependence diagrams; using interfaces for decoupling | Problem set 1 due | |
9 |
Testing and coverageWhy software testing is hard; input space partitioning, boundary testing, state machine coverage, code coverage; test-first development and regression testing | ||
10 |
Designing a SAT solver, part 1The SAT problem and SAT solvers; a new paradigm of functions over immutable types; use datatype productions to model structured values; patterns for implementing datatypes (Variant as Class, Interpreter) | Exploration 2 out | Project 1 due |
11 |
Designing a SAT solver, part 2Review of basic datatype patterns; a naive solver with backtracking search; design improvements with Facade, Option types, and a 3-valued logic | ||
12 |
DebuggingTechniques for avoiding debugging: assertions, modular development with unit testing, code reviews; strategies for debugging: reducing test cases, hypothesis-driven debugging, binary search; Heisenbugs |
Exploration 2 due Problem set 2 out | |
13 |
Designing a SAT solver, part 3Abstract data types; representation independence; characterizing types by operations; encapsulation; examples of types used by DPLL solver; Factory Method pattern | ||
14 |
Rep invariants, equality, visitorsAdvice on implementing types; rep invariants and abstraction functions; equality for immutable types; Iterator and Visitor patterns |
Project 2 out Do lab 2 | |
15 |
Little languagesRepresenting behavior using data structures; language datatypes, visitors, functional objects, higher-order functions; solving a problem by creating a domain-specific language | Problem set 2 due | |
16 |
Basics of mutable typesHeap semantics (aliasing, assignment, field setting); reachability and conceptual storage leaks; the Object Contract and equality properties; hash maps and their representation invariant; problems caused by mutation of keys | Exploration 3 out | Project 2 due |
17 |
Event-based programmingFundamentals of programming graphical user interfaces; view hierarchy, Composite pattern, Publish-Subscribe pattern, Model-View-Controller (MVC); pitfalls of event-based programming | ||
18 |
Designing a photo organizerThe relational paradigm; conceptual modeling; object model syntax and semantics; Mitchell and Webb on "unity of purpose" |
Exploration 3 due Problem set 3 out | |
19 |
Implementing a photo organizerImplementation as object model transformation; key issue of where state resides; standard patterns; navigation, immutability and encapsulation; MVC considerations | ||
20 |
ConcurrencyShared-memory and message-passing paradigms; race conditions and deadlock; using threads and blocking queues in Java; concurrency issues in graphical user interfaces |
Project 3 out Do lab 3 and team building lab; Swing lab optional | |
21 |
UsabilityUser interface design principles: learnability, visibility, efficiency, errors, simplicity; iterative design; sketching and paper prototyping; user testing | Problem set 3 due | |
22 |
Relational databasesUsing a database to represent an object model; relational algebra and SQL; transactions | ||
23 |
ConclusionFinal words; courses and internships that might follow 6.005; winners of Project 3 awards; 6.005 quiz game | Project 3 due |