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

Principles of Software Construction: Objects, Design, and Concurrency

Spring 2012
Lecture: 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) 5310
TA: 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) 5205
TA: Anish Phophaliya, aphophal [at] andrew [dot] cmu [dot] edu, Office Hours: Fridays 12.30pm-1.30pm at GHC 4122

Professor Jonathan Aldrich
Office Hours Tuesday 2:30-3:20 (right before class) in Wean 4128

Professor William Scherlis
wls [at] cs [dot] cmu [dot] edu

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


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 FrontDesk Site

Used for assignment hand-in and grades

Course Piazza Site

Used for discussion groups

Course Help Topics

A few HowTos

Exams: Midterm-Spring-2012 (Solution), Final-Fall-2011(WARNING: this semester's final will be LONGER and include ALL topics)

Schedule of Topics, Readings, and Assignments

A review sheet with things you should know and questions you should be able to answer is available for the midterm and final exams

Topic (some links require WebISO)
Additional Notes/Code
Jan 17
Course Introduction; Concept of 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

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;

Feb 15
Recitation: Invariant practice

demo code

Feb 16
Design: patterns introduction

Feb 20
Lab: ESC/Java

Feb 21
Design: more patterns (notes as above)

Feb 22
Recitation: Design patterns exercise
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

Feb 29
Recitation: Pattern presentations
Assignment 4: Pattern Mining
Mar 1

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

Mar 21
Recitation: midterm review

Mar 22
Framework design (notes as above)

Mar 26

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


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