This document provides an introduction to a course on software engineering and architecture. It discusses the context of increasing software complexity and historic software project failures. It notes that software development needs to become more systematic, with early quality assurance and the use of abstraction to manage complexity. The course will take a model-driven engineering approach to architectural design. Students will learn about software architectures, styles, description languages, design decisions, views and viewpoints. The course will include lectures, labs, projects and exams. Students will complete projects following templates, some with project management tasks. Materials will be provided through the listed course website.