15-214: Threads, Objects, Analysis, Design (TOAD)
Principles of Software Construction: Objects, Design,
and Concurrency
Fall 2012
Lecture: Tuesday/Thursday 3:00-4:20, Hamburg Hall (HBH) 1000
12 units
Section A: Wednesday 9:30-10:20, Wean Hall (WEH) 5310
TA Patrick Woody, pwoody
[at] andrew [dot] cmu [dot] edu, Office Hours: Tuesdays
4:30-6:00
Section B: Wednesday 10:30-11:20, Wean Hall (WEH) 5310
TA: YoungSeok Yoon,
youngseok [at] cs [dot] cmu [dot] edu, Office Hours:
Mondays 1:30 - 3 in GHC 4126
Section C: Wednesday 11:30-12:20, Wean Hall (WEH) 5310
TA: Alex Duda, aduda [at]
andrew [dot] cmu [dot] edu, Office Hours: Wednesdays 4:30
- 6
Section D: Wednesday 12:30-1:20, Wean Hall (WEH) 5310
TA: Saagar Sethi, tba [at]
andrew [dot] cmu [dot] edu, Office Hours: Sundays 2 - 3:30
Cross-section TA: Ivan Ruchkin, iruchkin [at] andrew [dot]
cmu [dot] edu
Office Hours at WEH 4126:
Thursdays 10:00 - 11:30
Lab: Monday at 9:30, 10:30, 11:30, and 12:30 Gates Hillman
Center (GHC) 5201
Professor
Jonathan Aldrich
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
A
review sheet with things
you should know and questions you should be able to answer is
available for the final exam
Date
Topic
Additional Notes/Code
Assignment
Introduction
Objects
Sep 3
Labor Day - no lab
Sep 5
Recitation: Java Semantics and JUnit
Sep 10
Lab: JUnit and Debugging
Sep 12
Recitation: UML, Typechecking and
Inheritance
Sep 17
Lab:Virtual World Introduction
Sep 19
Recitation: Design with Inheritance,
Dispatch practice
Sep 24
Help session in lab (no lab assignment)
Sep 26
Recitation: Invariant practice
Design
Oct 1
Lab: ESC/Java
Oct 2
Design: more patterns (notes
as above)
Oct 3
Recitation: Design patterns exercise
Oct 4
Design: principles behind the
patterns (notes as above)
Assignment 3: Formal
Reasoning and ESC/Java
Oct 8
Lab: Design patterns exercise
Oct 10
Recitation: Pattern presentations
Oct 15
Lab: GUI exercise
Oct 16
Frameworks, continued (notes
as above)
Oct 17
Recitation: Midterm review
Oct 18
Midterm exam
Concurrency and Advanced Design
Oct 22
Lab: GUI homework help
Oct 24
Recitation: Midterm recap
Oct 29
Lab: API design help
Oct 31
Recitation: API design presentations
Nov 5
Lab: API implementation help
Nov 7
Recitation:
Framework implementation presentations
Assignment 6b: Framework
implementation
Nov 12
Lab: concurrency
Nov 14
Recitation:
concurrency
Nov 19
Lab: JSure
Nov 21
No recitation - Thanksgiving holiday
Nov 22
No class - Thanksgiving holiday
Nov 26
Lab: Optional homework help
Nov 28
Recitation: Distributed systems
Dec 3
Lab: Distributed Systems
Dec 5
Recitation: Final exam review
Dec 17
5:30-8:30pm Final Exam
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.