Course syllabus adopted 2025-05-23 by Head of Programme (or corresponding).
Overview
- Swedish nameAvancerad teori för programmeringsspråk
- CodeDAT700
- Credits7.5 Credits
- OwnerMPALG
- Education cycleSecond-cycle
- Main field of studyComputer Science and Engineering
- DepartmentCOMPUTER SCIENCE AND ENGINEERING
- GradingTH - Pass with distinction (5), Pass with credit (4), Pass (3), Fail
Course round 1
- Teaching language English
- Application code 02143
- Open for exchange studentsNo
Credit distribution
Module | Sp1 | Sp2 | Sp3 | Sp4 | Summer | Not Sp | Examination dates |
---|---|---|---|---|---|---|---|
0125 Project, part A 5 c Grading: TH | 5 c | ||||||
0225 Examples class, part A 2.5 c Grading: UG | 2.5 c |
In programmes
Examiner
- Jean-Philippe Bernardy
- Senior Lecturer, Computing Science, Computer Science and Engineering
Eligibility
General entry requirements for Master's level (second cycle)Applicants enrolled in a programme at Chalmers where the course is included in the study programme are exempted from fulfilling the requirements above.
Specific entry requirements
English 6 (or by other approved means with the equivalent proficiency level)Applicants enrolled in a programme at Chalmers where the course is included in the study programme are exempted from fulfilling the requirements above.
Course specific prerequisites
- 7.5 credits of functional programming with Haskell (TDA555 or equivalent)- 7.5 additional credits with one other programming language
- 7.5 credits in programming language technology (syntax, compilers and/or interpreters) (DAT151, DIT231 or equivalent)
- 7.5 credits in discrete mathematics and logic (TMV211 and DAT060 or equivalent).
Aim
To be able to really understand programming, one needs to understand programming language constructions precisely. The aim of this course is to present a broad range of programming languages principles, using a rigourous methodology. This means how to design a custom programming language, how different features interact and how they fit in within a certain paradigm. The course covers static (syntax, types systems) and dynamic (transition systems, operational semantics) aspects of programming languages. The main programming language features (functions, data types, subtyping, etc.) will be covered. Emphasis will be placed on reasoning and abstract models, challenging students to critically analyze language design choicesLearning outcomes (after completion of the course the student should be able to)
- Understand the structure of programming languages- Know some of the principal constructions of programming languages and how they interact
- For each construction, be able to write their static (syntax, types) and dynamic (evaluation) descriptions
- Conceptually develop new language features
- Design a programming language with a mix of advanced features; or a custom programming language for a specific domain.
- Critically assess literature in the field of programming language design and theory.
Content
- Typing Judgements- Operational Semantics and Type Preservation
- Functions and Simply Typed Lambda Calculus
- Product, Sum and Recursive Types
- Parametric Polymorphism
- Subtyping and Classes
- Exceptions and Continuations
- State
- Laziness
- Parallelism and Concurrency
- Equational Reasoning
Organisation
Lectures and group workLiterature
Course literature is announced no later than eight weeks before the course startsExamination including compulsory elements
The course is evaluated by means of participation in mandatory group sessions (seminars) and realisation of a project and its presentation. Due to resource constraints, only a single examination session is available per year.The course examiner may assess individual students in other ways than what is stated above if there are special reasons for doing so, for example if a student has a decision from Chalmers about disability study support.