Object-Oriented Design Winter Term 2008

Object-Oriented Design
Winter Term 2008 COMP 304B (CRN 746)

General Information

Course title Object-Oriented Design
Course number COMP 304B (CRN 746)
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 0060 (check Minerva).
Monday, Wednesday, and Friday 14:35 - 15:25
Tutorials (check Minerva).
To be announced.
Enrollment Cap Enrollment is limited to 50 students.
Instructor Hans Vangheluwe
McConnell Engineering, room 328
e-mail: hv@cs.mcgill.ca (send course-related mail in WebCT)
Office hours Monday 16:00 -- 17:30, or send e-mail
TA Reehan Shaikh
Mon, Tue, Wed in McConnell Engineering, room 202 (Modelling, Simulation and Design Lab)
Thu in Trottier (3rd floor open or Krieble lab)
e-mail: reehan.shaikh@cs.mcgill.ca (send course-related mail in WebCT)
TA Office hours Monday to Thursday 13:00 -- 14:30, drop-in (or by appointment)
Course website http://www.cs.mcgill.ca/ ~ cs304
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 × 2-week, 3 × 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: 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 2008.