University of Oxford Logo University of OxfordDepartment of Computer Science - Home

Functional Programming:  2009-2010

Information

Lecturer

Degrees

ModerationsHonour School of Computer Science

Schedule AMSc in Computer Science

MSc by Research

Term

Overview

This is a first course in programming. It makes use of a programming language called Haskell, in which programs can be viewed as mathematical functions. This makes the language very powerful, so that we can easily construct programs that would be difficult or very large in other languages.

An important theme of the course is how to apply mathematical reasoning to programs, so as to prove that a program performs its task correctly, or to derive it by algebraic manipulation from a simpler but less efficient program for the same problem.

The course provides hands-on experience of programming through two lab exercises: the first one aims to make you acquainted with the mechanics of writing Haskell programs, and the second one tackles a more challenging programming task.

Mathematics students taking this course should note that the practical exercises are a compulsory part of the course and will be assessed.

Learning outcomes

At the end of the course the student will be able to:

  1. Write programs in a functional style;
  2. Reason formally about functional programs;
  3. Use polymorphism and higher-order functions;
  4. Reason about the time and space complexity of programs.

Synopsis

Syllabus

Principles of functional programming: expressions, evaluations, functions, and types. Type definitions and built-in types: numbers, characters, strings and lists. Basic operations on lists, including map, fold and filter, together with their algebraic properties. Recursive definitions and structural induction. Simple program calculation. Infinite lists and their uses. Further data structures: binary trees, general trees. Use of trees for representing sets and symbolic data. Normal order reduction and lazy evaluation. Simple cost models for functional programs; time and space complexity.

Reading list

Course text:
Additional Reading: