Unit information: Language Engineering in 2012/13

Please note: you are viewing unit and programme information for a past academic year. Please see the current academic year for up to date information.

Unit name Language Engineering
Unit code COMS22303
Credit points 10
Level of study I/5
Teaching block(s) Teaching Block 2 (weeks 13 - 24)
Unit director Dr. Steve Gregory
Open unit status Not open
Pre-requisites

None

Co-requisites

None

School/department Department of Computer Science
Faculty Faculty of Engineering

Description including Unit Aims

This unit covers the major aspects in the process of producing a compiler for a programming language, including the language specification and algorithms for syntactical parsing, semantic analysis and code generation. It gives an introduction to code optimisation and run time systems.

Intended Learning Outcomes

On successful completion of this unit you will be able to:

  • understand the fundamental structure and algorithms that make up a compiler
  • carry out transformations and analyses on internal representations of programs
  • generate low level instructions
  • create a complete but very simple compiler using tools such as parser generators

Teaching Information

2 hours of lectures per week, 2 hours per week of supervised lab work, plus further personal study to complete programming exercises.

Assessment Information

The unit will be assessed 60% by coursework and 40% by exam. 40% exam: - a 2h written exam on the structure and workings of compiler-related algorithms as well as on representations and transformations of programs, 60% coursework: - the coursework comprises three programming assignments that focus on the implementation of the major compiler components (including syntax parsing, low-level instruction generation and basic optimization) for a simple predefined language applying parser generator software (such as ANTLR) in conjunction with a previously known programming language (such as Java or C)

Reading and References

Andrew Appel “Modern compiler implementation in Java”