CS 201
Advanced Object-Oriented Programming

Object-oriented programming is currently the most popular style of programming. The core ideas of object-oriented programming are data abstraction and reuse. Data abstraction is achieved by defining classes with well-defined interfaces. Reuse is achieved through composition of classes and inheritance of class implementations.

In this course, we will focus on understanding how to design classes well, how to implement classes in Java and how to ensure their correctness via reasoning and testing. In addition, we will learn about some common data structures, such as stacks and queues and get an introduction to analyzing performance using O().

Topics covered include data abstraction, inheritance, exceptions, testing, debugging, linked lists, stacks, queues, O() and recursion.