On this page:
CS 5004:
Object-Oriented Design

CS 5004:
Object-Oriented Design

Summer Full 2020

The course provides an intensive tour of class-based program design and the design of abstractions that support the design of reusable software and libraries. It reviews typical object-oriented concepts such as information hiding, encapsulation and various forms of polymorphism. It contrasts the use of inheritance and composition as dual techniques for software reuse. It provides a deeper understanding of object-oriented design using the use of graphical design notations such as UML and object-oriented design patterns. It also examines the relationship between algorithms and data structures, as well as basic techniques for analyzing algorithm complexity. Finally it emphasizes on testing, specifically unit testing of components.

The course is suitable for students in the ALIGN MS in CS program. It assumes that students have been introduced to the basic principles of program design and computation.


CS 5001 Intensive Fundamentals of Computer Science

“Think first, experiment later.”

The curiosity to ask questions, try out new things and the motivation to go above and beyond is essential to extract maximum benefit from this course. This is a programming-intensive course, but also emphasizes careful design and thorough testing.

Course Objectives

The main objective of the course is to familiarize students with the concepts and practice of object-oriented design. Although we will use Java as the programming language for this course, most of the concepts would transcend a particular programming langauge. The overall aim is to empower students to go from problem explanation to design, implementation and testing of a solution using an object-oriented language such as Java.

Course Outcomes

At the end of this course, students will be able to: