1.
| [Implementation]
Implement programs correctly using Functional Programming techniques and Haskell. Students should also be able to use tools like Quickcheck to improve the development process. |
2.
| [Technologies]
To use the GHC compiler and the GHCI command line interpreter. |
3.
| [Problem solving]
To analyze and design solutions for problems using common functional programming modeling techniques. In particular students should be able to model data structures as algebraic datatypes, define operations by pattern matching and define properties that the operations should satisfy. |
4.
| [Programming techniques]
To understand and explain the principles of advanced functional programming techniques including recursion, datatypes, higher-order functions, functional data structures and algorithms. |
Mapping from Course Learning Outcomes to Programme Learning Outcomes
| PLO a | PLO b | PLO c | PLO d | PLO e | PLO f | PLO g | PLO h | PLO i | PLO j |
CLO 1 | | | | P | | | | | | |
CLO 2 | | | | | | | | | | P |
CLO 3 | | | T,P | | | | | | | |
CLO 4 | T | | | | | | | | | |
T - Teach, P - Practice
For BEng(CompSc) Programme Learning Outcomes, please refer to
here.
|
Syllabus |
Calendar Entry:
The course teaches the basics of functional programming using the language Haskell. The main goal is introduce students to fundamental programming concepts such as recursion, abstraction, lambda expressions and higher-order functions and data types. The course will also study the mathematical reasoning involved in the design of functional programs and techniques for proving properties about functions so defined. With the adoption of lambda expressions recent versions of Java, C++ or C#, functional programming and related programming techniques are becoming increasingly more relevant even for programmers of languages that are not traditionally viewed as functional. This course is important to introduce students to such techniques.
|
Detailed Description:
Basics of Functional Programming |
Mapped to CLOs
|
Higher-Order Functions | 4 |
Recursion | 4 |
Algebraic datatypes | 4 |
Equational Reasoning |
Mapped to CLOs
|
Equational Reasoning | 3 |
Functional Properties | 3 |
Quickcheck | 1, 3 |
Advanced Haskell |
Mapped to CLOs
|
Type Classes | 1, 4 |
Monads | 1 |
Functors and Applicative Functors | 1 |
Tools |
Mapped to CLOs
|
GHC Compiler | 2 |
GHC Interpreter | 2 |
Haskell mode in Emacs | 2 |
|
Assessment:
Continuous Assessment:
50% Written Examination:
50%
|
Teaching Plan |
Please refer to the corresponding Moodle course.
|
Moodle Course(s) |
|