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
- Sunday 8 - 10 p.m.: Mat Gray in the GHC 4100 corridor.
- Monday 8 - 10 p.m.: Shannon Lee in the GHC 4100 corridor.
- Tuesday 6 - 8 p.m.: Dan Lu in the GHC 4100 corridor.
- Tuesday 8 - 10 p.m.: Alex Lockwood in the GHC 4100 corridor.
- Wednesday 2:30 - 3:30 p.m.: Jonathan Aldrich in Wean 4216.
- Wednesday 6 - 8 p.m.: Bailey Forrest in the GHC 4100 corridor.
- Thursday 7 - 9 p.m.: Beth Anne Katz in the GHC 4100 corridor.
- Friday 1:30 - 3 p.m.: Charlie Garrod in Wean 5101.
Instructors
Professor
Jonathan Aldrich
Professor
Charlie Garrod
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.
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
Aug 28
Recitation: Git + Java warmup
Sep 04
Recitation: Java semantics
Sep 11
Recitation: Method dispatch and exceptions
Sep 18
Recitation: Exceptions and the Eclipse Java debugger
Sep 25
Recitation: Coffeeshop Design with Patterns
Oct 02
Recitation: Software design
Oct 09
Recitation: Introduction to GUIs
Oct 15
Midterm exam
Oct 16
GUIs