Syllabus

In exploring object-oriented programming, we investigate three questions:

  • Design: How do we think about a program in terms of objects? To answer this question, we explore CRC cards, UML, and design patterns.
  • Language Primitives: How do we express object orientation? To answer this question, we explore classes, interfaces, inheritance, method dispatch, generics, operator overloading, and reflection.
  • Language Implementation: How do we realize object-oriented primitives? To answer this question, we explore virtual method dispatch and automatic memory management in detail.

Design and primitives matter because they represent the essence of object-oriented programming. Implementation matters because it enables us to debug object-oriented programs and tune their performance.

The course will cover different topics including:

  • OOP Principles
  • Writing code using Java and C++
  • Arrays in Java and C++
  • Generics in Java
  • Test-driven Development
  • Design Patterns Principles
  • OOP Design: when to use inheritance
  • Implementing Inheritance
  • Multiple Inheritance
  • Method Overriding and Overloading
  • Memory Management in C++

To get the full course syllabus and detailed information, click here.