Module overview
Aims and Objectives
Learning Outcomes
Knowledge and Understanding
Having successfully completed this module, you will be able to demonstrate knowledge and understanding of:
- The main conceptual features of modern programming languages
- Common features of type systems and type discipline in various programming languages
- The differences between families of languages (imperative, OO, functional, declarative) and within families (dynamically typed vs statically typed, call by name vs call by value, etc)
- Diverse approaches to formal semantics of programming languages
Subject Specific Intellectual and Research Skills
Having successfully completed this module you will be able to:
- Design a domain-specific programming language
Syllabus
- Compiled vs. interpreted languages
- Imperative, functional and declarative languages
- Scope and binding
- Type systems
- Type inference
- Reasoning about programs
- Contextual equivalence
- Programming language semantics: operational, denotational and axiomatic semantics
Learning and Teaching
Teaching and learning methods
The content of this module is delivered through lectures, the module website, and directed reading.
Students work on their understanding through a combination of independent study and preparation for timetabled activities, along with formative assessments in the form of coursework assignments.
Students work on their practical skills and technical understanding in technical laboratories.
Type | Hours |
---|---|
Wider reading or practice | 16 |
Completion of assessment task | 38 |
Specialist Laboratory | 20 |
Follow-up work | 18 |
Preparation for scheduled sessions | 10 |
Revision | 12 |
Lecture | 36 |
Total study time | 150 |
Assessment
Assessment strategy
This module is assessed by a combination of coursework and a final assessment in the form of a written examination.
Summative
This is how we’ll formally assess what you have learned in this module.
Method | Percentage contribution |
---|---|
Coursework | 40% |
Examination | 60% |