5895 Syllabus

The development process: the phases of development, inception, elaboration and construction; incremental development.

The language of design: an introduction to the Unified Modeling Language (UML).

Use-Case Diagrams: scenarios, actors, use cases and use case relationships.

Class Diagrams: classes, attributes and operations; static relationships, associations and sub-types, navigability, multiplicity, roles and adornments; stereotypes; constraints; naming conventions.

Interaction Diagrams: sequence diagrams-lifelines, messages, conditions, iterations and returns, synchronous vs asynchronous messages; collaboration diagrams-messages, sequence numbering; equivalence.

An introduction to Java (for C++ programmers). Differences between the two languages, object hierarchy, reference semantics, garbage collection,etc.

GUI techniques in Java. The Abstract Windowing Toolkit, Swing.

Design patterns: common solutions to recurring problems, the notion of a pattern catalog; capturing patterns, pattern templates; underlying design principles.

Pattern classification: delegation patterns, structural patterns, creational patterns.

In addition to practice assignments, students will be expected to undertake a major term project.