This course offers a systematic introduction to concepts relevant to the specification, design, implementation, verification, and management of software. It covers the principal architectural issues associated with the design and construction of large-scale software systems. It covers the software life cycle, software engineering concepts and techniques, software structure and architecture, software design notations, and programming environments. -- Course Website