Functional Programming

University of Glasgow

Course Description

  • Course Name

    Functional Programming

  • Host University

    University of Glasgow

  • Location

    Glasgow, Scotland

  • Area of Study

    Computer Engineering, Computer Science

  • Language Level

    Taught In English

  • Course Level Recommendations


    ISA offers course level recommendations in an effort to facilitate the determination of course levels by credential evaluators.We advice each institution to have their own credentials evaluator make the final decision regrading course levels.

    Hours & Credits

  • SCQF Credits

  • Recommended U.S. Semester Credits
  • Recommended U.S. Quarter Units
  • Overview

    Short Description

    Functional programming is introduced using Haskell. The standard programming techniques, as well as some advanced topics, are covered and applied to realistic programming problems.

    Requirements of Entry

    Advanced Programming 3 (or equivalent), Programming Languages 3 (or equivalent).


    Written feedback on assessed exercises. Exam 80% and coursework 20%.
    The coursework cannot be redone because it is impossible to generate an equivalent piece of coursework which replicates the original one because of the follow-up work which was done subsequent to the original submission. Feedback provided to the students after the original coursework would give any student redoing coursework an unfair advantage.
    Main Assessment In: April/May

    Course Aims

    Functional programming languages are one of the central focuses of modern research in programming languages, and they are also of immense practical utility. This course presents the concepts of functional programming using Haskell, which is one of the most widely used functional languages. The emphasis is on developing practical programming skills, using advanced techniques such as monads, parallelism, metaprogramming, and formal methods.

    The aims are to understand the principles of functional programming, including functions, expressions, types, type inference, equational reasoning, and monads, and to develop the ability to solve substantial programming problems using Haskell.

    Intended Learning Outcomes of Course

    By the end of the course students will be able to:
    1: Write simple programs involving elementary Haskell techniques, including pure function definitions;
    2: Use standard combinators for operating on lists;
    3: Define new algebraic data types and use recursion to define functions that traverse recursive types;
    4: Demonstrate understanding of how to express data structures and function interfaces using types, and how to infer types;
    5: Demonstrate understanding of how to structure programs using monads, how to use the most common standard monads (including IO, Maybe, and State), and how to use a monad transformer;
    6: Develop substantial software applications including GUIs and system interaction;
    7: Use formal methods to prove properties of functional programs;
    8: Implement a package using cabal, and use the hackage database.

Course Disclaimer

Courses and course hours of instruction are subject to change.

Credits earned vary according to the policies of the students' home institutions. According to ISA policy and possible visa requirements, students must maintain full-time enrollment status, as determined by their home institutions, for the duration of the program.

ECTS (European Credit Transfer and Accumulation System) credits are converted to semester credits/quarter units differently among U.S. universities. Students should confirm the conversion scale used at their home university when determining credit transfer.

Please note that some courses with locals have recommended prerequisite courses. It is the student's responsibility to consult any recommended prerequisites prior to enrolling in their course.


This site uses cookies to store information on your computer. Some are essential to make our site work; others help us improve the user experience. By using the site, you consent to the placement of these cookies.

Read our Privacy Policy to learn more.