Course Contents
CS 251 focuses on the practical aspects of object-oriented and generic
software design and implementation. The concepts addressed in the
course cover the following topics important to developing and
maintaining quality software:
- Reuse of architectural and design patterns and software components
- Developing, documenting, testing and applying reusable class libraries
and object-oriented and generic frameworks using C++
Abstraction based on patterns, object-oriented, and generic
programming techniques (such as separating interfaces from
implementations) will be the central concepts and guiding principles
throughout the course. These concepts and principles will be analyzed
and applied so that students will learn how to construct reusable,
extensible, efficient, evolvable, and secure software.
Patterns will be taught to provide good role models for structuring
software designs, as well as to clearly articulate the tradeoffs of
alternative methods for designing systems. Object-oriented and
generic programming techniques and C++ language features will be
taught so that students will learn by example how to build highly
decentralized software architectures that decouple inter-dependencies
between components. The course will cover object-oriented and generic
programming techniques and C++ features that address:
- Decentralized software architecture
- Architectural and design patterns
- Class interface definition
- Component reuse
- Module decomposition
- Hierarchical classification
- Generic programming
- Extensible object-oriented application frameworks
- Robust error handling
Several in-depth case studies will be used in class to illustrate the
pattern-/object-oriented and generic design and programming
process.
Unlike the CS Software Engineering course (which focuses on the
overall software lifecycle and covers topics such as requirements
analysis, specification techniques, modeling notations, and design
documents), CS 251 focuses intensively on techniques for designing,
implementing, and validating efficient, reliable, and secure C++
software developed using object-oriented and generic design and
programming techniques.
Back to CS251 home page.