Skip to main content

Unit information: Language Engineering in 2018/19

Please note: It is possible that the information shown for future academic years may change due to developments in the relevant academic field. Optional unit availability varies depending on both staffing and student choice.

Unit name Language Engineering
Unit code COMS22201
Credit points 20
Level of study I/5
Teaching block(s) Teaching Block 4 (weeks 1-24)
Unit director Dr. Wu
Open unit status Not open

COMS10006 Functional Programming, COMS10007 Algorithms, COMS10008 Imperative Programming, COMS10009 Object-Orientated Programming and COMS12200 Introduction to Computer Architecture



School/department Department of Computer Science
Faculty Faculty of Engineering


The unit seeks to provide an introduction to the specification of programming languages and the design of compilers.

It aims to give an overview of the entire language engineering process, from the syntax and semantics of programs to compilation and run-time systems.

The use of tools will be favoured where appropriate, and theoretical topics will be introduced as needed to support this approach.

Intended learning outcomes

At the end of this unit, a student will be able to:

  1. Understand denotational, axiomatic, operational styles of semantics
  2. Formally prove the correctness of simple programs
  3. Parse source programs and generate low-level code from them
  4. Carry out analyses and optimization of programs
  5. Use tools to generate parsers and verify programs
  6. Write a complete but simple compiler

Teaching details

2 lectures per week supported by a combination of laboratory and problem classes.

Assessment Details

100% Exam

Reading and References

H. Nielson and F. Nielson. "Semantics with applications: a formal introduction". A. Appel. "Modern compiler implementation in Java".