![]() |
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 |
||