Real-world software systems, such as massively parallel Internet applications and mission-critical avionics control systems, require robust and provably correct software architecture design. This Software Engineering program goes beyond teaching simple programming, and instead focuses on modern software engineering principles, tools, and analysis techniques for the design of large and complex software systems. Carleton teaches essential discipline components such as programming paradigms and design notations. In addition, we emphasize rapid design with sufficient flexibility for future changes, as well as safety, economy, efficiency and speed of execution.