Programme And Module Handbook
 
Course Details in 2025/26 Session


If you find any data displayed on this website that should be amended, please contact the Curriculum Management Team.

Module Title LH Programming Language Principles, Design, and Implementation
SchoolComputer Science
Department Computer Science
Module Code 06 30230
Module Lead Professor Uday Reddy
Level Honours Level
Credits 20
Semester Semester 1
Pre-requisites LI Operating Systems and Systems Programming - (06 38059) LI Functional Programming - (06 34253)
Co-requisites
Restrictions None
Contact Hours Lecture-33 hours
Guided independent study-167 hours
Total: 200 hours
Exclusions
Description By now students will have seen and used a variety of programming languages. In this module they will also understand the principles behind their design along with techniques for transforming human-friendly programs written in high-level programming languages such as C, Java, or Haskell, into machine-friendly sets of instructions, written for example in assembly. This module introduces some of the central concepts and techniques used to design and study programming languages, from syntactic and semantic specification to compilation. Students will see how to design a language by first defining its syntax (e.g., grammar rules) and semantics (e.g., operational semantics). They will further learn how types can be used to guarantee that programs are “safe”, thereby preventing certain catastrophic errors. We will see that types have other uses. They can for example be used as abstraction mechanisms that allow hiding implementation details. Finally, the module will describe the structure of a typical compiler, including front end phases that implement the syntactic and semantic specification of a language, and the code generation and optimization backend phases, as well as the key techniques used in those phases.
Learning Outcomes By the end of the module students should be able to:
  • Understand operational semantics
  • Apply typing algorithms to check or infer types
  • Use compilation techniques to transform source code into target code
  • Understand the principles behind those compilation techniques
Assessment 30230-01 : Examination : Exam (Centrally Timetabled) - Written Unseen (80%)
30230-02 : Continuous Assessment : Coursework (20%)
Assessment Methods & Exceptions Assessment:

Examination (80%);
Continuous Assessment (20%)

Reassessment:
Examination (100%)
Other
Reading List