Syllabus for Functional Programming I

Funktionell programmering I

A revised version of the syllabus is available.

Syllabus

  • 5 credits
  • Course code: 1DL330
  • Education cycle: Second cycle
  • Main field(s) of study and in-depth level: Computer Science A1N

    Explanation of codes

    The code indicates the education cycle and in-depth level of the course in relation to other courses within the same main field of study according to the requirements for general degrees:

    First cycle

    • G1N: has only upper-secondary level entry requirements
    • G1F: has less than 60 credits in first-cycle course/s as entry requirements
    • G1E: contains specially designed degree project for Higher Education Diploma
    • G2F: has at least 60 credits in first-cycle course/s as entry requirements
    • G2E: has at least 60 credits in first-cycle course/s as entry requirements, contains degree project for Bachelor of Arts/Bachelor of Science
    • GXX: in-depth level of the course cannot be classified

    Second cycle

    • A1N: has only first-cycle course/s as entry requirements
    • A1F: has second-cycle course/s as entry requirements
    • A1E: contains degree project for Master of Arts/Master of Science (60 credits)
    • A2E: contains degree project for Master of Arts/Master of Science (120 credits)
    • AXX: in-depth level of the course cannot be classified

  • Grading system: Fail (U), Pass (3), Pass with credit (4), Pass with distinction (5)
  • Established: 2009-03-12
  • Established by:
  • Revised: 2018-08-30
  • Revised by: The Faculty Board of Science and Technology
  • Applies from: Spring 2019
  • Entry requirements:

    120 credits with a second course in computer programming. 15 credits in mathematics, including basic algebra. Proficiency in English equivalent to the Swedish upper secondary course English 6.

  • Responsible department: Department of Information Technology

Learning outcomes

On completion of the course, the student should be able to:

  • list and define the fundamental concepts of functional programming.
  • manually execute a given (simple) functional program.
  • manually infer the type of a given (simple) functional program.
  • implement (simple) algorithms and data structures as functional programs.
  • design (large) functional programs that are modular and have reusable components.
  • explain on a simple problem how functional programming differs from imperative and object-oriented programming.

Content

Fundamental concepts: functions, relations, recursion, tail-recursion, type systems, polymorphism, datatypes, recursive datatypes, introduction to higher-order functions, data abstraction.

Programming in a functional programming language, such as SML.

Similarities and differences with imperative and object-oriented programming.

Instruction

Laboratory work, if required complemented by lectures.

Assessment

Assignments. Voluntary written exam for higher grades.

Reading list

Reading list

Applies from: Spring 2019

Some titles may be available electronically through the University library.

  • Hansen, Michael R.; Rischel, Hans Introduction to programming using SML

    Harlow: Addison-Wesley, 1999

    Find in the library

  • Paulson, Lawrence C. ML for the working programmer

    2. ed.: Cambridge: Cambridge Univ. Press, 1996

    Find in the library

  • Ullman, Jeffrey D Elements of ML programming

    ML97 ed.: Upper Saddle River, NJ: Prentice Hall, 1998

    Find in the library