Course Contents
CS 251 focuses on the practical aspects of object-oriented
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 frameworks using C++
Abstraction based on patterns and object-oriented 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 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 techniques and C++ features that address:
- Decentralized software architecture
- Architectural and design patterns
- Class interface definition
- Component reuse
- Module decomposition
- Hierarchical classification
- Extensible object-oriented application frameworks
- Robust error handling
Several in-depth case studies will be used in class to illustrate the
OO design and programming process.
Unlike CS 277 (which focuses on the overall software lifecycle and
covers topics such as requirements analysis, specification techniques,
modeling notations, and design documents), CS 242 focuses intensively
on techniques for designing, implementing, and validating efficient,
reliable, and secure object-oriented C++ software.
Back to CS215 home page.