University of Oxford Logo University of OxfordSoftware Engineering - Home
On Facebook
Facebook
Follow us on twitter
Twitter
Linked in
Linked in
Google plus
Google plus
Digg
Digg
Pinterest
Pinterest
Stumble Upon
Stumble Upon

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

7th December 2020Oxford University Department of Computer Science - virtual one week course 9am-5pm GMT time 0 places remaining.
8th March 2021Oxford University Department of Computer Science - online one week 9-5 course 0 places remaining.
21st June 2021Oxford University Department of Computer Science - online one week 9-5 course 0 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.