Object-Oriented Design Winter Term 2009

Object-Oriented Design
Winter Term 2009 COMP 304B (CRN 728)

General Information

Course title Object-Oriented Design
Course number COMP 304B (CRN 728)
Credits 3
Prerequisites COMP 206 (software systems).
COMP 251 (data structures and algorithms),
COMP 302 (programming languages and paradigms),
If you do not have the pre-requisites for the course, the course will be
deleted from your record by the Faculty of Science.
Course venue Trottier 2110 (check Minerva).
Monday, Wednesday, and Friday 14:35 - 15:25
Tutorials Trottier 3070.
Tuesday 17:00 -- 19:00.
Enrollment Cap Enrollment is limited to 50 students.
Instructor Hans Vangheluwe (with some lectures by Eugene Syriani)
McConnell Engineering, room 328
e-mail: hv@cs.mcgill.ca (send course-related mail as discussion in WebCT!)
Office hours Monday 11:30 -- 13:00, or send e-mail for appointment
TA Amr Al Mallah
e-mail: amr.almallah@mail.mcgill.ca (send course-related mail as discussion in WebCT!)
McConnell Engineering, room 202 (Modelling, Simulation and Design Lab)
TA Christopher Dragert
e-mail: christopher.dragert@mail.mcgill.ca (send course-related mail as discussion in WebCT!)
Course website http://msdl.cs.mcgill.ca/people/hv/teaching/SoftwareDesign/
Course e-mail Discussion forum in WebCT
Assignments hand in via WebCT

Description from Course Calendar

The object model, objects and classes, verification and testing, object-oriented analysis, unified modelling language and design patterns.

Introduction and Rationale

The complexity of software systems to be built increases with the number of components, the diversity of these components, the level of interactiveness and re-activeness, as well as with the need for integration with real-world systems. These issues are amplified when designing real-time, embedded systems. While the complexity of systems increases, so does the demand for reliability, reduced production time, and maintainability. Thanks to extensive research in algorithms and datastructures, as well as suitable -object-oriented- programming languages, re-usable libraries of "components" have been developed. Examples are the Standard Template Library (STL) for C++ and AWT/Swing for Java. Given the complexity of software-to-be-built, it is necessary to focus, not only on coding and programming, but also on the design of software. The design effort turns user requirements (the "what?") into working software solutions (the "how?"). Design provides a framework for reasoning at a level of abstraction higher than that of code (which is, certainly in modern, object-oriented languages, already at a high level of abstraction compared to the level of machine instructions). Thanks to this high level of abstraction

Course Content

The above introduction highlights the need for object-oriented design as opposed to coding. This will put object-oriented programming in its proper context and allow one to tackle complex problems in a structured fashion. The object-oriented paradigm, with all the support such as object-oriented languages, type theory, tools, UML notation, and design patterns, has reached a sufficient level of maturity to allow a comprehensive presentation.
The goal of the course is to give in-depth insight in the nature of object-oriented analysis and design, integrating the following related aspects:
  1. understanding the (object-oriented) software development process;

  2. software testing as an integral part of the process;

  3. understanding the object-oriented paradigm;

  4. standardized representation for design: the Unified Modelling Language (UML);

  5. which criteria allow one to assess the quality of a design;

  6. how to go from design to code in a structured (and possibly automated) fashion;

  7. design patterns for high-level design re-use.

The course is not about a particular design method, nor a particular language or tool. We will however use the programming language Python for most examples and all assignments. This, as Python allows for rapid prototyping of complex software system which will allow focus on design rather than coding.
The important concepts of the course as well as their inter-relationships are given in a "concept map" (in UML Class Diagram syntax) in Figure 1.

Figure 1: Object-Oriented Design Concept Map

Learning Outcomes

By the end of the course, you will

Course Material

  1. Meilir Page-Jones. Fundamentals of Object-Oriented Design in UML. Object Technology Series. Addison-Wesley, 2000. ISBN 0-201-69946-X.
  2. Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns, Elements of Reusable Object-Oriented Software. Professional Computing Series. Addison-Wesley, 1995. ISBN 0-201-63361-2.
Several copies of these books are put on reserve at the Schulich Library.
The McGill bookstore has a reduced-price "package" containing both books. ISBN 0130391123.
Additional material will be made available via the course website and in class (blackboard notes).

Assignments and Evaluations

6 assignments (3 x 2-week, 3 x 1-week). The implementation language for all assignments is Python (http://www.python.org).
Grades distribution:
A supplemental exam, worth 50%, covers the whole course.
There is no opportunity to re-do or increase grades obtained for assignments.
Assignments will be judged on (in this order of importance):
Example assignments from previous incarnations of the course: 2008, 2007, 2006, 2005, 2004, 2003, 2002.
Example exams from previous incarnations of the course.

The Rules of the Game

Original Work

McGill University values academic integrity. Therefore all students must understand the meaning and consequences of cheating, plagiarism and other academic offences under the code of student conduct and disciplinary procedures (see www.mcgill.ca/integrity for more information).
You are encouraged to help each other formulate the ideas behind assignment problems, but each student is required to submit his or her own original work. Handing in work that is not your own, original work as if it is your own is plagiarism. All re-use, collaboration, inspiration must be explicitly mentioned in the assignment.

Class Attendance

You are expected to attend class. Information may be made available on the web for your convenience, but is not a substitute for class attendance. Should you miss a class, you are responsible for finding out what material or announcements you may have missed.

Hans Vangheluwe, Winter Term 2009.