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
jonathan.aldrich@cs.cmu.edu
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

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


Date
Topic (some links require WebISO)
Additional Notes/Code
Assignment
Introduction
Jan 17
Course Introduction; Concept of Objects


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

notes
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;
SimpleSet.javaSimpleSet-full.java

Feb 15
Recitation: Invariant practice

demo code

Design
Feb 16
Design: patterns introduction


Feb 20
Lab: ESC/Java


Feb 21
Design: more patterns (notes as above)


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


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


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
Frameworks

Mar 21
Recitation: midterm review


Mar 22
Framework design (notes as above)


Mar 26
Lab:

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



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.