Declarative Languages 7.5 Credits

Deklarativa språk
Second cycle, D7012E
Course syllabus valid: Spring 2019 Sp 3 - Present
The version indicates the term and period for which this course syllabus is valid. The most recent version of the course syllabus is shown first.

Syllabus established
by Department of Computer Science and Electrical Engineering 28 Feb 2007

Last revised
by Jonny Johansson, HUL SRT 08 May 2018

Education level
Second cycle
Grade scale
G U 3 4 5
Computer Science
Subject group (SCB)
Computer Technology
Main field of study
Computer Science and Engineering

Entry requirements

Good knowledge of imperative programming (D0009E) and object-oriented programming & design (D0010E). Functions and relations, combinatorics, set theory, state automata (M0009M). Searching and sorting, common data structures like queues, stacks, lists, trees and graphs (D0012E).

More information about English language requirements


The selection is based on 20-285 credits

Course Aim

The student should

  • Demonstrate knowledge of best practices for software development in functional and logic-based languages and its scientific foundation.
  • Demonstrate the ability to critically, independently analyze and model complex problems and use appropriate methods to plan and solve problems through declarative software and analyze and evaluate the results.
  • Demonstrate the ability to create technological solutions using polymorphic type systems in functional languages ​​ , and to critically evaluate and analyze them.
  • Demonstrate the ability to create technological solutions, using the declarative search algorithms in logic-based languages ​​ , and to critically evaluate and analyze them.
  • Demonstrate the ability to identify the need for and acquire further knowledge by solving problems that require acquisition of considerable body of knowledge on their own.
  • Show awareness of research and development by understanding the limitations and possibilities of declarative programming.
  • Show profound knowledge of functional programming and broad knowledge of it including the application of functional programming in traditional languages .

Expressions vs. commands, functional programming, pattern matching, higher order functions, recursion over lists and trees. Static type safety, polymorphic types, overloading with type classes, type inference, type abstraction, introduction to expressive module systems. Declarative programming of effects, monads. Relations vs. functions from an operational view, logic programming, unification and back-tracking. Properties of declarative programs, evaluation semantics, referential transparency. Declarative programming in classic languages.

The first half of the course is devoted to functional programming using Haskell while the second part focuses on logic programming using Prolog. Instruction consists of lectures and laboratory work. Lab assignments are reported in writing and/or by demonstration, and may be associated with a deadline. Homework assignments that render credit marks on the subsequent written exam may also occur during the course.


Written exam as well as written or oral lab assignment reports. An exam in direct connection to when the course is given is divided into two separate tests. The first test, that concerns functional programming only, is given in the middle of the course (like a midterm exam). The second test, on logic programming only, is given at the end of the course. The results of the two tests are weighted together into the grade on the written exam part of the examination. At re-exams, both tests are combined into one test given at the same time.  Passing the lab assignment part of the course requires a passed grade on all individual assignments.

Håkan Jonsson

Literature. Valid from Spring 2019 Sp 3 (May change until 10 weeks before course start)
Simon Thompson: Haskell - The Craft of Functional Programming, 2/E
ISBN-10: 0201342758, ISBN-13: 9780201342758

Paul Brna: Prolog Programming

Ivan Bratko. PROLOG Programming for Artificial Intelligence, 3rd ed. Addison-­Wesley, Harlow, 2001

Course offered by
Department of Computer Science, Electrical and Space Engineering

0001Written exam4.5TG G U 3 4 5
0002Laboratory work3.0TG U G#

Study guidance
Study guidance for the course is to be found in our learning platform Canvas before the course starts. Students applying for single subject courses get more information in the Welcome letter. You will find the learning platform via My LTU.