Skip to main content

CS349 Principles of Programming Languages

CS349 15 CATS (7.5 ECTS) Term 2

Availability

Option - CS, CSE, CBS, DM

Prerequisites

None.

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.

Books

  • Benjamin C. Pierce, Types and Programming Languages, MIT Press, 2002
  • John C. Mitchell, Concepts in Programming Languages, CUP, 2003
  • Peter Sestoft, Programming Language Concepts, Springer, 2012
  • Benjamin C. Pierce, Chris Casinghino, Marco Gaboardi, Michael Greenberg,Cătălin Hriţcu, Vilhelm Sjöberg, Brent Yorgey, Software Foundations, online edition, 2013

Assessment

Two-hour examination (70%), coursework (30%)

Teaching

30 one-hour lectures plus 10 one-hour seminars


Jalote P, Fault Tolerance in Distributed Systems, Prentice Hall, 1994.
Lynch N, Distributed Algorithms, Morgan Kauffman, 1996.
Gouda M, Elements of Network Protocol Design, John Wiley, 1998.
  • Background: development and scope of social informatics; practical goals.
  • Understanding individual behaviour: perception, memory and action.
  • Modelling human interaction with digital systems.
  • Design methodologies and notations.
  • Techniques and technologies: dialogue styles, information visualisation.
  • Designer-user relations: iteration, prototyping.
  • Evaluation: formative and summative; performance and learnability.
  • Mobile computing and devices: novel interfaces; ubiquitous computing.
  • Organisational factors: understanding the workplace; resistance; dependability.
Innovation processes at scale: social shaping of IT, actor-network theory, co-production.