This is the high-level outline provided by myself; while this is general guideline the course will be adjusted according to your feedback, interests, and experience.
Introduction
Why design? Input, output, and constraints of the design process. Types of design. Relationship to software quality and course.
Software Design Models
Design as search. Design spaces. Design state, goal structure, generative design operations, early quantitative evaluations, control of design process. Basic models of design (transformational, plan/architecture driven). Relationship to other life-cycle activities.
Design Representations
What should be represented (structure, behaviour)? Informal representations of design, examples of design notations.
Formal representation of design.
Domain specific architecture descriptions. Role of standards, reference architectures. Design documentation.
Design Plans
Review of small/medium scale plans (programming language structures, concurrency).
Plans/architectures for common types of software systems.
Design Strategies and Methods
Design strategies. Selected methods: object modelling technique, structured design, real-time, user interfaces. Methods for design with off-the-shelf components.
Design Assessment
Assessment dimensions and factors affecting their relative importance. Design tradeoffs. Evolvability and understandability criteria of design spaces.
Design complexity metrics. Assessment strategies (analytical, simulation, rapid prototyping), example: response time/throughput estimation.
Design Verification
Design reviews, scenarios and test cases, testing of executable design representations. Verification of properties.