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


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

Aug 30
Course Introduction; Concept of Objects
01-intro.pdf; HelloWorld.java

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

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

Sep 29 I/O and streams

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

Oct 4
Design: patterns introduction

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

Oct 25 Concurrency: introduction (WLS)

Oct 27 Concurrency: approaches (WLS)

Oct 31
Recitation: Concurrency exercise 1

Nov 1

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

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

Nov 28
Recitation: Static Analysis

Nov 29
Static analysis for concurrency analysis-concurrency.pdf

Dec 1
Distributed Systems
Assignment 9: Framework Plugins Implementation and Analysis
Dec 5
Recitation: Framework Plugin presentations

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


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