Principles of Software Design & Architecture
Software applications harness the power of IT infrastructure to deliver powerful capabilities to users enabling them to transact with accuracy and efficiency. Software applications take on many forms such as web applications, mobile apps, and eCommerce sites, which are taken for granted by the users, business and consumers. However, developing, deploying, and maintaining secure and scalable commercial software applications is a complicated task, which if not managed correctly, can result in significant financial losses and waste of time. In this class students learn how to architect and design software taking into account business drivers and important attributes such as availability, performance, scalability, reliability, and security, and trade-offs between different design objectives. We discuss various topics from software lifecycle management to integration of applications. Contemporary topics like CI/CD pipelines, application containerization, serverless architecture are also discussed in detail. Through class lectures, discussions, assignments, case studies, and group projects, students will build a solid understanding of application architectures and frameworks. Given the depth of topics covered, some level of prior programming experience is helpful but is not a requirement for this course.
Prerequisites & course information
Credit 3 units. Typical periods offered: Fall, Spring, Summer
Sources
- Course catalogue โ2026โ2027