Syllabuses - UG

CS277 - Functional Thinking

TIMETABLETEACHING MATERIAL
Credits10
Level2
SemesterSemester 2
AvailabilityAvailable to students taking BSc Hons Computer Science - Bahrain or BSc Hons Software Engineering - Bahrain
PrerequisitesNone
Learning Activities BreakdownLectures: 10 of 1 hour each - 10 hours total

Practical / Lab: 10 of 2 hours each - 20 hours total

Homework / Private Study: 70 hours

Total hours activity: 100 hours

Items of Assessment2
AssessmentThe class will be assessed by coursework which will consist of weekly multiple choice questions and programming questions and an in person class test. These assessments will be set using a modern functional programming language, such as Haskell.

Feedback will be delivered to students both electronically and in person during labs. Assignments will be assessed electronically and feedback delivered quickly to aid learning.

LecturerAmmar Aldallal

Aims and Objectives

To introduce the core concepts and methods of modern functional programming, serving as an introduction to our third year class on this topic.

Learning Objective 1 : to understand basic functional programming concepts: inductive datatypes, pattern matching, structural recursion

Learning Objective 2 : to understand how to transform and interpret languages of expressions

Learning Objective 3 : to understand functional data structures, e.g. search trees

Learning Objective 4 : to understand abstraction of type parameters and common interfaces

Learning Outcomes

Syllabus

- functions and types; functional composition

- inductive datatypes, pattern matching, structural recursion

- transforming and interpreting languages of expressions

- functional data structures, e.g., search trees

- representation of simple computational effects, e.g. failure by Maybe and choice by lists

- abstraction of type parameters (parametric polymorphism)

- abstraction of common interfaces, e.g., Eq, Ord, Monoid

Recommended Reading

This list is indicative only – the class lecturer may recommend alternative reading material. Please do not purchase any of the reading material listed below until you have confirmed with the class lecturer that it will be used for this class.

There are a variety of books that support this material: Learn You a Haskell for Great Good! by Miran Lipovaca Programming in Haskell by Graham Hutton Thinking Functionally with Haskell by Richard Bird.  This is not a core text and is available in the University Library.

Last updated: 2025-09-02 11:23:41