The University of Chicago
Department of Computer Science
MPCS 51410 Course Syllabus
Winter 2018
Instructor: Mark
Shacklette
Office:
Young 208B
Office Hours: Tuesday 3:30 - 5:00 pm (please set up appointment as location may vary)
email: mark (at) cs
(read hourly or so)
mshack (at)
post.harvard.edu
(read hourly or so)
Teaching staff:
Lead TA: Paul Bossi
Office:
T.B.D.
Office Hours: T.B.D.
email: T.B.D.
Grader: John Hadidian-Baugher
Office:
T.B.D.
Office Hours: T.B.D.
email: T.B.D.
SUBJECT | COURSE | TITLE | TIME | BUILDING |
324 | 51410 | Object Oriented Programming |
5:30 - 8:50 Tuesday | Ryerson 277 |
Texts: Required
Foundations of Object-Oriented Languages: Types and Semantics, Kim Bruce, MIT, 2002, ISBN: 026202523X
Practical Object-Oriented Design in Ruby: An Agile Primer, Sandi Metz, Upper Saddle River, NJ: Addison-Wesley, 2013, ISBN: 9780321721334
Design Patterns, Gamma, et. al., Addison Wesley, 1995, ISBN: 0201633612
Domain-Driven Design: Tackling Complexity in the Heart of Software, Eric Evans, Addison-Wesley, 2004, ISBN: 0321125215
Texts: Highly Recommended (depending on an individual student's interests)
Reactive Programming with RxJava, Nurkiewicz & Christensen, O'Reilly, 2016, ISBN: 9781491931653
The Object Primer, Scott Ambler, Cambridge, 2004, ISBN: 0521540186
CODE Complete: A Practical Handbook of Software Construction. 2nd ed., Steve McConnell, Redmond, WA: Microsoft Press, 2004
Object Oriented Analysis and Design, 3rd Ed., Grady Booch, Addison Wesley, 2007, ISBN: 020189551X
Object Design: Roles, Responsibilities, and Collaborations, Wirfs-Brock, McKean, Addison Wesley, 2003 ISBN: 0201379430
Growing Object-Oriented Software, Guided by Tests, Freeman and Pryce, Addison Wesley, 2010 ISBN: 0321503626
Texts: Recommended
Developing Software with UML, Bernd Oesterich, Addison-Wesley, 1999, ISBN: 0201398265
Modern C++ Design, Andrei Alexandrescu, Addison-Wesley, 2001, ISBN: 0201704315
Building Enterprise Information
Architectures,
Melissa Cook, Prentice Hall, 1994, ISBN: 0134402561
Developing Object Oriented Software,
OOTC, Prentice Hall, 1996, ISBN: 0137372485
Does IT Matter?, Carr, HBS Press,
2004, ISBN: 1591394449
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
Use Case Driven Object Modeling with UML, Doug Rosenberg, et. al., Addison Wesley, 1999, ISBN: 0201432897
Object Oriented Design & Patterns,
Cay Horstmann, Wiley, 2004 ISBN: 047131966X
Agile Modeling: Effective Practices
for
Extreme Programming and the Unified Process, Scott Ambler,
Wiley, 2002 ISBN: 0471202827
Agile Software Development:
Principles,
Patterns, and Practices, Robert Martin, Prentice Hall, 2003
ISBN: 0135974445
The CRC Card Book, Bellin
&
Simone, Addison Wesley, 1997 ISBN: 0201895358
Agile Software Development,
Alistair Cockburn, Addison Wesley, 2002 ISBN: 020169969
Use Cases: Patterns and Blueprints,
Overgaard and Palmkvist, Addison Wesley, 2005 ISBN: 0131451340
Texts: Ready Reserve Reading List (articles avaliable
online--here are instructions for
accessing online)
The Timeless Way of Building, Christopher Alexander, New York: Oxford, 1979
A Pattern Language, Christopher Alexander, et. al., New York: Oxford, 1977
The Categories and On Interpretation, Aristotle, Cambridge: Harvard 1938
The Parts of Animals, Aristotle, Cambridge: Harvard 1937
The Mythical Man Month, Fred Brooks, Reading, Mass: Addison-Wesley 1975
Pattern Languages of Program Design, Vol. 1, James Coplien, DougSchmidt, Reading, Mass: Addison-Wesley, 1995
Object-Oriented Design Heuristics, Arthur Riel, Reading, Mass: Addison-Wesley, 1996
Object Oriented Analysis and Design with Applications, 2nd ed., Grady Booch, Redwood City, Calif: Benjamin Cummings, 1994
The Patterns Handbook, Linda Rising, ed., Cambridge, Cambridge University Press, 1998
David Garlan, Robert Allen, and John Ockerbloom. Architectural Mismatch, or Why its hard to build systems out existing parts. Proc Seventeenth International Conf on Software Engineering (ICSE-17), April 1995.
II. PREREQUISITE:
Obviously,
exposure to an Object-Oriented Programming Language such as Java, C++, C#, Objective-C/Swift, python, Scala, Smalltalk/Squeak,
Common Lisp Object System (CLOS), Ruby, or Eiffel
would be helpful, but it is not required. Although one of our
texts implies Ruby, the code snippets are simple enough to be
understood by anyone with basic knowledge of any OO language such as
Java, python, etc.
III. COURSE DESCRIPTION
This course concentrates on three major themes: Software Architecture, Object Oriented Analysis and Domain-Driven Design, and Methodology. The bulk of the course will involve advanced concepts in Object-Oriented Analysis and Design and Domain-Driven Design (OOAD/DDD). The methods we will study include Object-Oriented Analysis and Design, Domain-Driven Design, and the Unified Modeling Language (UML). While the focus of the course is on current best practices in designing object-oriented software, the general theme of the course is coming to terms with complexity in software systems and domains.IV. LEARNING OBJECTIVES
Upon completion of this course the student will: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 here.
VI. METHOD OF INSTRUCTION
Methods include lecture and class presentations.
VII. OTHER COURSE INFORMATION
Attendance:
No formal attendance taken. There may be information presented in class that is not in the texts. You will be responsible for all information discussed in class and assigned in the required Ready Reserve readings.
Make-up Work:
If you miss an exam, you will need to speak with the instructor ASAP . The instructor is known to woefully frown on students who miss exams.
Students are expected to read the assigned texts before class in
order to be able to full participate intelligently in the discussions.
VIII. METHOD OF EVALUATING STUDENT PROGRESS
Assigned work evaluated as follows:
1
Final Exam:
25 pts **
1 Final Project
35 pts (See project description)
3 Modeling Laboratories 30 pts (10 pts each)
1 Pattern Presentation 10 pts
Total:
100 pts
Grading scale: A=90-100, B=80-89, C=70-79, D=60-69, F=0-59
**Extra credit questions will
be
offered on the Exam. Questions may be drawn from the lectures,
required texts as well as the required Ready Reserve Reading
assignments. As this course has no programming homework, no
quizzes, and only one exam, students are expected to do the
reading, and will be held accountable for all of it, without
exception.
Each student will need to sign up for 1 pattern presentation
during
which each student will deliver a simple presentation on a pattern of
choice. The presentation should last no longer than 10-15
minutes, and present the pattern in simple expository terms, and if
possible, provide an example in code or design. An overhead projector
will be available should students desire it. Most students
choose to deliver their presentations using Power Point.
Instructions for how to present a pattern may be found
here.
All assignments are due as specified on this syllabus. Students who turn in work late, regardless of the reason, will receive 1 points off from the first day the assignment is due (calculated as the first 24 hour period following the due date and time), and continuing for 5 days. Assignments turned in more than 5 days late from the original due date will not be accepted and the student will receive a 0 on the assignment. All late deliveries, regardless of cause, will incur the penalty. It is assumed that you will have plenty of time to work on each assignment, and that a penalty 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) and it's an isolated incident and the rest of your work is excellent, the penalty will be innocuous.
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.
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 you begin
negotiations for extra credit opportunities. There is no
extra credit (outside of a few optional questions on an exam) offered
in this course, either at the beginning or at the end.
IX. COURSE SCHEDULE
NB: The Instructor reserves the right to alter the schedule as class progress dictates.
Abbreviations Key for Required texts and Required Ready Reserve
reading (Texts marked with * are on Ready Reserve):
Metz | Metz, Practical Object-Oriented Desgin in Ruby |
OOAD | Booch, Object Oriented
Analysis and Design* |
Bruce | Bruce, Kim, Foundations of Object-Oriented Languages: Types and Semantics |
TMMM | Brooks, The Mythical Man Month* |
Categories | Aristotle, Categories* (available online at MIT) |
Animals | Aristotle, Parts of Animals (available online at MIT) |
Topics | Aritstotle, Topics (available online at MIT) |
TWB* | Alexander, The Timeless Way of Building * |
APL* | Alexander, A Pattern Language*
(References are to chapters, not pages) |
OOSC* |
Meyer, Bertrand, Object-Oriented
Software Construction, 2nd Ed.* |
GAO95* | David Garlan, Robert Allen, and
John Ockerbloom. Architectural Mismatch, or Why its hard to build systems out of existing parts. Proceedings Seventeenth International Conference on Software Engineering (ICSE-17), April 1995. * |
Erdogmus | Erdogmus et. al. Test-Driven Development (available online) |
Fucci |
Fucci
et. al., A Dissection of the Test-Driven Development Process: Does It
Really Matter to Test-First or to Test-Last? (available online) |
Turhan |
Turhan, et. al. How Effective is Test Driven Development (available online) |
Class/Date | Lecture Topics | Required Reading &
Pattern Presentation Schedule (Students should read relevant patterns in Gamma, et. al. for each class) |
Required Reserve Reading | Homework Assignments |
Class
1
January 9 |
Introduction and Problem
Statement
Issues in Complexity Patterns: Singleton (demonstration presentation)
|
Metz: 1 Evans: 1-2 Patterns: Singleton
|
Aristotle, Categories, i - vii,xii,xiii,xv (online) Aristotle, Parts of Animals, Book I, Part I (online) Aristotle, Topics, Book 1: Parts 4-7 (online) TWB: 1,2,4,5,7 |
|
Class 2
January 16 |
Classification and
Abstraction Introduction to Domain-Driven Design Analysis Modeling Programming Paradigms Classes and Objects State and Behavior |
Bruce: 1, 2 Metz: 2-3 Evans: 3-4 Patterns: Factory Method |
TWB: 10,11,16 APL: 112,115,159, 168, 169, 173 |
|
Class 3
January 23 |
Inheritance, Abstraction and Composition
Use Cases & User Stories |
Metz: 4-5 Bruce: 3, 4 Evans: 4-5 Patterns: See Student Presentation Schedule
|
Fucci Turhan Erdogmus APL 180, 203, 247 |
|
Class 4
January 30 |
Class Relationships (Associations, Dependencies, Whole/Part) Object-Oriented Design Principles (SAP/OCP/LSP/ISP/DIP) |
Bruce, 5, 6, 7 Evans: 6-7 Patterns: See Student Presentation Schedule |
|
|
Class 5
February 6 |
Polymorphism (lisp, ruby/python, smalltalk, C++, Java) Object-Oriented Design Principles (cont.) (SAP/OCP/LSP/ISP/DIP) |
Metz: 7-9 Evans: 8-9 Patterns: See Student Presentation Schedule |
Modeling Laboratory I due |
|
Class 6
February 13 |
Interfaces and Implementations Aspectival Programming Dynamic Modeling SQL Databases (and MySQL) Object-Oriented Design Principles (cont.) (SAP/OCP/LSP/ISP/DIP) |
Evans: 10-11 Patterns: See Student Presentation Schedule |
|
Project Prototype Proposal Due (See Modeling Laboratory I.6) |
Class 7
February 20 |
Object-Oriented Design Principles (cont.) (SAP/OCP/LSP/ISP/DIP) Method dispatch, generics and type erasure, operator overloading, lambdas, streams and reflection Object Equivalence (Equivalence vs. Identity, Deep vs. Shallow Copying) NoSQL Databases: MongoDB |
Evans 12-13 Patterns: See Student Presentation Schedule |
Modeling Laboratory II due | |
Class 8 February 27 |
Class 8 is Rescheduled till Sunday, March 4th |
|||
Class 8 (Rescheduled) Sunday, March 4 |
Inter-process communication with sockets Event Model and Reactive Programming Exam Review |
Evans: 14-17 Patterns: See Student Presentation Schedule |
Modeling Laboratory III due | |
Class 9 March 6 |
EXAM |
|
||
Class 10
March 13 |
Concurrency and Multi-threaded programming |
Patterns: See Student Presentation Schedule | Final Project Deliverable Due |
X. Online Reference and Resources:
General:
Cetus Links on OO: http://www.objenv.com/cetus/software.html
OOA/OOD:
Martin Fowler's home pages: http://www.martinfowler.com/
Patterns:
Salingaros's notes on Christopher Alexander: http://www.math.utsa.edu/sphere/salingar/Chris.text.html
Patterns-Discussion FAQ: http://g.oswego.edu/dl/pd-FAQ/pd-FAQ.html
Writing Patterns: http://hillside.net/patterns/
Alistair Cockburn's home page: http://alistair.cockburn.us/