University of Malta

Study-Unit Description
UOM Main Page
Apply - Admissions 2016
Campus Map button


TITLE Principles of Programming Languages

LEVEL 03 - Years 2, 3, 4 in Modular Undergraduate Course


DEPARTMENT Computer Science

DESCRIPTION Programming languages are the main vehicle for constructing computational artefacts. They provide the means for specifying computational problems, designing solutions to such problems and automating these solutions as executable algorithms. Programming languages vary substantially from one another in terms of abstraction levels (e.g. access to memory), programming constructs (e.g. iteration versus recursion) and development support (e.g. static type checking versus dynamic typechecking). As a result, the choice of programming language has a considerable impact on the computational artefact produced, in terms of aspects such as ease-of-development, efficiency and maintainability.

This study-unit provides an introduction to the science of this subject matter, exploring some of the theoretical principles underpinning the programming language technologies of today. In particular, it introduces the semantics for a number of programming languages from different paradigms using a structural, operational approach. The operational semantics provides a high-level description of the compiler implementations of the respective languages and allows one to formally state and prove properties about these languages. The study unit also introduces the subject of type systems, reasoning systems used to analyse programs written in such languages and rule our erroneous code. It presents the design space for such systems and uses the formally specified operational semantics of the languages to prove soundness for the type systems presented


• Induct the student to programming language semantics in terms of operational specifications for programming language behavior and static syntactic analysis through logic-based sequent rules;
• Provide the student with mathematical tools to establish correspondences between the two forms of semantics.

Learning Outcomes:

Knowledge and Understanding:
By the end of the unit, the student will be able to:

- Compare and contrast the various forms of operational semantics such as big-step and small-step semantics;
- Recall the difference between the static semantics of a language, defined through a static type system, and the dynamic semantics, defined through the operational semantics. In particular, the student should appreciate better how the static semantics needs to approximate conservatively the dynamic semantics of Turing-complete languages for it to be sound;
- Identify the impact of various programming language mechanisms (e.g. static versus dynamic scoping) on the respective semantics of the language and the programs constructed with it;
- Understand and compare at a conceptual level the differences underpinning present programming language technologies and paradigms.

By the end of the unit, the student will be able to:

- Utilise better the constructs and support provided by the language technology of choice, thus producing more reliable computational artefacts more efficiently;
- Select better the appropriate language paradigm/technology for the computational task at hand;
- Adapt more quickly to future programming languages and paradigms;
- Design better programming abstractions such as libraries and domain specific languages.


- Pierce, B.C. (2002). Types and programming languages. MIT Press
- Hennessy, M. (1990). The semantics of programming languages. Wiley

Supplementary texts:

- Winskel, G. (1993). The formal semantics of programming languages. MIT Press
- Harper, R. (2012). Practical Foundations for Programming Languages. Cambridge University Press

ADDITIONAL NOTES Students taking this study-unit are assumed to have knowledge of the material covered in the following study-units:
- CPS1002;
- CPS1005 or CPS2007;
- CPS2000 or CPS2006;
- CPS2001;
- CPS2004;
- CPS2005.


Assessment Component/s Resit Availability Weighting
Examination (2 Hours and 30 Minutes) Yes 100%

LECTURER/S Adrian Francalanza

The University makes every effort to ensure that the published Courses Plans, Programmes of Study and Study-Unit information are complete and up-to-date at the time of publication. The University reserves the right to make changes in case errors are detected after publication.
The availability of optional units may be subject to timetabling constraints.
Units not attracting a sufficient number of registrations may be withdrawn without notice.
It should be noted that all the information in the study-unit description above applies to the academic year 2017/8, if study-unit is available during this academic year, and may be subject to change in subsequent years.
Study-unit Registration Forms 2017/8


For Undergraduate (Day) and Postgraduate students.


Academic Advisors 2017/8


Academic Advisors for ICT 1st year students (Intake 2017/8), NOW available

Faculty of ICT Timetables


ICT Timetables are available from Here.

Health and Safety Regulations for Labs Form

The Faculty of ICT Health and Safety Regulations for Laboratories form can be found here



Log In back to UoM Homepage