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

Principles of Software System Construction

Fall 2011
Lecture: Tuesday/Thursday 12:00-1:20, Doherty 1212
12 units

Section: Monday 4:30-5:20, Wean 4220
(sections offered at alternate times by request)

Professor Jonathan Aldrich
jonathan.aldrich@cs.cmu.edu
Open Door Policy: If my office door, Wean 4128, is open and no-one else is meeting with me, I am happy to answer any course-related questions
For appointments, email me
TA Andrew Chang
afchang [at] andrew
Office Hours: Wednesday 1:30-3:30, basement of Hunt Library

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

Used for announcements, discussion groups, assignment hand-in, and grades


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


Date
Topic
Notes
Assignment
Introduction
Aug 30
Course Introduction; Concept of Objects
01-intro.pdf; HelloWorld.java

Objects
Aug 31
Recitation: Java Warmup


Sep 1
Graphs and their Interfaces

Sep 5
Labor day - no section


Sep 6
Classes: Graph Implementation

Assignment 0: Java Warmup
Sep 8
Reasoning about Objects


Sep 12
Recitation: More Java, JUnit, and Assertions


Sep 13
Interface Hierarchy, Behavioral Subtyping
account.zip

Sep 15 Reuse with Interfaces and Inheritance

Assignment 1: Social Graphs at Facelook (part 1)
Sep 19
Recitation: Inheritance


Sep 20
Reuse with Inheritance in Java Collections
collections.zip
Assignment 1: Social Graphs at Facelook (part 2)
Sep 22 Inheritance and Dispatch Semantics
method-dispatch.pdf, dispatch-exercize.zip

Sep 26
Recitation: Design Practice with Inheritance


Sep 27 Graphical User Interfaces with Swing
09-swing.pdf

Sep 29 I/O and streams

Assignment 2: Objects in a Virtual Environment
Oct 3
Recitation: Coding GUIs


Design
Oct 4
Design: patterns introduction
11-design-patterns.pdf

Oct 6
Design: more patterns
Assignment 3: Graphical User Interface
Oct 10
Recitation: Design patterns exercise


Oct 11
Design: principles behind the patterns

Oct 13 Design: patterns into systems


Oct 17
Recitation: Pattern presentations
Assignment 4: Pattern Mining
Oct 18 Midterm Review

Oct 20
Midterm exam


Concurrency and Advanced Design
Oct 24
Recitation:

Oct 25 Concurrency: introduction (WLS)

Oct 27 Concurrency: approaches (WLS)

Oct 31
Recitation: Concurrency exercise 1


Nov 1
Frameworks
19-frameworks.pdf

Nov 3
Frameworks, continued

Assignment 5: Structured Concurrency

Nov 7
Recitation: Frameworks


Nov 8
no class


Nov 10 Concurrency: sharing and data structures (WLS)
Assignment 6: Framework Design
Nov 14
Recitation: Concurrency exercise 2


Analysis
Nov 15 Concurrency: algorithms and data structures (WLS)
Assignment 7: Design Review
Nov 17 Concurrency: algorithms and data structures 2 (WLS)

Nov 21
Recitation: Framework Design presentations
Assignment 8: Framework Implemented
Nov 22
Static analysis introduction
static-analysis.pdf

Nov 28
Recitation: Static Analysis


Nov 29
Static analysis for concurrency analysis-concurrency.pdf

Dec 1
Distributed Systems
network-examples.zip
Assignment 9: Framework Plugins Implementation and Analysis
Dec 5
Recitation: Framework Plugin presentations


Wrap-up
Dec 6
Final exam review / Dynamic analysis for concurrency (WLS)

Dec 8
Course summary
Assignment 10: Unstructured Concurrency, Distribution, and Analysis
Dec 15
Final Exam (1-4pm, GHC 4211)


Possible Additional Topics

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.