CSC407H Standardized Course Description


Owner

David A. Penny penny@cs.toronto.edu

Subscribers

Steve Easterbrook sme@cs.toronto.edu
Dave Wortman dw@cs.toronto.edu
Jim Clarke clarke@cs.toronto.edu
Marsha Chechik chechik@cs.toronto.edu
Ric Hehner hehner@cs.toronto.edu
John Mylopoulos jm@cs.toronto.edu
e-mail to all of the above

Pending Change Proposals

Make a change proposal

Course Description

An introduction to the development of system-level architectures and class-level object-oriented designs for software systems. This course places special emphasis on the study of architecture and design patterns: the core of solutions to commonly occurring design problems. Other topics include representations of design/architecture (with emphasis on the use of UML as a class-level design notation), architectural assessment, product lines, architecture extraction, and re-factoring. The course does not have a major project, but does have a series of smaller design and architecture exercises requiring some programming. A knowledge of UML as used for requirements analysis and a working knowledge of both the C++ and Java languages is assumed.

Even once we fully understand the requirements for a software system it is rarely clear how to begin the programming task (except for the most trivial of programs). The steps in-between requirements and coding are first architecture and then design. Architecture involves specifying the construction of the system at the highest level. What are the major modules? What are the major processes? How do the processes communicate with one another? Design involves specifying the construction of a single module or program at the class level. What classes should we have? What are their responsibilities? With what other classes should they collaborate? What methods should they contain? This course teaches students how to come up with and then descirbed system-level architectures and class-leve designs.

Prerequisistes

Topics

Texts

  1. REQUIRED

    Design Patterns: Elements of Reusable Object-Oriented Software (1st edition)
    Gamma et. al., Addison-Wesley (Professional Computing Series), 1995
    ISBN 0-201-63361-2
  2. REFERENCE

    The Unified Modeling Language User Guide (1st edition)
    Booch et. al., Addison-Wesley, 1998
    ISBN 0-201-57168-4

Technology

Evaluation

type weight description
assgnment 20% given a simple problem, come up with a class design in UML using patterns and then code it in Java
assignment 20% given a more advanced problem, come up with a class design in UML using patterns and then code it in Java
assignment 20% given the description of a system's requirements, produce a system-level architecture document for it
exam 40%