Student Pages
Undergraduate course

Advanced functional programming

Main content

ECTS Credits


Level of Study

Bachelor and master (can be elevated and offered at PHD-level).

Teaching semester


Place of Instruction


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.

Learning Outcomes

On completion of the course the student should have the following learning outcomes defined in terms of knowledge, skills and general competence:


The student

  • 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


The student

  • can develop advanced programs in a functional programming language
  • cap express structures in algebraic and dependent types

General competence

The student

  • can communicate ideas related to functional programming to others
  • can present techniques and specific programs which they have written in a competent manner

Required Previous Knowledge


Recommended Previous Knowledge


Credit Reduction due to Course Overlap


Access to the Course

Access to the course requires admission to a programme of study at The Faculty of Mathematics and Natural Sciences

Teaching and learning methods

Lectures and lab for up 6 hours per week

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.

Forms of Assessment

Programming project with report. Compulsory exercises may count towards the final grade.

Examination Support Material


Grading Scale

The grading scale used is A to F. Grade A is the highest passing grade in the grading scale, grade F is a fail.

Assessment Semester

Examination both spring semester and autumn semester. In semesters without teaching the examination will be arranged at the beginning of the semester.

Reading List

The reading list will be available within June 1st for the autumn semester and December 1st for the spring semester

Course Evaluation

The course will be evaluated by the students in accordance with the quality assurance system at UiB and the department

Course Administrator

The faculty of Mathematics and Natural Sciences by Department of informatics has the administratvie responsibility for the course and the study programme


Course coordinator and administrative contact person can be found on Mitt UiB, or contact Student adviser

Exam information