Skip to main content

DD1361 Programming Paradigms 7.5 credits

Course offering missing for current semester as well as for previous and coming semesters
Headings with content from the Course syllabus DD1361 (Autumn 2014–) are denoted with an asterisk ( )

Content and learning outcomes

Course contents

Functional programming: concept of function, higher-order functions, currying, strategies of evaluation, streams, pattern matching, overloading, polymorphism, interpreting, types and classes.

Logic programming: unification, backtracking, negation and cuts as well as non-deterministic programming and block diagram.

Formal languages and syntax analysis: automata, regular expressions, grammars, lexical analysis, recursive descent, language classes.

Internet programming.

Language Translation: interpreting, compilation and linking.

Intended learning outcomes

After the course the student should be able to

  • apply and explain common concepts in programming: recursion, control flow, interpreting, paradigms
  • apply and explain basic concepts of functional programming: higher-order functions, currying, lazy evaluation, pattern matching, types and classes
  • apply and explain basic concepts of logic programming: unification, backtracking, cuts, negation and different programming techniques such as generate-test
  • apply and explain basic concepts in formal languages and syntax analysis: automata, regular expressions, grammars, lexical analysis, and recursive descent
  • write their own client-server and use protocols and explain how they are interpreted and written

in order to

  • get a broader perspective on programming,
  • judge which paradigm and which programming language that is appropriate for solving a specific task,
  • use the appropriate style of programming in the selected programming paradigm,
  • actively participate in discussions about programming paradigms, programming language history, language definition, properties of type systems, principles of language design, language translation, programming principles and programming concepts.

Course disposition

No information inserted

Literature and preparations

Specific prerequisites

For single course students: completed upper secondary education including documented proficiency in Swedish corresponding to Swedish B, English corresponding to English A. Furthermore: 7,5 hp in mathematics and 6 hp in computer science or programming technics.

Recommended prerequisites

For those studying at KTH: DD1337, DD1338 and DD1350 Logic for Computer Science (can be taken in parallell) or equivalent.


No information inserted


To be announced at least 4 weeks before course start at the web page for the course. Last year material produced at the department was used.

Examination and completion

If the course is discontinued, students may request to be examined during the following two academic years.

Grading scale

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


  • LAB2 - Laboratory Work, 4,5 hp, betygsskala: A, B, C, D, E, FX, F
  • TEN2 - Examination, 3,0 hp, betygsskala: P, 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.

In this course all the regulations of the code of honor at the School of Computer science and Communication apply, see:

Opportunity to complete the requirements via supplementary examination

No information inserted

Opportunity to raise an approved grade via renewed examination

No information inserted


Profile picture Marcus Dicander

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.

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 DD1361

Offered by

EECS/Computer Science

Main field of study


Education cycle

First cycle

Add-on studies

DD2481 Principles of Programming Languages, DD2372 Automata and Languages, DD2457 Program Semantics and Analysis, ID2213 Logic Programming


Marcus Dicander, e-post:

Supplementary information

The course was given for the last time autumn 2017. It has been replaced by DD1362. Last possibility to be examined on DD1361 is spring 2021.