Language-Based Security

This course introduces the fundamentals of language-based approaches to securing software systems. A secure system begins with clearly defined trust assumptions and security policies. Throughout the course, students explore how to analyse and reason about programs and protocols to ensure that these policies are upheld, and learn to classify data flows by their impact on security, distinguishing acceptable from potentially harmful behaviour.

About the course

The course is part of the Security specialisation of the MSc in Computer Science at the IT University of Copenhagen (7.5 ECTS, taught in autumn). Prerequisites are a programming course, discrete mathematics and cryptography.

Learning objectives

After taking this course, students will be able to:

  • apply programming semantics to assess and ensure the security of software systems
  • analyse and reason about security protocols using both computational and symbolic models
  • develop programs in languages that support verifiable computation

Topics

  • Information flow control
  • Non-interference and declassification
  • Symbolic evaluation and safety properties
  • Timing attacks
  • Authorisation
  • Verifiable computation
  • Program analysis tools

Official course description in the ITU course base ↗