Principles of Software Construction: Objects, Design, and ConcurrencyFall 2013Lecture: Tuesday/Thursday 3:00 - 4:20 p.m., Doherty Hall (DH) 2315 12 units Section A: Wednesday 9:30-10:20, Gates-Hillman (GHC) 4211 TA Beth Anne Katz, bkatz
[at] andrew [dot] cmu [dot] edu
Section B: Wednesday 10:30-11:20, Wean Hall (WEH) 5310TA: Alex Lockwood,
alockwoo [at] andrew [dot] cmu [dot] edu
Section C: Wednesday 11:30-12:20, Wean Hall (WEH) 5310
TA: Bailey Forrest, bcforres [at]
andrew [dot] cmu [dot] edu
Section D: Wednesday 12:30-1:20, Baker Hall (BH) 235B
TA: Shannon Lee, sjl1 [at]
andrew [dot] cmu [dot] edu
Section E: Wednesday 9:30-10:20, Porter Hall (PH) A20
TA: Mat Gray, mhgray [at]
andrew [dot] cmu [dot] edu
Section F: Wednesday 3:30-4:20, Porter Hall (PH) 226C
TA: Dan Lu, dylu [at]
andrew [dot] cmu [dot] edu
|
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 | |
Aug 27 | Course introduction and organization | |||
Aug 28 | Recitation: Git + Java warmup | |||
Aug 29 | Encapsulation, polymorphism, equality | |||
Sep 03 | Encapsulation and inheritance | Inheritance example code | Assignment 0: Java warmup | |
Sep 04 | Recitation: Java semantics | |||
Sep 05 | Inheritance (continued), typechecking, method dispatch | |||
Sep 10 | Object behavioral contracts and exceptions | Exceptions example code | Assignment 1: Objects and interfaces | |
Sep 11 | Recitation: Method dispatch and exceptions | |||
Sep 12 | Mutability, Java scope, static, and Generics | Various Java examples | ||
Sep 17 | Introduction to Design and Design Patterns | slides, PDF notes, text notes | ||
Sep 18 | Recitation: Exceptions and the Eclipse Java debugger | |||
Sep 19 | Specification and Unit testing | unit testing example | Assignment 2: Inheritance, virtual world | |
Sep 24 | Software design and testing. Case study: Java I/O | |||
Sep 25 | Recitation: Coffeeshop Design with Patterns | |||
Sep 26 | Conceptual Modeling in Design | Assignment 3: Specification and testing | ||
Oct 01 | Software design principles, continued | GRASP slides, Information hiding slides | ||
Oct 02 | Recitation: Software design | |||
Oct 03 | Design Structure Matrices, Introduction to GUIs | |||
Oct 08 | Software design case study: GUIs, continued | GUIdemo.java | Assignment 4a: Software design | |
Oct 09 | Recitation: Introduction to GUIs | |||
Oct 10 | Software design case study: Java collections | |||
Oct 15 | Midterm exam | Oct 16 | GUIs | |
Oct 17 | Formal Analysis (txt) | SimpleSet example (zip) | ||
Oct 22 | Formal Analysis, Continued; Frameworks | Assignment 4b: Scrabble with Stuff core implementation | ||
Oct 23 | Recitation: Formal analysis | |||
Oct 24 | Design case study: Frameworks, continued | |||
Oct 29 | Concurrency, part 1 | Sample concurrency code | Assignment 4c: Scrabble with Stuff full GUI implementation | |
Oct 30 | Recitation: Frameworks | |||
Oct 31 | Concurrency, part 2 | |||
Nov 05 | Concurrency, part 3 | Concurrency framework example code | Assignment 5a: Framework design | |
Nov 06 | Recitation: Framework design presentations | |||
Nov 07 | Distributed system design, part 1 | Java networking example code | ||
Nov 12 | Distributed system design, part 2 | Assignment 5b: Framework implementation | ||
Nov 13 | Recitation: Concurrency | |||
Nov 14 | Distributed system design, part 3 | |||
Nov 19 | Introduction to static analysis | Assignment 5c: Framework plugin implementation | ||
Nov 20 | Recitation: Distributed systems | |||
Nov 21 | Static analysis for concurrency | |||
Nov 26 | Data consistency and transactions | |||
Nov 27 | No recitation: Thanksgiving break | |||
Nov 28 | No class: Thanksgiving break | |||
Dec 03 | History and future of objects | |||
Dec 04 | Recitation: Static analysis | |||
Dec 05 | Significance of Objects and some OO research: Typestate and DSLs | Assignment 6: Distributed systems and concurrency | ||
Dec 09 | Final Exam, 8:30am-11:30am (GHC 4401) | Review sheet |