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  /  2013  /  PhD Course in Dependently Typed Functional Programming with Idris

PhD Course in Dependently Typed Functional Programming with Idris

Organiser:
Edwin Brady, University of St Andrews

Website:
Can be found here.

Lecturer:
Edwin Brady.

Dates of the course:
March 11, 12, 14 and 15, 2013.

Time:
Lecture 13:00-14:30, exercises 15:00-16:00.

Room:
TBA.

Course Description:
Dependently typed functional programming has been an active area of research in programming
languages for some time now. Edwin Brady, one of the leading researchers in the field, will provide
an introduction to dependently typed functional programming using the Idris language. Topics to be
covered include:

  • Language features such as dependent pattern matching, tactic-based proof scripts, and totality checking
  • Embedded domain-specific languages in Idris, including the unique techniques enabled by the presence of dependent types
  • Managing different kinds of effects without the inconvenience of Haskell's monad transformers
  • How to efficiently implement a dependently typed language, including an detailed discussion of the Idris typechecker and compiler.

The topics will be illustrated with examples and there will be exercise sessions following each
lecture.

Program:
Lecture 1: A tour of Idris – Monday, 11 March, 13:00-14:30

  • How to install
  • Why dependent types?
    • Functional and extra functional correctness
    • Verification
    • Generic programming
    • A survey of dependently typed programming languages - why Idris?
  • Introductory examples
    • Vectors
    • Finite sets
    • Heterogeneous lists
  • Theorem proving
    • Properties of Nat
    • Inductive proofs and tactic scripts
    • Totality checking
    • Default arguments
  • A quick tour of language features
    • Case, problems with dependent case
    • The with rule
    • Extended example: Binary arithmetic

Advanced reading: E. Brady: Programming in Idris: a Tutorial (2013)

Exercise Session 1: Monday, 11 March, 15:00-16:00

Lecture 2: Embedded Domain Specific Languages – Tuesday, 12 March, 13:00-14:30

  • What is a domain specific language?
    • A brief history of programming languages and abstractions
  • Example: A well-typed interpreter, and some programs
  • Syntactic support for DSLs:
    • Syntax rules - if/then/else, bindings (e.g. for), pattern/term syntax
    • DSL notation
  • Interlude: System interaction
    • Foreign functions, C bindings
    • Example: File IO
  • Resource aware programming
    • What is a resource?
    • A DSL for resource management

Advance reading:
E. Brady and K. Hammond: A verified staged interpreter is a verified compiler
(2006)

E. Brady and K. Hammond: Resource-safe Systems Programming with Embedded Domain
Specific Languages (2012)

Exercise Session 2: Tuesday, 12 March, 15:00-16:00

Lecture 3: Effect management – Thursday, 14 March, 13:00-14:30

  • The Haskell Approach: Monads
    • A monadic evaluator
    • Problems with monad transformers
  • Algebraic effects
    • State, IO, Exceptions, Random numbers
    • Eff: An Embedded DSL for effect management
    • Writing handlers for effects
    • Example: a stateful and effectful evaluator
  • The Eff interpreter
    • Tracking resources
    • Simple automated theorem proving
    • Syntactic sugar
  • Advanced examples:
    • Reasoning about effects and resource usage
    • Multithreading

Advance reading:
E. Brady and K. Hammond: Resource-safe Systems Programming with Embedded Domain
Specific Languages (2012)

A. Bauer and M. Pretnar: Programming with Algebraic Effects and Handlers (2012)

Exercise Session 3: Thursday, 14 March, 15:00-16:00

Lecture 4: Implementing a Dependently Typed Language – Friday, 15 March, 13:00-14:30

  • The Core Type Theory (TT) and its metatheory
    • Properties
    • Typing rules
  • Tactics and elaboration
    • The development calculus
    • The Elaboration monad
    • Primitive tactics
    • Elaborating data types and functions
    • Elaborating high level constructs: where, with, case, type classes
  • Compilation
    • Phase distinctions
    • Forcing, collapsing and type erasure
    • Partial evaluation

Advance reading:
E. Brady, C. McBride and J. McKinna: Inductive Families Need Not Store Their
Indices (2004)

E. Brady and K. Hammond: Scrapping your Inefficient Engine: Using Partial
Evaluation to Improve Domain-Specific Language Implementation

Exercise Session 4: Friday, 15 March, 15:00-16:00

Exercises will cover the following:

  • vector equivalents of list functions (e.g. take, drop)
  • matrix multiplication
  • length preserving sort
  • permutation preserving sort
  • well-typed interpreter: adding features
  • build a mini imperative DSL, with assignment, while, for
  • making new effects - nondeterminism, cgi, OS/interaction, multithreading

Prerequisites:
Participants should be familiar with a functional programming language and the notion of pure
functional programming.

Exam:
Evaluation will be on a pass/fail basis, and the requirement for passing is active participation in the
lectures, discussions and exercises.

Credits:
4 ECTS

Amount of hours the student is expected to use on the course:
Participation: 12
Preparation: 6

 

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