Course Contents
CS 291 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
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 that address:
- Decentralized software architecture
- Architectural and design patterns
- Class interface definition
- Component reuse
- Module decomposition
- Hierarchical classification
- Extensible object-oriented application frameworks
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 CS291 home page.