NWI-IBC040
Functional Programming
Course infoSchedule
Course moduleNWI-IBC040
Credits (ECTS)6
CategoryBA (Bachelor)
Language of instructionEnglish
Offered byRadboud University; Faculty of Science; Informatica en Informatiekunde;
Lecturer(s)
Coordinator
dr. J.E.W. Smetsers
Other course modules lecturer
Lecturer
dr. J.E.W. Smetsers
Other course modules lecturer
Contactperson for the course
dr. J.E.W. Smetsers
Other course modules lecturer
Examiner
dr. J.E.W. Smetsers
Other course modules lecturer
Academic year2019
Period
KW1-KW2  (02/09/2019 to 02/02/2020)
Starting block
KW1
Course mode
full-time
Remarks-
Registration using OSIRISYes
Course open to students from other facultiesYes
Pre-registrationNo
Waiting listNo
Placement procedure-
Aims
This course teaches you to how to solve (programming) problems in a functional way. This includes:
  1. Writing programs in a functional style;
  2. Choosing and developing suitable data structures (data types and operations) for given problems, such as primitive types (Integer, Bool, …), predefined (recursive) lists (including list comprehensions, and generic list operations), trees, etc.
  3. Using and deploying FP concepts, like higher-order functions, polymorphism and classes.
  4. Applying predefined programming schemes instead of explicit recursion (map, fold, scan).
  5. Reasoning about functional programs (based on equational reasoning, structural induction, properties of programming schemes).
  6. Knowing and applying fundamental techniques for incorporating side-effects in FP (IO, Applicatives and Monads)
  7. Applying abstraction to obtain generic implementations of programming schemes for arbitrary data types (generalized folds and unfolds).
Content
This course introduces you to the functional programming paradigm. It makes use of the programming language Haskell, in which programs can be viewed as mathematical functions. Haskell offers powerful concepts like higher-order functions, polymorphic datatypes and type classes. These concepts make it possible to easily write programs that would be significantly more complex or extensive when written in other languages.  The mathematical foundations enable you to reason about functional programs using relatively simple mathematical techniques such as equational reasoning and induction.
Level
Bachelor
Presumed foreknowledge

Test information

Specifics

Levels
Bachelor

Recommended materials
Book
ISBN: 978-1316626221
Title:Programming in Haskell (2nd Edition)
Author:Graham Hutton
Publisher:Cambridge University Press

Instructional modes
Cursusgebeurtenissen
Attendance MandatoryYes

Tests
Exam
Test weight1
Test typeExam
OpportunitiesBlock KW2, Block KW3

Lab
Test weight0
Test typeLab course
OpportunitiesBlock KW2