Skip to main content

CS349 Principles of Programming Languages

Academic Aims

The module introduces students to fundamental concepts underpinning programming languages and to reasoning about program behaviour.


Learning Outcomes

By the end of the module the student should be able to:

  • Understand a variety of concepts underpinning modern programming languages.
  • Distinguish type disciplines in various programming languages.
  • Use formal semantics to reason aboutprogram behaviour.

  • Implement program interpreters and type inference algorithms.

Content

Scope and binding, untyped programming, type systems, type inference, evaluation relations, higher-order types, references, control operators, subtyping, recursive types, polymorphism.

15 CATS (7.5 ECTS)
Term 2

Organiser:
Sara Kalvala

Syllabus

Online material