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