Module overview
The aim of this module is to introduce students to the fundamental concepts underlying all programming languages, to introduce a broad range of programming language styles and features, and to provide the theoretical foundation that they will need in order to be able to make informed judgements about programming languages
Linked modules
Pre-requisites: COMP2209 and COMP2210
Aims and Objectives
Learning Outcomes
Knowledge and Understanding
Having successfully completed this module, you will be able to demonstrate knowledge and understanding of:
- Understand the main conceptual features of modern programming languages
- Understand common features of type systems and type discipline in various programming languages
- Use diverse programming language primitives for concurrency
- Distinguish between families of languages (imperative, OO, functional, declarative) and within families (dynamically typed vs statically typed, call by name vs call by value, etc)
- Understand diverse approaches to formal semantics of programming languages
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
- Threading and thread safety
- Reasoning about concurrent programs
- Concurrency primitives in modern programming languages
Learning and Teaching
Type | Hours |
---|---|
Wider reading or practice | 43 |
Completion of assessment task | 13 |
Follow-up work | 18 |
Lecture | 36 |
Preparation for scheduled sessions | 18 |
Revision | 10 |
Tutorial | 12 |
Total study time | 150 |
Assessment
Summative
This is how we’ll formally assess what you have learned in this module.
Method | Percentage contribution |
---|---|
Final Assessment | 60% |
Continuous Assessment | 40% |
Referral
This is how we’ll assess you if you don’t meet the criteria to pass this module.
Method | Percentage contribution |
---|---|
Set Task | 100% |
Repeat
An internal repeat is where you take all of your modules again, including any you passed. An external repeat is where you only re-take the modules you failed.
Method | Percentage contribution |
---|---|
Set Task | 100% |
Repeat Information
Repeat type: Internal & External