15-214: Threads, Objects, Analysis, Design (TOAD)
Principles of Software Construction: Objects, Design,
and Concurrency
Spring 2013
Lecture: Tuesday/Thursday 3:00 - 4:20 p.m., Porter Hall (PH) 100
12 units
Section A: Wednesday 9:30-10:20, Wean Hall (WEH) 5310
TA Daniel Lu, dylu
[at] andrew [dot] cmu [dot] edu, Office Hours: Wednesdays 4:30 - 6 p.m. in the Gates 4100 corridor
Section B: Wednesday 10:30-11:20, Wean Hall (WEH) 5310
TA: Alex Lockwood,
alockwoo [at] andrew [dot] cmu [dot] edu, Office Hours:
Sundays at 8 - 10 p.m. in the Gates 4100 corridor
Section C: Wednesday 11:30-12:20, Wean Hall (WEH) 5310
TA: Shannon Lee, sjl1 [at]
andrew [dot] cmu [dot] edu, Office Hours: Mondays 6:30 - 8 p.m. in the Gates 4100 corridor
Section D: Wednesday 12:30-1:20, Wean Hall (WEH) 5310
TA: Michael Maass, mmaass [at]
cs [dot] cmu [dot] edu, Office Hours: Tuesdays 4:30 - 6 p.m. in Wean 5317
Instructors
Professor
Christian Kästner
Professor
Charlie Garrod
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.
Covers course overview and objectives, evaluation, time management,
late work policy, and collaboration policy
Textbooks
Required text:
Optional references by topic:
- Design Patterns
- Design Patterns:
Elements of Reusable Object-Oriented Software
- This is an excellent
book, but more of a reference text than the Design
Patterns Explained book. In addition, because it was
the original patterns book, the examples are in C++ and
Smalltalk, not Java
- Concurrency
- Java Concurrency in Practice
- Excellent book on
concurrency in Java
- The Art of Multiprocessor Programming
- An excellent, more
general book on parallel programming
- Java
- Note: Here are some
popular textbook and online resources for learning
Java. I have not looked at them in enough detail to
specifically recommend one over the others.
- Head First Java (available physically and electronically in
the CMU libraries)
- Introduction to Java Programming (the Comprehensive version
has the benefit of covering threads too)
- Introduction to
Programming Using Java (free online textbook)
- Blue Pelican Java
(free online textbook)
The physical books above have all been requested to be on reserve in
the Engineering and Science Library.
Used for discussion groups
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
Jan 16
Recitation: SVN + Java Warmup
Jan 23
Recitation: Java Semantics
Jan 24
Packages and inheritance (continued), typechecking, method dispatch
Jan 30
Recitation: Method dispatch and exceptions
Feb 6
Recitation: Exceptions and the Eclipse Java debugger
Feb 13
Recitation: Formal reasoning and testing
Feb 20
Recitation: Software design with GRASP
Feb 21
Software Design 4 (Design Patterns, continued)
Assignment 3: Formal reasoning and testing
Feb 27
Recitation: Design pattern mining
Mar 5
Midterm exam
Mar 6
Recitation: Midterm recap and GUIs with Swing
Mar 12
No class - Spring Break
Mar 13
No recitation - Spring Break
Mar 14
No class - Spring Break
Mar 20
Recitation: GUIs
Mar 21
More frameworks (notes as above)
Mar 27
Recitation: Frameworks
Apr 3
Recitation: API design presentations
Assignment 5a: Framework design
Apr 10
Recitation: Concurrency
Assignment 5b: Framework implementation
Apr 17
Recitation: Distributed systems
Apr 18
No class - Carnival
Apr 24
Recitation: Static analysis
Apr 25
Static analysis, continued (see slides above)
May 1
Recitation: JSure
May 13
Final Exam: 5:30 - 8:30 p.m.
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.