Principles of Software Construction: Objects, Design, and ConcurrencySpring 2013Lecture: Tuesday/Thursday 3:00 - 4:20 p.m., Porter Hall (PH) 100 12 units Section A: Wednesday 9:30-10:20, Wean Hall (WEH) 5310 TA Daniel Lu, dylu
[at] andrew [dot] cmu [dot] edu, Office Hours: Wednesdays 4:30 - 6 p.m. in the Gates 4100 corridor
Section B: Wednesday 10:30-11:20, Wean Hall (WEH) 5310TA: Alex Lockwood,
alockwoo [at] andrew [dot] cmu [dot] edu, Office Hours:
Sundays at 8 - 10 p.m. in the Gates 4100 corridor
Section C: Wednesday 11:30-12:20, Wean Hall (WEH) 5310
TA: Shannon Lee, sjl1 [at]
andrew [dot] cmu [dot] edu, Office Hours: Mondays 6:30 - 8 p.m. in the Gates 4100 corridor
Section D: Wednesday 12:30-1:20, Wean Hall (WEH) 5310
TA: Michael Maass, mmaass [at]
cs [dot] cmu [dot] edu, Office Hours: Tuesdays 4:30 - 6 p.m. in Wean 5317
|
Below is the schedule of topics and lecture notes for the course. Assignments are due at 11:59 p.m. on their scheduled due date (unless otherwise indicated within the assignment document).
Date | Topic | Additional Notes/Code | Assignment Due |
Jan 15 | Course introduction; Concept of objects | ||
Jan 16 | Recitation: SVN + Java Warmup | ||
Jan 17 | Encapsulation, polymorphism, equality | ||
Jan 22 | Packages and inheritance | Assignment 0: Java warmup | |
Jan 23 | Recitation: Java Semantics | ||
Jan 24 | Packages and inheritance (continued), typechecking, method dispatch | ||
Jan 29 | Method dispatch (continued), Object contracts, exceptions | 05 examples | |
Jan 30 | Recitation: Method dispatch and exceptions | ||
Jan 31 | Exceptions, scope, static, and generics | 06 examples | Assignment 1: Objects and interfaces |
Feb 5 | (Formal) Analysis of Software Artifacts | Extended Static Checking for Java | |
Feb 6 | Recitation: Exceptions and the Eclipse Java debugger | ||
Feb 7 | Unit Testing | ||
Feb 12 | Software Design 1 (Conceptual Modeling) | UML | |
Feb 13 | Recitation: Formal reasoning and testing | ||
Feb 14 | Software Design 2 (Design Goals, GRASP) | Assignment 2: Inheritance / Virtual world | |
Feb 19 | Software Design 3 (Design Patterns) | ||
Feb 20 | Recitation: Software design with GRASP | ||
Feb 21 | Software Design 4 (Design Patterns, continued) | Assignment 3: Formal reasoning and testing | |
Feb 26 | Java Collections | ||
Feb 27 | Recitation: Design pattern mining | ||
Feb 28 | Java Collections (continued) and Introduction to GUIs | Sample GUI code | Assignment 4a: Software design |
Mar 5 | Midterm exam | ||
Mar 6 | Recitation: Midterm recap and GUIs with Swing | ||
Mar 7 | GUI design patterns, with Swing | Some GUI code | |
Mar 12 | No class - Spring Break | ||
Mar 13 | No recitation - Spring Break | ||
Mar 14 | No class - Spring Break | ||
Mar 19 | Frameworks | Sample Code | Assignment 4b: Scrabble with Stuff core implementation |
Mar 20 | Recitation: GUIs | ||
Mar 21 | More frameworks (notes as above) | ||
Mar 26 | Concurrency, part 1 | Sample concurrency code | Assignment 4c: Scrabble with Stuff full GUI implementation |
Mar 27 | Recitation: Frameworks | ||
Mar 28 | Concurrency, part 2 | ||
Apr 2 | Concurrency, part 3 | ||
Apr 3 | Recitation: API design presentations | Assignment 5a: Framework design | |
Apr 4 | Concurrency, part 4 | ||
Apr 9 | Stream I/O and Introduction to distributed system design, part 1 | Stream I/O example code | |
Apr 10 | Recitation: Concurrency | Assignment 5b: Framework implementation | |
Apr 11 | Distributed system design, part 2 | ||
Apr 16 | Distributed system design, part 3 | Assignment 5c: Framework plugin implementation | |
Apr 17 | Recitation: Distributed systems | ||
Apr 18 | No class - Carnival | ||
Apr 23 | Introduction to static analysis | ||
Apr 24 | Recitation: Static analysis | ||
Apr 25 | Static analysis, continued (see slides above) | ||
Apr 30 | Software Product Lines | ||
May 1 | Recitation: JSure | ||
May 2 | Data consistency and transactions | Assignment 6: Distributed systems and concurrency | |
May 13 | Final Exam: 5:30 - 8:30 p.m. |