Object-Oriented Programming
This module teaches the principles of object-oriented and type-driven programming. The language used in this module is TypeScript, but the majority of concepts covered will apply just as well to other object-oriented languages. For a detailed description of the topics that will be covered, please refer to the Contents section below.
Course dates
8th March 2021 | Oxford University Department of Computer Science - online one week 9-5 course | 0 places remaining. |
21st June 2021 | Oxford University Department of Computer Science - online one week 9-5 course | 0 places remaining. |
4th October 2021 | Oxford University Department of Computer Science | 03 places remaining. |
17th January 2022 | Oxford University Department of Computer Science | 08 places remaining. |
9th May 2022 | Oxford University Department of Computer Science | 09 places remaining. |
Objectives
On completion, students will be able to solve a range of standard object-oriented programming problems (using TypeScript). They will be able to make educated assessments of the benefits of object-orientation on practical programming tasks. They will be in command of the standard object-oriented mechanics of TypeScript, as detailed in the Contents section below.
Contents
- Object-oriented models
- High-level, comparative analysis of object-oriented models for some major programming languages: C++, Java, Python and JavaScript/TypeScript.
- Basic Types
- Elementary types (boolean, number, string, bigint). Array and Tuple types. Literal types. Function types. Object literal types and structural typing. Special types (undefined, null, void, any vs unknown, never). Type operations.
- Classes and Interfaces
- Interfaces vs object literal types. Indexable types. Function types. Iterators and generators. Constructor types. Classes. Property access control (private, protected, public, readonly).
- Polymorphism
- Inheritance. Overloading vs overriding. Dynamic binding and issues. Generics. Variance and type inference.
- Advanced types
- Polymorphic this types. Type guards and advanced type operators (in, typeof, instanceof, keyof). Mapped types. Conditional types.
- Patterns
- Mixins and decorators. Final classes. Discriminated unions. Throws clauses. Some common design patterns (factory, builder, companion, etc).
Try the online TypeScript Playground at: www.typescriptlang.org/play
Requirements
Some familiarity with imperative programming as well as a basic knowledge of object-oriented concepts (such as classes, inheritance, and polymorphism) will be helpful. Students are asked to ensure that they have basic familiarity with JavaScript/TypeScript programming, though no knowledge of advanced concepts is assumed.