Course Information
COMP3258 Functional Programming

COMP3258 Functional Programming

2017-18
Instructor(s):Oliveira Bruno
(Class A) No. of credit(s):6
Recommended Learning Hours:
Lecture: 33.0
Tutorial: 6.0
Pre-requisite(s):COMP2121 or CSIS1118 or CSIS1121
Co-requisite(s):  
Mutually exclusive with:  
Remarks:

Course Learning Outcomes

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 aPLO bPLO cPLO dPLO ePLO fPLO gPLO hPLO iPLO j
CLO 1P
CLO 2P
CLO 3T,P
CLO 4T

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 Functions4
Recursion4
Algebraic datatypes4
Equational Reasoning Mapped to CLOs
Equational Reasoning3
Functional Properties3
Quickcheck1, 3
Advanced Haskell Mapped to CLOs
Type Classes1, 4
Monads1
Functors and Applicative Functors1
Tools Mapped to CLOs
GHC Compiler2
GHC Interpreter2
Haskell mode in Emacs2

Assessment:
Continuous Assessment: 50%
Written Examination: 50%

Teaching Plan

Please refer to the corresponding Moodle course.

Moodle Course(s)

COMP3258A