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.