Advanced Issues in Object Oriented Programming
In this module you will learn about the design and implementation of object-oriented languages and the rationale for various language features and alternatives. You will get to use formal calculi, which are used throughout to specify and reason about programming language properties. The various programming language designs are evaluated from the point of view of programming, programming language properties, and implementation performance. You will also learn about object-oriented type systems and their application to enforce memory safety, fast lookup, garbage collection and data-race freedom.
Upon successful completion of this module you will be able to:
- describe, analyse and compare advanced object-oriented programming language features
- formalise object-oriented type systems and explain their roles
- describe and evaluate state-of-the-art object-oriented implementation methods and supporting frameworks
- specify and reason about programming language features using formal methods
- Static vs dynamic types
- Type system soundness
- Operational Semantics
- Types and inheritance
- Java generics
- Inheritance in C++
- C++ implementation model
- The Java virtual machine
- Dynamic linking in Java
- Ownership types
- Looking to the future: the Pony language
Students need to have programmed in an OO programming language, and need to have basic mathematical skills.
The module is taught via interactive lectures, some of which will include live coding sessions. As part of each lecture you will fill in gaps in the notes, each representing a key concept that will be discussed in class. In addition there will be numerous unassessed, formative, exercises, some of which will be solved and discussed in class; the rest are designed to support independent learning. Students will occasionally be invited to share their solutions with the rest of the class using the visualiser and these provide the opportunity for the class as a whole to discuss solutions and suggest potential improvements. Most of the questions come with sample answers, but for some questions you will be encouraged to find the solutions independently. Some of the tutorial sheets will contain past exam questions.
The Piazza Q&A web service will be used as an open online discussion forum for the module.
There will be one assessed coursework which consolidates and expands on the material of the first 4 weeks. You can complete this in groups of up to four students. The coursework accounts for 20% of the marks with the remaining 80% coming from a written exam.
There will be detailed written feedback for the assessed coursework and a feedback class where alternative approaches, their repercussions, and the finer points in the exercise will be discussed. There will also be continuous verbal interaction and feedback during the classroom sessions.