The University of Chicago
Department of Computer Science
CSPP 51050 Course Syllabus
Spring 2013
Instructor: Mark Shacklette
Office:
Ryerson 175
Office Hours: By Appt.
email: mark@cs.uchicago.edu
(read hourly or so)
mshack@post.harvard.edu (read hourly or
so)
Teaching staff:
Lead TA: Sean Laguna (slaguna [at] cs [dot] uchicago [dot] edu)
Office Hours: Wednesday 7:00pm – 8:30pm and Sunday 7:00pm – 8:30pm
CSPP Lab
Assistant TA: Maria Power (mpower at anl.gov or mpower at cs.uchicago.edu)
Office Hours: Tuesday 4pm – 5:30 and after class by appointment
CSPP Lab
Grader: Pete Ramirez ()
Course Home Page: http://www.cs.uchicago.edu/~mark/51050/
SUBJECT | COURSE | TITLE | TIME | BUILDING |
324 | 51050 | Object Oriented Architecture: Patterns, Technologies, Implementations | Tuesday, 5:30pm | Ryerson 251 |
I. TEXT AND MATERIALS
Texts: Required (Basic Knowledge of Java OR C++ is assumed)
Design Patterns, Gamma, et. al., Addison Wesley, 1995, ISBN: 0201633612
Object Oriented Analysis and Design, 3rd Ed., Grady Booch, Addison Wesley, 2007, ISBN: 020189551X
Pattern-Oriented Software Architecture: A System of Patterns, Buschmann, Meunier, et. al., Wiley, 1996, ISBN: 0471958697
The Design of Design: Essays From a Computer Scientist, Brooks, Addison-Wesley, 2010, ISBN: 0201362988
NASA Technical Memorandum: The Potential Application of the Blacboard Model of Problem Solving to Multidisciplinary Design (on the cluster at ~mark/pub/51050/RequiredReading)
NASA.Blackboard.Systems.pdf
Buschmann et. al., A Runtime Type Information System for C++, (Meta.Information.Protocol.RTTI.for.C++.ps available on the cluster at ~mark/pub/51050/RequiredReading)
Ramnivas Laddad, A Real-World Perspective of AOP (Real.World.AOP.pdf available on the cluster at ~mark/pub/51050/RequiredReading)
Adam Przybyłek, Where the Truth Lies: AOP and Its Impact on Software Modularity (Modularity.and.AOP.pdf available on the cluster at ~mark/pub/51050/RequiredReading)
Black, et. al. , Microkernel Operating System Architecture and Mach (Microkernel.Operating.System.Architecture.and.Mach.pdf available on the cluster at ~mark/pub/51050/RequiredReading)
QNX Neutrino OS System Architecture (Microkernel.System.Architecture.pdf available on the cluster at ~mark/pub/51050/RequiredReading)
Texts: Highly Recommended
Refactoring to Patterns, Kerievsky, Addison Wesley, 2004, ISBN: 0321213351
Texts: Recommended
CONTexts :
Developing Software with UML, Bernd Oesterich, Addison-Wesley, 1999, ISBN: 0201398265
Blackboard Systems, Englemore & Morgan, Addison-Wesley, 1988, ISBN: 0201174316
Building Enterprise Information
Architectures,
Melissa Cook, Prentice Hall, 1994, ISBN: 0134402561
Enterprise Service Oriented Architectures, McGovern, Sims, et. al., Springer 2006 ISBN: 140203704X
Developing Object Oriented Software,
OOTC, Prentice Hall, 1996, ISBN: 0137372485
Object-Oriented Software Engineering, Ivar Jacobson, Addison Wesley, 1992, ISBN: 0201544350
The Unified Modeling Language Reference Manual , James Rumbaugh et. al., Addison Wesley, 1991, ISBN: 020130998X
The Unified Software Development Process , Ivar Jacobson et. al., Addison Wesley, 1999, ISBN: 0201571692
Surviving Object-Oriented Projects, Alistair Cockburn, Addison Wesley, 1998, ISBN: 0201498340
UML Distilled, Martin Fowler et. al., Addison Wesley, 1999, ISBN: 0201325632
Software Architecture: Perspectives on an Emerging Discipline, Shaw & Garlan, Prentice Hall, 1996, ISBN: 0131829572
The Unified Modeling Language User Guide, 2nd ed , Grady Booch, et. al., Addison Wesley, 1999, ISBN: 0321267974
The Patterns Handbook, Linda Rising, ed., Cambridge, Cambridge University Press, 1998
Refactoring: Improving the Design of Existing Code, Martin Fowler, et. al., Addison Wesley, 1999, ISBN: 0201485672
Pattern Languages of Program Design, Vol. 1, James Coplien, DougSchmidt, Reading, Mass: Addison-Wesley, 1995
AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis, Brown, et. al., Wiley, 1998, ISBN: 0471197130
Object-Oriented Software Construction, Second Edition , Bertrand Meyer, Prentice Hall, 1997, ISBN: 0136291554
H. Penny Nii. Blackboard Systems. AI Magazine 7(3):38-53 and 7(4):82-107.
The Timeless Way of Building, Christopher Alexander, New York: Oxford, 1979
A Pattern Language, Christopher Alexander, et. al., New York: Oxford, 1977
Software Architecture: Perspectives on an Emerging Discipline, Shaw & Garlan, Prentice Hall, 1996, ISBN: 0131829572
Object Solutions, Grady Booch, Addison Wesley, 1996, ISBN: 0137372485
Developing Object Oriented Software, OOTC, Prentice Hall, 1996, ISBN: 0137372485
Object-Oriented Software Engineering, Ivar Jacobson, Addison Wesley, 1992, ISBN: 0201544350
The Unified Modeling Language Reference Manual , James Rumbaugh et. al., Addison Wesley, 1991, ISBN: 020130998X
UML Distilled, Martin Fowler et. al., Addison Wesley, 1999, ISBN: 0201325632
Object-Oriented Analysis and Design, Grady Booch, Benjamin Cummings, 1994, ISBN: 0805353402
Use Case Driven Object Modeling with UML
, Doug Rosenberg, et. al., BAddison Wesley, 1999, ISBN: 0201432897
Language Related Texts:
CLOS:
The Little Lisper, 3rd Ed., Daniel Friedman, et. al., Prentice Hall, 1998, ISBN: 0023397632
Java Precisely, Second Edition. Peter Sestoft, September 2005. MIT Press, ISBN: 0262693259
Land of Lisp: Learn to Program in Lisp, One Game at a Time!. Barski, 2010, No Starch Press, ISBN: 1593272812
Object-Oriented Programming in Common Lisp , Sonja Keene, Addison Wesley, 1989, ISBN: 0201175894
Practical Common Lisp, Peter Seibel, Apress, 2005, ISBN: 1590592395
ANSI Common Lisp., Paul Graham, Prentice Hall, 1996, ISBN: 0133708756
Common Lisp, Guy Steele, et. al., Digital Press, 1990, ISBN: 1555580416 (online version at:http://www.ida.liu.se/imported/cltl/cltl2.html )
Lisp: A Gentle Introduction to Symbolic Computation , David Touretzky, Harper & Rowl, 1984, ISBN: 006046657X
SMALLTALK:
On to Smalltalk, Patrick Winston, Addison-Wesley, 1998, ISBN: 0201498278
ANSI Common Lisp, Paul Graham., Prentice Hall, 1996, ISBN: 0133708756
Smalltalk, Objects, and Design, Chamond Liu, toExcel, 2000, ISBN: 1583484906
The Smalltalk Developer's Guide to VisualWorks , Tim Howard, et. al., Prentice Hall, 1995, ISBN: 013442526X
Smalltalk: An Introduction to Application Development Using VisualWorks, Trevor Hopkins, et. al., Prentice Hall, 1995, ISBN: 0133183874
Smalltalk by Example: The Developer's Guide
, Alec Sharp, McGraw Hill, 1997, ISBN: 0079130364
Smalltalk Best Practice Patterns, Kent Beck, Prentice Hall, 1996, ISBN: 013476904X
The Smalltalk Developer's Guide to VisualWorks , SIGS Books, 1995, ISBN: 1884842119
The Art of the Metaobject Protocol, Gregor Kiczales, MIT, 1991, ISBN: 0262610744
The Art and Science of Smalltalk: An Introduction to Object-Oriented Programming Using VisualWorks, Simon Lewis, Prentice Hall, 1995, ISBN: 0133713458
Smalltalk 80: The Language,Adele Goldberg and David Robson, Addison-Wesley, 1989, ISBN: 0201136880
JAVA:
Beginning Java 2 , Horton, Wrox Press, 1999, ISBN: 1861002238
Thinking in Java , Bruce Eckel, Prentice Hall, 1998, ISBN: 0136597238
Java I/O
, Harold, O'Reilly, 1999, ISBN: 1565924851
The Well-Grounded Java Developer, Evans et. al., Manning, 2012, ISBN: 1617290068
RUBY:
Eloquent Ruby, Olsen, Addison-Wesley, 2011, ISBN: 0321584104
Texts: Ready Reserve Reading List (available in Eckhart Library)
Patterns in Software: Tales from the Software
Community, Richard Gabriel, Oxford, 1998, ISBN: 0195121236
II. PREREQUISITE:
Basic familiarity with one object oriented language (e.g., Java, C#, C++, python, ruby) will be assumed. Basic familiarity with UML will be assumed.
III. COURSE DESCRIPTION
See main course page.
IV. LEARNING OBJECTIVES
This course will enable students to:
A. Recognize and define design and architectural patterns
in current common industry use
B. Create code implementations of these patterns
C. Be able to discuss implementation trade-offs of certain
patterns with respect to others
D. Provide further assisted learning in object oriented
languages
E. Understand and be able to implement common code refactorings
V. ACADEMIC INTEGRITY
Students are expected to have read and understood the University's policy
on Academic Integrity. This policy is detailed in the Student Manual of University
Policies and Regulations, available online at http://www.uchicago.edu/student/manual/academic_honesty.html.
VI. METHOD OF INSTRUCTION
Methods include lecture and homework assignments. All work will be
submitted using Subversion, a version-control system that allows us to
easily view files and folders that you create. You will not have to
e-mail your files to the instructor, TAs, or grader, or even submit
them online. Read this page in order to learn about how all of this will work.
VII. OTHER COURSE INFORMATION
Attendance:
No formal attendance taken. There may be information presented in class that is not in the texts. You will find the lectures helpful in doing the laboratory exercises.
Make-up Work:
If you miss a lab deliverable, you will need to speak with the instructor ASAP (meaning within 2 days) .
Students are expected to read the assigned texts before class in order
to be able to full participate in the discussions and lab activities.
VIII. METHOD OF EVALUATING STUDENT PROGRESS
Assigned work evaluated as follows:
Final
Project:
34 points
3 Lab Deliverables:
30 points (10 points each)
4 Homework Assignments: 16 points (4 points each)
Final Exam:
20 points
Course Total: 100 pts
Grading scale: 90-100 = A; 80 -89 = B; 70-79=C, etc.
Homework assigned will be graded on a 4-point basis. Lab Deliverables will be graded on a 10-point basis. Lab deliverable due dates are noted on the syllabus schedule. All labs and homework are due by 5:00 pm on the due date.
All assignments are due as
specified on this syllabus and supporting lab pages. Students who
turn in lab assignments late,
regardless of the reason, will receive 2 points off from the first day
the assignment is due (calculated as the first 24 hour period following
the due date and time), and point loss will continue until there are no
more points available to subtract (after 5 days). Lab
Assignments will not be
accepted after 10 days and the student will receive a 0 on the
assignment. For example, if you turn in a Lab Assignment 3 days
late, you will lose 6 out of 10 points before grading begins.
Students who turn in homework assignments late, regardless of the reason, will receive 1 point off from the first day the assignment is due (calculated as the first 24 hour period following the due date and time), and point loss will continue until there are no more points available to subtract (after 4 days). Homework Assignments will not be accepted after 4 days and the student will receive a 0 on the assignment. For example, if you turn in a Lab Assignment 3 days late, you will lose 3 out of 4 points before grading begins.
ALL late deliveries, regardless of cause, including, but not limited to, acts of God, war, riot, embargoes, acts of civil or military authority, terrorism, fire, flood, tsumami, earthquakes, hurricanes, typhoons, tropical storms or other natural disasters, fiber cuts, strikes, shortages in transportation, facilities, fuel, energy, labor or materials, failure of the telecommunications or information services infrastructure, hacking, SPAM, or any failure of a computer, server or software, including Y2K errors or omissions, the common cold, the flu, asthema, stomach flu, work, work travel, family, childcare, golf, badminton, cricket, croquet, dodgeball, football (soccer), lacrosse, other sporting events, vacation, and other life-related exigencies and necessities, while fortunate or unfortunate as the case may be, will still incur the penalty. It is assumed that you will have plenty of time to work on each assignment, and that an individual penalty or two will have little overall effect on a student's final grade, unless lateness is chronic or other grades are poor, in which case, of course, the penalty will be more cumbersome. If you are late with a delivery and therefore receive a penalty (which you will if you are late for any reason) and it's an isolated incident and the rest of your work is excellent, the penalty should be innocuous.
The course project will be due the final day of class for graduating students on June 4th, 2013, on June 4th or June 11th, 2013 for non-graduating students (you will be informed on which date your project is due).
NB: The end of the quarter is the time at which the final grade you have earned through your work in the quarter is recorded with the registrar. It is not the time at which you begin negotiations with Professor Shacklette for ad hoc extra credit opportunities. There is no extra credit offered in this course, either at the beginning or at the end. If you are disatisfied with the grade you have earned at the end of the quarter, your only options will be to retake the course the next time it is offered, or accept the grade you earned.
The instructor reserves the right to alter the course contents, dates,
times or percentage of credit based on time allowed and class progress through
the course material. The instructor also reserves the right to curve grades
if he deems it in the best interest of the majority of students.
IX. COURSE SCHEDULE
NB: The Instructor reserves the right to alter the schedule as class progress dictates.
The following abbreviations reference the following works:
Abbreviation | Text |
Buschmann | Pattern-Oriented Software Architecture |
NASA* | NASA
Technical Memorandum: The Potential Application of the Blackboard
Model of Problem Solving to Multidisciplinary Design, July, 1989 |
Booch |
Object Oriented Analysis and Design, 3rd Ed. |
Brooks | The Design of Design |
Gamma | Design Patterns |
Gabriel | Patterns in Software |
Buschmann et. al.* | A Runtime Type Information System for C++ |
Przybyłek* | Where the Truth Lies: AOP and Its Impact on Software Modularity |
Laddad* | A Real-World Perspective of AOP |
Black* |
Microkernel Operating System Architecture and Mach |
QNX* |
QNX Neutrino OS System Architecture |
Dijkstra* |
Notes on Structured Programming
Dijkstra.Structured.Programming.pdf |
*Articles starred may be found on the cluster under my pub directory under required.reading
Class/Date | Lecture Topics | Required Reading Schedule | Homework (due one week after assignment) |
Class 1 April 2 |
Introduction to Object Oriented Architecture, Design, and Patterns Introduction to Design Patterns |
Gamma: chapters 1 & 2 Booch: chapters 1-4 |
No Homework assigned |
Class 2 April 9 |
Review of OO Fundamentals: Abstraction, Inheritance |
Booch: chapters 5, Appendix A Dijkstra |
Setup: (click for Smalltalk
or Lisp
). Read Using Subversion to Submit Work, and complete Homework 0. |
Class 3 April 16 |
Review of OO Fundamentals: The Class and Object Models Composition, Aspect Oriented Programming Design Patterns: Singleton and Template Method |
Gamma: Singleton, Template Method Przybyłek, Laddad |
Singleton and Template Method in language(s) of choice Homework 1 |
Class 4 April 23 |
Polymorphism Design Patterns: Composite, Iterator, Visitor, Class & Object Adapter, State, Abstract Factory, Bridge |
Gabriel: pp. v-xviii; 3-31, 33-55. Gamma: Composite, Iterator, Visitor, Class & Object Adapter, State, Abstract Factory, Bridge |
Composite, Visitor and Iterator in language of choice Lab Deliverable 1 Assigned |
Class 5 April 30 |
Introduction to Architectural Patterns Architectural Patterns: Pipes and Filters, Publish-Subscribe & Message Queues |
Buschmann: Publish-Subscribe, Message Queues, Pipes & Filters Gabriel: pp. 57-95 |
Message Queues, Pipes and Filters in language of choice in Homework 2 |
Class 6 May 7 |
Architectural Patterns: Broker & CORBA | Buschmann: Broker
Gamma: Proxy Gabriel: pp. 135-138 |
Broker in language of choice Lab Deliverable 1 Due Lab Deliverable 2 Assigned |
Class 7 May 14 |
Architectural Patterns: Layers, Facade, Microkernel Design Patterns: Strategy |
Buschmann: Layers, Microkernel, Facade, Layers Buschmann et. al., A Runtime Type Information System for C++ Black, QNX |
Homework
3 Layers, Facade, Strategy |
Class 8 May 21 |
Architectural Patterns: Blackboard, Reflection & MVC Final Project Proposal Review (11:00 pm, May 22nd) |
Buschmann: Blackboard, MVC, Reflection NASA Booch: Chapter 10 Gabriel: pp. 99-131 |
Lab Deliverable
3 Assigned MVC in language of choice in Homework 4 Homework 3 Due |
Class 9 May 28 |
Thinking about Design Thinking |
Brooks, Chapters 1-3; 8, 11-15; 19-21; 24 |
No Homework assigned Lab Deliverable 2 Due |
Class 10 June 4 |
Final Exam: 5:30 - 6:30 PM Final Project Review for graduating students and selected non-graduating students: 6:30 - 9:30 PM |
||
Class 11 June 11 |
Final Project Review for non-graduating students: 5:30 - 8:30 PM |
Lab Deliverable 3 Due Saturday, June 15th 11:59 PM Homework 4 Due Friday, June 14th 11:59 PM |