ID1019 Programming II 7.5 credits

Programmering II

Show course information based on the chosen semester and course offering:

Offering and execution

No offering selected

Select the semester and course offering above to get information from the correct course syllabus and course offering.

Course information

Content and learning outcomes

Course contents *

The course covers the programming techniques used in functional programming as well as how programs can be divided into several executing thread and how these are coordinated. Example on programming technologies are recursive definitions, in-mutable data structures, higher order functions and closures. Coordination of multiple threads is shown by shared mutable data structures and by message passing
between processes.

The course will use one programming language as its main language but will also show on similarities and diferences with other functional languages

Intended learning outcomes *

The student should after completed the course be able to:

Functional programming:

  • Explain the fundamentals of functional programming and its operational semantics.
  • Understand and be able to use the following constructions in a functional programming language: recursion, pattern matching, functions as first class objects, closures, higher order functions and in-mutable data structures.
  • Implement selected algorithms in a functional programming language.
  • Use the notion of asymptotic time complexity in the evaluation of an implementation.

Concurrent programming:

  • Explain the need for concurrent programming.
  • Be able to evaluate the advantages and disadvantages and be able to use mechanisms to implement concurrent systems.
  • Explain and demonstrate typical problem, for example race conditions, dead-lock and starvation, that can occur in concurrent programs.

Course Disposition

No information inserted

Literature and preparations

Specific prerequisites *

  • ID1018 Programming I 
  • ID1020 Algorithms and Data Structures 
  • IX1500/SF1610 Discrete Mathematics 

Recommended prerequisites

No information inserted


No information inserted


Articles, tutorial and documentation, freely available on-line and recommended additional literature.

Additional literature: Introducing Elixir: Getting Started in Functional Programming, by Simon St. Laurent, J. Eisenberg. Publisher: O'Reilly Media.

Examination and completion

Grading scale *

A, B, C, D, E, FX, F

Examination *

  • TEN2 - Examination, 7.5 credits, Grading scale: A, B, C, D, E, FX, F

Based on recommendation from KTH’s coordinator for disabilities, the examiner will decide how to adapt an examination for students with documented disability.

The examiner may apply another examination format when re-examining individual students.

The course will have the following outline:

  1. Lectures: aprx 16 that will cover the theoretical aspects.
  2. Exercises: aprx 6, where the students are given help with assignments by teaching assistants.
  3. Seminars: aprx 6, where students can present and discuss their solutions on given assignments.

Opportunity to complete the requirements via supplementary examination

No information inserted

Opportunity to raise an approved grade via renewed examination

No information inserted


Johan Montelius

Further information

Course web

Further information about the course can be found on the Course web at the link below. Information on the Course web will later be moved to this site.

Course web ID1019

Offered by

EECS/Computer Science

Main field of study *


Education cycle *

First cycle

Add-on studies

No information inserted

Ethical approach *

  • All members of a group are responsible for the group's work.
  • In any assessment, every student shall honestly disclose any help received and sources used.
  • In an oral assessment, every student shall be able to present and answer questions about the entire assignment and solution.

Supplementary information

In this course, the EECS code of honor applies, see: