Principles of Software Construction: Objects, Design, and ConcurrencyFall 2012Lecture: Tuesday/Thursday 3:00-4:20, Hamburg Hall (HBH) 1000 12 units Section A: Wednesday 9:30-10:20, Wean Hall (WEH) 5310 TA Patrick Woody, pwoody
[at] andrew [dot] cmu [dot] edu, Office Hours: Tuesdays
4:30-6:00
Section B: Wednesday 10:30-11:20, Wean Hall (WEH) 5310TA: YoungSeok Yoon,
youngseok [at] cs [dot] cmu [dot] edu, Office Hours:
Mondays 1:30 - 3 in GHC 4126
Section C: Wednesday 11:30-12:20, Wean Hall (WEH) 5310
TA: Alex Duda, aduda [at]
andrew [dot] cmu [dot] edu, Office Hours: Wednesdays 4:30
- 6
Section D: Wednesday 12:30-1:20, Wean Hall (WEH) 5310
TA: Saagar Sethi, tba [at]
andrew [dot] cmu [dot] edu, Office Hours: Sundays 2 - 3:30
Cross-section TA: Ivan Ruchkin, iruchkin [at] andrew [dot]
cmu [dot] edu
Office Hours at WEH 4126:
Thursdays 10:00 - 11:30
Lab: Monday at 9:30, 10:30, 11:30, and 12:30 Gates Hillman
Center (GHC) 5201 |
Date |
Topic |
Additional Notes/Code |
Assignment |
Introduction |
|||
Aug 28 |
Course Introduction; Concept of
Objects |
||
Objects | |||
Aug 29 |
Recitation: Java Warmup |
Recitation 1.zip |
|
Aug 30 |
Objects, Interfaces,
Equality, and Exceptions |
Worksheet - Objects and
Dispatch |
|
Sep 3 | Labor Day - no lab |
|
|
Sep 4 |
Java
Semantics |
03 examples.zip |
Assignment0: Java Warmup |
Sep 5 |
Recitation: Java Semantics and JUnit |
||
Sep 6 |
Packages
and Polymorphism |
04 examples.zip |
|
Sep 10 |
Lab: JUnit and Debugging |
||
Sep 11 |
Polymorphism and
Typechecking |
Assignment 1: Objects and Interfaces (part 1) | |
Sep 12 |
Recitation: UML, Typechecking and
Inheritance |
||
Sep 13 |
Object
Contracts, Equality, and Type Polymorphism |
06 examples.zip |
Assignment 1: Objects and Interfaces (part 2) |
Sep 17 |
Lab:Virtual World Introduction |
||
Sep 18 |
Correctness
and Invariants |
7-hoare-worksheet.pdf |
|
Sep 19 |
Recitation: Design with Inheritance,
Dispatch practice |
||
Sep 20 |
Correctness
and Invariants, continued |
8-hoare-worksheet.pdf |
Assignment 2: Inheritance (part 1) |
Sep 24 |
Help session in lab (no lab assignment) |
||
Sep 25 |
ESC/Java | Extended
Static Checking for Java; Multiply.java; Multiply-full.java; SimpleSet.java; SimpleSet-full.java |
Assignment 2: Inheritance (part 2) |
Sep 26 |
Recitation: Invariant practice |
||
Design | |||
Sep 27 |
Design: patterns
introduction |
||
Oct 1 |
Lab: ESC/Java |
||
Oct 2 |
Design: more patterns (notes
as above) |
||
Oct 3 |
Recitation: Design patterns exercise |
||
Oct 4 |
Design: principles behind the patterns (notes as above) | Assignment 3: Formal Reasoning and ESC/Java | |
Oct 8 |
Lab: Design patterns exercise | ||
Oct 9 |
GUIs
with Swing |
|
|
Oct 10 |
Recitation: Pattern presentations | ||
Oct 11 |
Frameworks |
Assignment 4: Pattern Mining | |
Oct 15 |
Lab: GUI exercise | ||
Oct 16 |
Frameworks, continued (notes
as above) |
||
Oct 17 |
Recitation: Midterm review | ||
Oct 18 |
Midterm exam |
||
Concurrency and Advanced Design |
|||
Oct 22 |
Lab: GUI homework help |
||
Oct 23 |
Java Collections | Assignment 5: GUIs | |
Oct 24 |
Recitation: Midterm recap |
||
Oct 26 |
Java Stream I/O |
Java Networking examples |
|
Oct 29 |
Lab: API design help | |
|
Oct 30 | Concurrency |
Concurrency
example.zip |
Assignment 6a: Framework
design |
Oct 31 | Recitation: API design presentations |
||
Nov 1 | Concurrency, part 2 |
||
Nov 5 |
Lab: API implementation help |
||
Nov 6 |
Introduction to Static
Analysis |
|
|
Nov 7 |
Recitation:
Framework implementation presentations |
Assignment 6b: Framework implementation | |
Nov 8 |
Static analysis for
concurrent programs |
|
|
Nov 12 |
Lab: concurrency |
||
Nov 13 |
Concurrency: algorithms and data structures | Assignment 6c: Framework plugin implementation (part 1) | |
Nov 14 |
Recitation:
concurrency |
||
Nov 15 |
Concurrency: Java's
concurrency framework |
Concurrency
framework examples |
Assignment 6c: Framework plugin implementation (part 2) |
Nov 19 |
Lab: JSure | ||
Nov 20 |
Product
lines |
Assignment 7: simple concurrency | |
Nov 21 |
No recitation - Thanksgiving holiday | ||
Nov 22 |
No class - Thanksgiving holiday |
||
Nov 26 |
Lab: Optional homework help |
||
Nov 27 |
Distributed System
Design, part 1 |
||
Nov 28 |
Recitation: Distributed systems | |
|
Nov 29 |
Distributed System
Design, part 2 |
Assignment 8: Concurrency and JSure | |
Dec 3 |
Lab: Distributed Systems | ||
Dec 4 |
Data consistency |
||
Dec 5 |
Recitation: Final exam review |
||
Dec 6 |
History and Future of
Objects |
Assignment 9: Distribution | |
Dec 17 |
5:30-8:30pm Final Exam |