← Ayaan M. Kazerouni

CSC 203 Project-based Object-oriented Programming and Design

Course notes

These are unpolished course notes, written mostly as guides for myself while teaching. This list is taking shape this quarter (Winter 2024).

Many of the code examples in these lessons originated from Julie Workman, Paul Hatalsky, Zoë Wood, and Aaron Keen.

  1. Introduction
  2. Data types, arithmetic, type-casting
  3. Classes, objects, lists, maps
  4. Procedural and object-oriented programs
  5. Method dispatch (overloading and overriding)
  6. A class design process
  7. Interfaces (part 1)
  8. Interfaces (part 2)
  9. Interfaces (part 3)
  10. Abstract classes
  11. Inheritance and equality
  12. Hashcode
  13. Comparables and comparators
  14. Comparators, lambdas, and method references
  15. Lambdas and functional interfaces
  16. Streams
  17. Binary trees (OpenDSA Chapter ⇗)
  18. Graph traversals — Depth-first search and breadth-first search (OpenDSA Chapter ⇗)


  • A-star search
  • Exceptions and exception handling