University of Glasgow
Area of Study
Computer Engineering, Computer Science
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.
Recommended U.S. Semester Credits2.5
Recommended U.S. Quarter Units1
Hours & Credits
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
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.
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.