15-214: Threads,
              Objects, Analysis, Design (TOAD)

Principles of Software Construction: Objects, Design, and Concurrency

Spring 2013
Lecture: 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) 5310
TA: 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

Instructors

Professor Christian Kästner
kaestner@cs.cmu.edu
Office Hours: Thursdays 4:30 - 5:30 p.m. in Wean 5122 (except Feb 28)

Professor Charlie Garrod
charlie@cs.cmu.edu
Office Hours: Fridays 1:30 - 3 p.m. in Wean 5101

Open Door Policy: If either of the instructors' office doors are open and no-one else is meeting with us, we are happy to answer any course-related questions.  For appointments, email the instructors.

Course Syllabus and Policies

Covers course overview and objectives, evaluation, time management, late work policy, and collaboration policy

Textbooks

Required text:
Optional references by topic:
The physical books above have all been requested to be on reserve in the Engineering and Science Library.

Course Piazza Site

Used for discussion groups

Course Help Topics

A few HowTos

Schedule of Topics, Readings, and Assignments

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.

Acknowledgments

The 15-214 Toad is from a picture by Coneheadthebarbarian, and is available under the Creative Commons Attribute-Share Alike 3.0 Unported license.