CSC4020Z - Functional Programming

12 credits at NQF level 8

Entry Requirements:

Admission to BSc Hons specialising in Computer Science or Information Technology.

Course Outline:

This course will expose students to the alternative functional programming paradigm, its theoretical underpinnings in the lambda calculus and its practical implementation in specific languages. Students' theoretical understanding of computability will be expanded from the introduction in the undergraduate theory of algorithms module where a Turing machine approach was used. Students will be introduced to the notion of “functions as rules”. Students will also learn how to use functional programming as a practical programming skill. Topics include side effect free programming and its benefits; first-class functions and higher-order functions; partial application and defining higher-order operations on aggregates, especially map, reduce/fold, and filter. Important new functional programming concepts including lazy evaluation and monads.