Objectives and Content
The course teaches advanced techniques and theory for programming in functional programming languages.
In functional programming, the type system and other abstractions in the language can be used to express advanced programming patters which produces concise programs with a clear meaning. Monads which expresses computations with side-effects or other context, are some of the most important such abstractions, and thus an important part of this course. Other central topics are partiality/totality, co-recursion, lazy evaluation, as well as algebraic and dependent types.
The theoretical part of the course is based on research in type theory, and gives a syntactic and semantic background for the programming-techniques presented in the course. The aim with the theory is to give a framework for understanding properties, constructions and patterns in functional programming languages.
On completion of the course the student should have the following learning outcomes defined in terms of knowledge, skills and general competence:
- is familiar with the most important methods of abstractions in functional programming
- understands how these abstractions can be used in specific programming languages
- understands the theory behind the abstractions
- can develop advanced programs in a functional programming language
- cap express structures in algebraic and dependent types
- can communicate ideas related to functional programming to others
- can present techniques and specific programs which they have written in a competent manner
Level of Study
Semester of Instruction
Place of Instruction
Required Previous Knowledge
Recommended Previous Knowledge
Credit Reduction due to Course Overlap
Access to the Course
Teaching and learning methods
Compulsory Assignments and Attendance
Approved compulsory assignments and/or approved oral presentation of programming project.
Compulsory activities are valid for two semesters, the semester the activity is approved and the following semester.
Extra activities for PHD-students (elevated course): Give a presentation or write a report about an advanced, functional technique for programming.