Skip to main content ITU
IT Universitety of Copenhagen - Logo
  • Programmes
  • Professional Education
  • Research
  • Collaboration
  • About ITU
  • Centres, hubs & labs
    • Centre for Digital Play
    • Centre for Climate IT
    • Center for Computing Education Research
    • Centre for Digital Welfare
    • Centre for Information Security and Trust
    • Danish Institute for IT Program Management
    • Maritime Hub
    • Labs
  • Sections and research groups
    • Data Science
    • Data, Systems and Robotics
    • Digital Business Innovation
    • Digitalization Democracy and Governance
    • Human-Computer Interaction and Design
    • Play Culture and AI
    • Software Engineering
    • Technologies in Practice
    • Theoretical Computer Science
    • Research groups
  • Research resources
    • ITU Research Portal
    • Find researcher
    • Research ethics and integrity
    • Good Scientific Practice
    • Technical Reports
    • Statement on Academic Freedom
  • PhD Programme
    • About the PhD Programme
    • PhD Courses
    • PhD Defences
    • PhD Positions
    • Types of Enrolment
    • PhD Admission Requirements
    • PhD Handbook
    • PhD Support
Search
  • Dansk
  • English

ITU

Frontpage

ITU / Programmes

Programmes

ITU / Professional Education

Professional Education

ITU / Research

Research

ITU / Collaboration

Collaboration

ITU / About ITU

About ITU

ITU / Programmes / BSc Programmes New

BSc Programmes New

ITU / Programmes / MSc Programmes New

MSc Programmes New

ITU / Programmes / Student Life

Student Life

ITU / Programmes / International students

International students

ITU / Programmes / Open House new

Open House new

ITU / Professional Education / Master in IT Management

Master in IT Management

ITU / Professional Education / Single subjects

Single subjects

ITU / Professional Education / Short courses

Short courses

ITU / Professional Education / Contact

Contact

ITU / Research / Research centers

Research centers

ITU / Research / Sections and research groups

Sections and research groups

ITU / Research / Research resources

Research resources

ITU / Research / PhD Programme

PhD Programme

ITU / Collaboration / Collaboration with students

Collaboration with students

ITU / Collaboration / Employer Branding

Employer Branding

ITU / Collaboration / Research innovation

Research innovation

ITU / Collaboration / Student entrepreneurship

Student entrepreneurship

ITU / About ITU / Organisation

Organisation

ITU / About ITU / Values, strategy and principles

Values, strategy and principles

ITU / About ITU / Facts and Figures

Facts and Figures

ITU / About ITU / Press

Press

ITU / About ITU / Vacancies

Vacancies
  • Programmes
  • Professional Education
  • Research
  • Collaboration
  • About ITU
  • BSc Programmes
  • MSc Programmes
  • Student Life
  • International students
  • Open House
  • Master in IT Management
  • Single Subjects
  • Short courses
  • Contact
  • Centres, hubs & labs
  • Sections and research groups
  • Research resources
  • PhD Programme
  • Collaboration with students
  • Employer Branding
  • Research innovation
  • Student entrepreneurship
  • Organisation
  • Values, strategy and principles
  • Facts and Figures
  • Press and news
  • Vacancies
  • BSc in Global Business Informatics
  • BSc in Digital Design and Interactive Technologies
  • BSc in Software Development
  • BSc in Data Science
  • Guest students
  • ITU Summer University
  • Applying for a BSc programme
  • MSc in Digital Innovation & Management
  • MSc in Digital Design and Interactive Technologies
  • MSc in Software Design
  • MSc in Data Science
  • MSc in Computer Science
  • MSc in Games
  • Master's reform
  • Guest students
  • ITU Summer University
  • Applying for an MSc programme
  • Practical information for international students
  • Ask a student
  • Women in tech
  • Student organisations at ITU
  • Study start
  • Labs for students
  • Special Educational Support (SPS)
  • Study and Career Guidance
  • Exchange students
  • Open House - BSc programmes
  • Open House - MSc programmes
  • Centre for Digital Play
  • Centre for Climate IT
  • Center for Computing Education Research
  • Centre for Digital Welfare
  • Centre for Information Security and Trust
  • Danish Institute for IT Program Management
  • Maritime Hub
  • Labs
  • Data Science
  • Data, Systems and Robotics
  • Digital Business Innovation
  • Digitalization Democracy and Governance
  • Human-Computer Interaction and Design
  • Play Culture and AI
  • Software Engineering
  • Technologies in Practice
  • Theoretical Computer Science
  • Research groups
  • ITU Research Portal
  • Find researcher
  • Research ethics and integrity
  • Good Scientific Practice
  • Technical Reports
  • Statement on Academic Freedom
  • About the PhD Programme
  • PhD Courses
  • PhD Defences
  • PhD Positions
  • Types of Enrolment
  • PhD Admission Requirements
  • PhD Handbook
  • PhD Support
  • Project collaboration
  • Project Market
  • Project postings
  • Post a project posting in the job bank
  • IT Match Making
  • Post a job in the job bank
  • Hire an Industrial PhD
  • ITU NextGen
  • ITU Business Development
  • Board of Directors
  • Advisory Panels
  • Diversity Equity and Inclusion
  • Pedagogical principles
  • Annual reports
  • Key figures
  • Development Contracts
  • Quality and Educational Environment
  • Transparency and Openness
  • Articles of association
  • Asset Management
  • The story of ITU
  • News from ITU
  • Press contacts
  • Press photos
  • Find an expert
  • Logos
  • Job agent
  • Test policy
  • Competence profiles
PhD Programme
ITU  /  Research  /  PhD Programme  /  Courses  /  Archive  /  2022  /  February  /  PhD Course - Program Verification

PhD Course - Program Verification

February 2 - June 17

Organizers:

  • Jesper Bengtson (Associate Professor, course lead)
  • Willard Rafnsson (Assistant Professor)
  • Dawit Tirore (PhD student, TA)

Course advertisement: https://learnit.itu.dk/local/coursebase/view.php?ciid=945

Lecturer(s):

  • Jesper Bengtson
  • Willard Rafnsson

Date(s) of the course:

  • 2022-02-02 – 2022-06-17

Time:

  • 14-16 (lectures)
  • 16-18 (exercises)

Room: 2A20

Course description:

This is a hands-on course that teaches you how to prove that programs are correct. You will get in-depth experience with tools for this task, as well as an understanding of the theory behind them. This course thus equips you to pursue a career in writing safety-critical systems, or in pursuing higher studies in this area.

You will predominately be working with two industry-grade tools for program verification in this course -- Coq and Spark.

The course culminates with a one-month project. As a PhD student you are expected to find a piece of software or a theorem that ties into your thesis work to a significant degree and that you want to prove correct using Coq and/or Spark ADA. Ideally this project should lay the foundations for a publication.

Intended Learning Outcomes

  • Characterise recent developments in programming languages and verification technology
  • Create programs and their specifications using Coq and Spark
  • Construct interactive proofs that show that programs follow their specifications
  • Compare models of programs with their real-life counterparts
  • Assess accuracy of models and make precise what impact any imprecisions have on any proofs made
  • Apply and reflect on theories for modelling, analyzing and constructing programs, specifications, and their proofs of correctness
  • Relate automated and interactive proof assistants and make precise the advantages and disadvantages of both types of systems

Reading list


Reading list:

Software Foundations Volume 1, Chapters Logical Foundations (Benjamin C. Pierce et al.)

https://softwarefoundations.cis.upenn.edu/lf-current/index.html

Software Foundations Volume 3, Verified Functional Algorithms (Andrew W. Appel)
https://softwarefoundations.cis.upenn.edu/vfa-current/index.html

The SPARK reference manual (exact parts TBD)

https://docs.adacore.com/spark2014-docs/html/lrm/

The Why3 Platform (exact parts TBD) (François Bobot et al.)

http://why3.lri.fr/doc/

Programme

Programme:

This course is offered to regular students, and to PhD students. This is the first time this course has its own elective but I have taught it for the past ten years as part of other courses, and frequently for PhD students from ITU, DTU and KU.

Regardless of student level this is a difficult course with a heavy focus on logics and mathematics. It is not likely that students have come across large parts of the curriculum or the tools that we use (Coq and Spark ADA)  before, so joint lectures make sense. The level of the mathematics required depends heavily on what type of software it is you want to prove correct. The weekly exercises in the reading material are substantial and can be trimmed to fit the level of the student.

The level of the course largely depends on the application of the curriculum and the tools we use. PhD students will leverage their previous degrees to formalise more advanced mathematics, and prove correctness of more complicated programs, than the other students. For PhD students this means in practice that:

  1. They are not allowed to work in groups for the weekly assignment
  2. The weekly assignments are larger and cover a wider curriculum than for the other students in order to prepare them for more advanced projects.
  3. The mini-project requires that they verify a much more complicated data structure than the other students (red-black threes as opposed to binary search trees and/or insertion sort)
  4. Their final larger project must be relevant to their research. This means that, unless the students happen to work in the same research group, the projects must be individual. Regardless, the scope of the project scales with the number of participants.

All lectures will have a 15-minute break. Exercise sessions allow students to take breaks as required.

Wednesday 2022-02-02: Basics/Induction

Wednesday 2022-02-09: Polymorphism and higher-order functions (weekly assignment 1)

Wednesday 2022-02-16: Logic in Coq (weekly assignment 2)

Wednesday 2022-02-23: Inductively Defined Propositions (weekly assignment 3)

Wednesday 2022-03-02: Induction Principles (weekly assignment 4)

Wednesday 2022-03-09: Curry-Howard and program extraction (weekly assignment 5)

mini-project start, (Software Foundations Volume 3)

  • Regular students: Insertion sort and/or binary search trees
  • PhD students: red-black trees 

Wednesday 2022-03-16: Big-step operational semantics and Hoare Logic

Wednesday 2022-03-23: Automated proof assistants

Wednesday 2022-03-30: SPARK Ada: Verifying imperative programs (mini-project submission)

Wednesday 2022-04-06: The Why3 Platform (weekly submission 6)

Wednesday 2022-04-13: Spring break

Wednesday 2022-04-20: Project (weekly submission 7)

Project start

Wednesday 2022-04-27: Project

Wednesday 2022-05-04: Project

Wednesday 2022-05-11: Project

Wednesday 2022-05-18: Project

Wednesday 2022-05-25: Project submission LearnIT

Thursday 2022-06-16: Oral Exam

Friday 2022-06-17: Oral Exam

Prerequisites:

  • Functional Programming
  • Discrete Mathematics
  • Algorithms and Data Structures

Exam:

Project connected to their PhD thesis (most likely individual unless students come from the same research group)
Oral exam

Credits: 7.5 ECTS

Amount of hours the student is expected to use on the course:

Preparation for lectures: 10h

Lectures: 20h

Exercise sessions: 20h

Weekly Exercises (outside exercise sessions): 54h

Mini project: 30h

Main Project: 60h

Exam preparation: 10h

How to sign up:

Send email to Jesper Bengtson: bengtson@itu.dk



IT-Universitetet i København - Logo

Contact

IT University of Copenhagen
Rued Langgaards Vej 7
DK-2300 Copenhagen S
Denmark

Telephone: +45 7218 5000
E-mail: itu@itu.dk
All contact information
How to get here
Building accessibility

Explore

News
Vacancies
Events

Useful links

ITU Library Service
ITU Student
ITU Alumni
Body of External Examiners
Press

Invoicing

CVR-nr. 29 05 77 53
P-number: 1005162959
EAN-nr. 5798000417878
Send invoice

Web

Web Accessibility Statement
Privacy Statement

ITU at Instagram ITU at Facebook ITU at Linkedin ITU at Youtube ITU at Bluesky

This page is printed from https://en.itu.dk/Programmes/MSc-Programmes/Data-Science