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

Principles of Software Construction: Objects, Design, and Concurrency

Fall 2012
Lecture: Tuesday/Thursday 3:00-4:20, Hamburg Hall (HBH) 1000
12 units

Section A: Wednesday 9:30-10:20, Wean Hall (WEH) 5310
TA Patrick Woody, pwoody [at] andrew [dot] cmu [dot] edu, Office Hours: Tuesdays 4:30-6:00
Section B: Wednesday 10:30-11:20, Wean Hall (WEH) 5310
TA: YoungSeok Yoon, youngseok [at] cs [dot] cmu [dot] edu, Office Hours: Mondays 1:30 - 3 in GHC 4126
Section C: Wednesday 11:30-12:20, Wean Hall (WEH) 5310
TA: Alex Duda, aduda [at] andrew [dot] cmu [dot] edu, Office Hours: Wednesdays 4:30 - 6
Section D: Wednesday 12:30-1:20, Wean Hall (WEH) 5310
TA: Saagar Sethi, tba [at] andrew [dot] cmu [dot] edu, Office Hours: Sundays 2 - 3:30
Cross-section TA: Ivan Ruchkin, iruchkin [at] andrew [dot] cmu [dot] edu
Office Hours at WEH 4126: Thursdays 10:00 - 11:30
Lab: Monday at 9:30, 10:30, 11:30, and 12:30 Gates Hillman Center (GHC) 5201

Professor Jonathan Aldrich
Office Hours TBD in Wean 4128

Professor Charlie Garrod
Office Hours Fridays 1:15 - 2:45 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


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

Exams: Midterm-Spring-2012 (Solution)

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 final exam

Additional Notes/Code
Aug 28
Course Introduction; Concept of Objects

Aug 29
Recitation: Java Warmup
Recitation 1.zip

Aug 30
Objects, Interfaces, Equality, and Exceptions
Worksheet - Objects and Dispatch

Sep 3 Labor Day - no lab

Sep 4
Java Semantics
03 examples.zip
Assignment0: Java Warmup
Sep 5
Recitation: Java Semantics and JUnit

Sep 6
Packages and Polymorphism
04 examples.zip

Sep 10
Lab: JUnit and Debugging

Sep 11
Polymorphism and Typechecking

Assignment 1: Objects and Interfaces (part 1)
Sep 12
Recitation: UML, Typechecking and Inheritance

Sep 13
Object Contracts, Equality, and Type Polymorphism
06 examples.zip
Assignment 1: Objects and Interfaces (part 2)
Sep 17
Lab:Virtual World Introduction

Sep 18
Correctness and Invariants

Sep 19
Recitation: Design with Inheritance, Dispatch practice

Sep 20
Correctness and Invariants, continued
Assignment 2: Inheritance (part 1)
Sep 24
Help session in lab (no lab assignment)

Sep 25
ESC/Java Extended Static Checking for Java;
Multiply.java; Multiply-full.java;
Assignment 2: Inheritance (part 2)
Sep 26
Recitation: Invariant practice

Sep 27
Design: patterns introduction

Oct 1
Lab: ESC/Java

Oct 2
Design: more patterns (notes as above)

Oct 3
Recitation: Design patterns exercise

Oct 4
Design: principles behind the patterns (notes as above)
Assignment 3: Formal Reasoning and ESC/Java
Oct 8
Lab: Design patterns exercise

Oct 9
GUIs with Swing

Oct 10
Recitation: Pattern presentations

Oct 11

Assignment 4: Pattern Mining
Oct 15
Lab: GUI exercise

Oct 16
Frameworks, continued (notes as above)

Oct 17
Recitation: Midterm review

Oct 18
Midterm exam

Concurrency and Advanced Design
Oct 22
Lab: GUI homework help

Oct 23
Java Collections
Assignment 5: GUIs
Oct 24
Recitation: Midterm recap

Oct 26
Java Stream I/O
Java Networking examples

Oct 29
Lab: API design help

Oct 30 Concurrency
Concurrency example.zip
Assignment 6a: Framework design
Oct 31 Recitation: API design presentations

Nov 1 Concurrency, part 2

Nov 5
Lab: API implementation help

Nov 6
Introduction to Static Analysis

Nov 7
Recitation: Framework implementation presentations

Assignment 6b: Framework implementation
Nov 8
Static analysis for concurrent programs

Nov 12
Lab: concurrency

Nov 13
Concurrency: algorithms and data structures
Assignment 6c: Framework plugin implementation (part 1)
Nov 14
Recitation: concurrency

Nov 15
Concurrency: Java's concurrency framework
Concurrency framework examples
Assignment 6c: Framework plugin implementation (part 2)
Nov 19
Lab: JSure

Nov 20
Product lines

Assignment 7: simple concurrency
Nov 21
No recitation - Thanksgiving holiday

Nov 22
No class - Thanksgiving holiday

Nov 26
Lab: Optional homework help

Nov 27
Distributed System Design, part 1

Nov 28
Recitation: Distributed systems

Nov 29
Distributed System Design, part 2

Assignment 8: Concurrency and JSure
Dec 3
Lab: Distributed Systems

Dec 4
Data consistency

Dec 5
Recitation: Final exam review

Dec 6
History and Future of Objects

Assignment 9: Distribution
Dec 17
5:30-8:30pm Final Exam


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