The University of Chicago
Department of Computer Science
MPCS 51410 Course Syllabus
Winter 2020
Instructor: Mark
Shacklette
Office:
Crerar 398-F
Office Hours: Monday 3:30 - 5:15 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:
TA:
John Hadidian-Baugher
Office:
Gleacher Center Dining Room (1st Floor)
Office Hours: Wednesdays 5pm-7pm
email:
jhadidianbaugher-at-gmail.com
TA:
Alan Salkanović
Office: JCL 356
Office Hours: Sundays 10am-12pm
email:
zekija816-at-gmail-dot-com
TA:
Kiran Baktha
Office:
T.B.D.
Office Hours: T.B.D.
email:
kiranbaktha2002-at-gmail-dot-com
Piazza signup here.
SUBJECT | COURSE | TITLE | TIME | BUILDING |
324 | 51410 | Object Oriented Programming |
5:30 - 8:50 Monday | 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 (materials available on canvas, and many
articles may be found on the cluster under
~mark/pub/51410/ready.reserve.reading/* )
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. 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:
5 Coding Assignments: 20 pts (4 pts each)Grading scale ranges: A=90-100, B=80-89, C=70-79, D=60-69, F=0-59
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 (assignments and modeling laboratories) are due as specified on this syllabus. Students who turn in work late, regardless of the reason, will receive 2 points off for Modeling Laboratories per day (1 point off per day for Coding Assignments), 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 (4 days for Coding Assignments). Modeling Laboratory 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. Coding Assignments turned in more than 4 days late from the original date due will not be accepted and the student will receive a 0 on the assignment. All late deliveries, regardless of cause and without exception, 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 6 |
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 Makeup: Sunday January 19 1-4 PM ROOM: JCL 390 |
Classification
and Abstraction Introduction to Domain-Driven Design & Bounded Contexts Analysis Modeling Classes and Objects |
Bruce: 1,
2 Metz: 2-3 Evans: 3-4 Patterns: See Student Presentation Schedule |
TWB: 10,11,16 APL: 112,115,159, 168, 169, 173 |
|
January 20 Class 3 |
MLK Day-No Class |
|||
Class 4
January 27 |
Inheritance, Abstraction and Composition
Class Identification Strategies (CRC, etc.) Object-Oriented Design Principles (SRP) |
Metz: 4-5 Bruce: 3, 4 Evans: 4-5 Patterns: See Student Presentation Schedule
|
Fucci Turhan Erdogmus APL 180, 203, 247 |
Modeling
Laboratory I |
Class 5
February 3 |
Class Relationships (Associations, Dependencies,
Whole/Part) Object-Oriented Design Principles (LSP) SQL Databases (and MySQL) (needed for ML2) |
Bruce, 5, 6, 7 Evans: 6-7 Patterns: See Student Presentation Schedule |
HW1 |
|
Class 6
February 10 |
Polymorphism (lisp,
ruby/python, smalltalk, C++, Java) State and Behavior Object-Oriented Design Principles (OCL) |
Metz: 7-9 Evans: 8-9 Patterns: See Student Presentation Schedule |
Modeling Laboratory II HW2 |
|
Class 7
February 17 |
Interfaces and Implementations Aspectival Programming Dynamic Modeling Object-Oriented Design Principles (ISP) |
Evans: 10-11 Patterns: See Student Presentation Schedule |
|
HW3 |
Class 8
February 24 |
Object-Oriented Design
Principles (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 III HW4 |
|
Class 9
Monday,
March 2 |
Event Model and Reactive Programming |
Evans: 14-17 Patterns: See Student Presentation Schedule |
HW5 | |
Class 10 Monday, March 9 |
Concurrency and Multi-threaded programming |
Evans: 14-17 Patterns: See Student Presentation Schedule |
Final Project Deliverable Due (graduating students only) |
|
Class 11
Monday, March 16 |
Final Exam Study Guide for Final Exam |
Final Project Deliverable Due (non-graduating students) |
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/