CpSc 20y: Object-Oriented Programming Lab

  Focus on programming well.
    Use simple algorithms.
    Leave the teaching of cool algorithms for CpSc 320.
  Basics of classes and objects.
  The principles of encapsulation:
    Applying the idea of data invariants (from CpSc 20a).
    Why data should "always" be private.
    Why methods must maintain the object invariants.
  Separate compilation:
    Breaking programs into multiple classes
    Using existing APIs.
  Inheritance:
    Examples of use of inheritance to write code more systematically
      and to simplify code.
    Using inheritance to extend classes from an API.
    When inheritance doesn't make sense:
      using interfaces instead of inheritance.