Principles of Software Construction: Objects, Design, and ConcurrencySpring 2012Lecture: Tuesday/Thursday 3:30-4:50, Doherty Hall (DH) 1212 12 units Section A: Wednesday 9:30-10:20, Wean Hall (WEH) 5302 TA Andrew Chang, afchang [at]
andrew, Office Hour Thursdays 4:30pm - 6:00pm at GHC 4122
Section B: Wednesday 10:30-11:20, Wean Hall (WEH) 5310TA: Patrick Woody, pwoody [at]
andrew [dot] cmu [dot] edu, Office Hours Mondays 5pm-6:15pm GHC 4122/26
Section C: Wednesday 11:30-12:20, Porter Hall (PH) A22
TA: Filipe Militao, foliveir [at]
cs [dot] cmu [dot] edu, Office Hours: Fridays 2pm-3pm at GHC 7701
Lab: Monday at 9:30, 10:30, and 11:30, Gates Hillman Center (GHC) 5205TA: Anish Phophaliya, aphophal
[at] andrew [dot] cmu [dot] edu, Office Hours: Fridays 12.30pm-1.30pm
at GHC 4122
|
Date |
Topic
(some links require WebISO) |
Additional
Notes/Code |
Assignment |
Introduction |
|||
Jan 17 |
Course
Introduction; Concept of Objects |
||
Objects | |||
Jan 18 |
Recitation:
Java Warmup |
demo code notes |
|
Jan 19 | Graphs and their Interfaces | ||
Jan 23 |
Lab:
Java Warmup |
Assignment0: Java Warmup | |
Jan 24 |
Java Semantics |
||
Jan 25 |
Recitation:
Java Semantics and JUnit |
demo code |
|
Jan 26 |
Java Semantics | ||
Jan 30 |
Lab:
JUnit and Debugging |
Assignment 1: Objects and Interfaces (part 1) | |
Jan 31 |
Reuse with
Interfaces and
Inheritance |
|
|
Feb 1 |
Recitation:
UML, Typechecking and Inheritance |
demo code |
Assignment 1: Objects and Interfaces (part 2) |
Feb 2 |
Equality, Typechecking, and
Exceptions |
|
|
Feb 6 |
Lab: Typechecking and Inheritance | ||
Feb 7 |
Correctness and Invariants |
||
Feb 8 |
Recitation:
Design with Inheritance, Dispatch practice |
notes |
Assignment
2: Inheritance (part
1) |
Feb 9 |
Correctness and Invariants,
continued |
||
Feb 13 |
Lab:
Inheritance and Dispatch |
Assignment 2: Inheritance (part 2) | |
Feb 14 |
ESC/Java | Extended
Static Checking for Java; Multiply.java; Multiply-full.java; SimpleSet.java; SimpleSet-full.java |
|
Feb 15 |
Recitation:
Invariant practice |
demo code |
|
Design | |||
Feb 16 |
Design: patterns
introduction |
||
Feb 20 |
Lab:
ESC/Java |
||
Feb 21 |
Design: more patterns (notes as
above) |
||
Feb 22 |
Recitation:
Design patterns exercise |
notes |
Assignment 3: Formal Reasoning and ESC/Java |
Feb 23 |
Design: principles behind the patterns (notes as above) | ||
Feb 27 |
Lab: Design patterns exercise | ||
Feb 28 |
GUIs |
|
|
Feb 29 |
Recitation: Pattern presentations | Assignment 4: Pattern Mining | |
Mar 1 |
Generics |
||
Mar 5 |
Lab: Design patterns or GUI exercise | ||
Mar 6 |
Patterns into systems Solutions |
||
Mar 7 |
Recitation: Midterm Review | Assignment 5: GUIs | |
Mar 8 |
Midterm
exam |
||
Concurrency and Advanced Design |
|||
Mar 19 |
Lab:
homework help |
||
Mar 20 |
Frameworks | ||
Mar 21 |
Recitation: midterm review |
||
Mar 22 |
Framework design (notes as above) |
||
Mar 26 |
Lab: | |
|
Mar 27 | Java Network Libraries |
sample code | Assignment 6a: Framework design [Direct PDF Link] |
Mar 28 | Recitation:
Frameworks |
||
Mar 29 | Static analysis introduction | Assignment 6b: Framework review | |
Apr 2 |
Lab:
Distributed Systems |
||
Apr 3 |
Introduction to Concurrency |
|
|
Apr 4 |
Recitation: Framework design
presentations |
Assignment 6c: Framework implementation | |
Apr 5 |
Concurrency: sharing and data
structures (as above) |
|
|
Apr 9 |
No
Lab Held |
||
Apr 10 |
Concurrency: algorithms and data structures | ||
Apr 11 |
Recitation:
Framework plugin presentations |
Assignment 6d: Framework use | |
Apr 12 |
Concurrency: algorithms and
data
structures 2 (as above) |
||
Apr 16 |
Lab: Concurrency | ||
Apr 17 | Static
analysis for concurrency (no slides, see tutorial) |
see SureLogic
JSure tutorial code (item 4) |
|
Apr 18 | Recitation:
Concurrency |
Assignment 7: simple concurrency | |
Apr 19 | No
class - carnival! |
||
Apr 23 |
Lab: JSure |
||
Apr 24 | Distributed System Design |
||
Apr 25 | Recitation: Static Analysis and Distributed Systems | |
|
Apr 26 | Assignment 8: Concurrency and JSure | ||
Apr 30 |
Lab: Distributed | ||
May 1 |
|||
May 2 |
Recitation:
Final exam review |
||
May 3 |
Assignment 9: Distribution | ||
May 8 |
1-4pm
- Final
Exam in GHC 4401 |