Course Contents

This course focuses on the practical aspects of object-oriented and generic design and programming in Java. The concepts addressed in this course cover the following topics important to developing and maintaining quality software: Abstraction based on patterns and object-oriented and generic design and programming techniques 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 Java 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 design and programming techniques and Java features that address:

Several in-depth case studies will be used in class to illustrate the 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 object-oriented and generic design and programming with Java.


Back to CS251 home page.