DM580: Functional Programming

Study Board of Science

Teaching language: Danish or English depending on the teacher, but English if international students are enrolled
EKA: N330078102
Assessment: Second examiner: Internal
Grading: 7-point grading scale
Offered in: Odense
Offered in: Autumn
Level: Bachelor

STADS ID (UVA): N330078101
ECTS value: 5

Date of Approval: 02-03-2023

Duration: 1 semester

Version: Archive

Entry requirements


Academic preconditions

Academic preconditions. Students taking the course are expected to:

  • Have knowledge of basic programming concepts on a level that corresponds to the one achieved through following the course DM574 Introduction to programming.
  • Have a basic understanding of algorithms and data structures, e.g., by having followed the course DM578 Algorithms and data structures.

Course introduction

The course provides an introduction to functional programming. It provides students with experience with programming in languages other than mainstream object-oriented languages.

The course builds on the knowledge acquired in the courses DM574 Introduction to Programming and DM578 Algorithms and Data Structures. It provides a professional basis for choosing courses or bachelor projects in programming languages later on in the program.

In relation to the learning outcomes of the degree the course has explicit focus on:

  • developing skills in programming in different types of programming languages.
  • developing skills in analysing the advantages and disadvantages of different language constructs.
  • developing skills in deciding and justifying professional decisions.
  • giving the competence to identify one's own needs for learning and structuring one's own learning in different learning environments

Expected learning outcome

The learning objective of the course is that the student demonstrates the ability to:
  • solve non-trivial programming tasks in a functional programming language by writing clear and correct code and by applying the standard language libraries.
  • calculate the most general type of a functional expression.
  • estimate time and space consumption of functional programs.
  • prove properties of simple functional programs.


The following main topics are contained in the course:
  • functions
  • higher-order types
  • polymorphism
  • lists
  • lazy evaluation
  • referential transparency
  • monads
  • efficiency considerations
  • proof of correctness


See itslearning for syllabus lists and additional literature references.

Examination regulations

Exam element a)








Second examiner: Internal


7-point grading scale


Full name and SDU username


Normally, the same as teaching language

Examination aids

To be annuonced during the course

ECTS value


Indicative number of lessons

42 hours per semester

Teaching Method

At the faculty of science, teaching is organized after the three-phase model ie. intro, training and study phase.
  • Intro phase: 21 hours
  • Training phase: 21 hours, where tutorials and laboratory exercises are combined according to demand
Activities during the study phase:
  • Implementing minor projects
  • Self-study of various parts of the course material.

Teacher responsible

Name E-mail Department
Peter Schneider-Kamp Data Science


Administrative Unit

Institut for Matematik og Datalogi (datalogi)

Team at Educational Law & Registration


Offered in


Recommended course of study

Profile Education Semester Offer period