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.