CS 311 Software Patterns • 5 Cr.
This course introduces software design paradigms, and design and architectural patterns essential for the creation of flexible, reusable, reliable and maintainable software applications. The course offers students a hands-on opportunity to apply creational, functional and behavioral design patterns, as well as architectural patterns, in a software design. Prerequisites: CS 211 and admission to BS Computer Science program, or instructor's permission.
After completing this class, students should be able to:
- Use a design paradigm to design a simple software system, and explain how system design principles have been applied in this design.
- Identify the most suitable design pattern for a simple system suitable for a given scenario
- Identify the software architecture pattern by differentiating among common software architectures such as layered, pipe-and-filter, and client-server
- Apply examples of design patterns in a software design
- Discuss and select appropriate software architecture for a simple system suitable for a given scenario.
- Refactor an existing software implementation to improve some aspect of its design.
- Discuss implementation trade-offs of certain patterns with respect to others