IN2040 – Functional programming

Schedule, syllabus and examination date

Choose semester

Changes in the course due to coronavirus

Autumn 2020 we plan for teaching and examinations to be conducted as described in the course description and on semester pages. However, changes may occur due to the corona situation. You will receive notifications about any changes at the semester page and/or in Canvas.

Spring 2020: Teaching and examinations was digitilized. See changes and common guidelines for exams at the MN faculty spring 2020.

Course content

Programming in a functional language. Recursion. Abstract data types. Data directed programming, memoization, object oriented programming, lists and streams. The strengths and weaknesses of functional programming compared to imperativ programming. Semantics for evaluating function calls and interpreting functional programs.

Learning outcome

Upon completion of IN2040 you will

  • master foundational techniques from the paradigm of functional programming.
  • be trained in using abstraction to structure programs.
  • be able to explain and use recursion in general, as well as know how to distinguish between recursive and iterative processes.
  • be able to write and use higher-order functions.
  • master techniques for delayed evaluation for working with infinite data structures such as streams.
  • have insight in different models for understanding how code is evaluated.

Special admission requirements

In addition to fulfilling the Higher Education Entrance Qualification, applicants have to meet the following special admission requirements:

  • Mathematics R1 or Mathematics (S1+S2)

The special admission requirements may also be covered by equivalent studies from Norwegian upper secondary school or by other equivalent studies. Read more about special admission requirements (in Norwegian).

Formal prerequisite knowledge

IN1000 – Introduction to Object-oriented Programming/INF1000 – Introduction to object-oriented programming (continued)/INF1001 – Grunnkurs i objektorientert programmering (discontinued)/IN1900 – Introduction to Programming with Scientific Applications/INF1100 – Introduction to programming with scientific applications (continued)/HUMIT1700 – Grunnkurs i programmering for humanister (discontinued)

Overlapping courses


2 hours of lectures and two hours of group work per week. In addition there will be guidance for students at their computers. Mandatory assignements must be completed during the course. The first assignment will be handled individually. The next will be solved in groups (2-3 students). Rules for mandatory assigments.


4 hour written digital exam. The mandatory assignments must be approved prior to the exam.

It will also be counted as one of your three attempts to sit the exam for this course, if you sit the exam for one of the following courses: INF2810 – Functional Programming (continued), HUMIT2710 – Funksjonell programmering (discontinued), HUMIT2710MN – Funksjonell programmering (discontinued) and SLI230.

Examination support material

No examination support material is allowed.

Language of examination

You may write your examination paper in Norwegian, Swedish, Danish or English.

Grading scale

Grades are awarded on a scale from A to F, where A is the best grade and F is a fail. Read more about the grading system.

Resit an examination

Students who can document a valid reason for absence from the regular examination are offered a postponed examination at the beginning of the next semester.Re-scheduled examinations are not offered to students who withdraw during, or did not pass the original examination.

Special examination arrangements, use of sources, explanations and appeals

See more about examinations at UiO

Last updated from FS (Common Student System) July 12, 2020 9:15:52 AM

Facts about this course

Teaching language