Students learn concepts of advanced object oriented design and programming using a single semester-long project.
Learn the fundamental vocabulary of professionals when talking about the methods of a class.
Understand the difference between abstract and implementation state and learn how to design and work with classes and interfaces.
Understand subtyping and inheritance and learn how to build extensible class hierarchies.
Learn design by contract to better define the relationship between class (interfaces) and their clients.
Learn how to deal with faults, errors, and failures in class and component design.
Understand the fundamental difference between objects and values and learn how to implement value types efficiently.
Understand design patterns and learn how to use them in system design.
Understand the type object pattern and learn how to handle model-level vs. instance-level information.
Learn how to wisely choose between design alternatives using the important example of object creation.
Learn how to break down class relationships into collaboration models to better handle design complexity.
Learn about object oriented frameworks by putting together the different pieces of this course.