|Course title||Object-Oriented Design|
|Course number||CS 308-304B|
|Prerequisites||CS 308-206 (software systems).|
|CS 308-251 (data structures and algorithms),|
|CS 308-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||Arts W20 (check infomcgill).|
|Monday and Wednesday, 14:30 - 16:00 (starting Monday 7 September)|
|Enrollment Cap||Enrollment is limited to 60 students.|
|Instructor||Prof. Hans Vangheluwe|
|McConnell Engineering room 328|
|tel.: +1 (514) 398 44 46|
|e-mail: email@example.com (send course-related mail to the course mail address)|
|Office hours||Monday 16:00 - 18:00|
|TA Office hours||Wednesday 16:00 - 18:00|
|McConnell Engineering room 202 (Modelling, Simulation and Design Lab)|
|Course website||http://www.cs.mcgill.ca/ ~ cs304|
|Course firstname.lastname@example.org (use a meaningful subject: field)|
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 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
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:
Meilir Page-Jones. Fundamentals of Object-Oriented Design in UML. Object Technology Series. Addison-Wesley, 2000. ISBN 0-201-69946-X.
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 ($128.95) ``package'' containing both books. ISBN 0130391123.
Additional material will be made available via the course website.
6 assignments (3 × 2-week, 3 × 1-week). The assignments form a series of prototypes for a spreadsheet application. The implementation language for all assignments is Python (http://www.python.org).
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:
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. See section 15 of Student Rights and Responsibilities Handbook for more details. All re-use, collaboration, inspiration must be explicitly mentioned in the assignment.