Calendar

The calendar below provides the course's lecture (L), recitation (R), quiz (Q), and project (P) sessions by week.

ses # topics key Dates
Week 1
L1 Introduction Problem set 0 out
L2 Object semantics  
Week 2
L3 Subclassing  
L4 Specifications  
L5 Testing Problem set 1 out
R1 Specification and testing Problem set 0 due
Week 3
L6 Object model notations

Code summary
 
L7 Introduction to ADTs Problem set 2 out
R2 ADT, rep exposure, and object model diagrams Problem set 1 due
Week 4
L8 Representation invariants  
L9 Abstraction functions  
L10 Dependencies and decoupling Problem set 3 out
R3 Abstraction functions and representation invariants Problem set 2 due
Week 5
L11 Exceptions  
L12 Equality  
L13 Polymorphism Problem set 4 out
R4 Equality and hashing Problem set 3 due
Week 6
L14 Subtypes and subclasses Problem set 5 out
R5 True subtyping and the substitution principle Problem set 4 due
Week 7
L15 Classes and interfaces  
L16 Usability 1 Problem set 6 out
L17 Usability 2 Problem set 5 due
Week 8
L18 Design patterns  
L19 Design project experiences 1  
L20 Design project experiences 2  
R6 Design patterns  
Week 9
P1 Project implementation and review  
Q1 Quiz  
P2-P3 Project implementation and review (cont.) Problem set 6 due in P2
Week 10
P4-P5 Project implementation and review (cont.)  
L21 Managing a small software team First deliverable due
P6 Project implementation and review (cont.)  
Week 11
P7-P9 Project implementation and review (cont.)  
L22 Guest Lecture - Joshua Bloch and Neal Gafter  
Week 12
P10-P12 Project implementation and review (cont.) Second deliverable due in P10
Week 13
P13-P16 Project implementation and review (cont.)  
Week 14
P17-P20 Project implementation and review (cont.)  
Week 15
  Demo fair Final project due
  Award presentations