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

Principles of Software Construction: Objects, Design, and Concurrency

Fall 2013
Lecture: Tuesday/Thursday 3:00 - 4:20 p.m., Doherty Hall (DH) 2315
12 units

Section A: Wednesday 9:30-10:20, Gates-Hillman (GHC) 4211
TA Beth Anne Katz, bkatz [at] andrew [dot] cmu [dot] edu

Section B: Wednesday 10:30-11:20, Wean Hall (WEH) 5310
TA: Alex Lockwood, alockwoo [at] andrew [dot] cmu [dot] edu

Section C: Wednesday 11:30-12:20, Wean Hall (WEH) 5310
TA: Bailey Forrest, bcforres [at] andrew [dot] cmu [dot] edu

Section D: Wednesday 12:30-1:20, Baker Hall (BH) 235B
TA: Shannon Lee, sjl1 [at] andrew [dot] cmu [dot] edu

Section E: Wednesday 9:30-10:20, Porter Hall (PH) A20
TA: Mat Gray, mhgray [at] andrew [dot] cmu [dot] edu

Section F: Wednesday 3:30-4:20, Porter Hall (PH) 226C
TA: Dan Lu, dylu [at] andrew [dot] cmu [dot] edu


Office hours

Instructors

Professor Jonathan Aldrich
jonathan.aldrich@cs.cmu.edu
Wean 4216

Professor Charlie Garrod
charlie@cs.cmu.edu
Wean 5101

Both instructors have an 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 Piazza Site

Used for discussion groups

Course Help Topics

A few HowTos

Schedule of Topics, Readings, and Assignments

Below is the schedule of topics and lecture notes for the course. Assignments are due at 11:59 p.m. on their scheduled due date (unless otherwise indicated within the assignment document).

Date Topic Additional Notes/Code Assignment Due
Aug 27 Course introduction and organization
Aug 28 Recitation: Git + Java warmup
Aug 29 Encapsulation, polymorphism, equality
Sep 03 Encapsulation and inheritance Inheritance example code Assignment 0: Java warmup
Sep 04 Recitation: Java semantics
Sep 05 Inheritance (continued), typechecking, method dispatch
Sep 10 Object behavioral contracts and exceptions Exceptions example code Assignment 1: Objects and interfaces
Sep 11 Recitation: Method dispatch and exceptions
Sep 12 Mutability, Java scope, static, and Generics Various Java examples
Sep 17 Introduction to Design and Design Patterns slides, PDF notes, text notes
Sep 18 Recitation: Exceptions and the Eclipse Java debugger
Sep 19 Specification and Unit testing unit testing example Assignment 2: Inheritance, virtual world
Sep 24 Software design and testing. Case study: Java I/O
Sep 25 Recitation: Coffeeshop Design with Patterns
Sep 26 Conceptual Modeling in Design Assignment 3: Specification and testing
Oct 01 Software design principles, continued GRASP slides, Information hiding slides
Oct 02 Recitation: Software design
Oct 03 Design Structure Matrices, Introduction to GUIs
Oct 08 Software design case study: GUIs, continued GUIdemo.java Assignment 4a: Software design
Oct 09 Recitation: Introduction to GUIs
Oct 10 Software design case study: Java collections
Oct 15 Midterm exam
Oct 16 GUIs
Oct 17 Formal Analysis (txt) SimpleSet example (zip)
Oct 22 Formal Analysis, Continued; Frameworks Assignment 4b: Scrabble with Stuff core implementation
Oct 23 Recitation: Formal analysis
Oct 24 Design case study: Frameworks, continued
Oct 29 Concurrency, part 1 Sample concurrency code Assignment 4c: Scrabble with Stuff full GUI implementation
Oct 30 Recitation: Frameworks
Oct 31 Concurrency, part 2
Nov 05 Concurrency, part 3 Concurrency framework example code Assignment 5a: Framework design
Nov 06 Recitation: Framework design presentations
Nov 07 Distributed system design, part 1 Java networking example code
Nov 12 Distributed system design, part 2 Assignment 5b: Framework implementation
Nov 13 Recitation: Concurrency
Nov 14 Distributed system design, part 3
Nov 19 Introduction to static analysis Assignment 5c: Framework plugin implementation
Nov 20 Recitation: Distributed systems
Nov 21 Static analysis for concurrency
Nov 26 Data consistency and transactions
Nov 27 No recitation: Thanksgiving break
Nov 28 No class: Thanksgiving break
Dec 03 History and future of objects
Dec 04 Recitation: Static analysis
Dec 05 Significance of Objects and some OO research: Typestate and DSLs Assignment 6: Distributed systems and concurrency
Dec 09 Final Exam, 8:30am-11:30am (GHC 4401) Review sheet

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.