Computing

Comparative Programming

Module code: G6021
Level 6
15 credits in autumn semester
Teaching method: Lecture, Laboratory
Assessment modes: Unseen examination

On this module you'll learn the basic techniques of declarative and functional programming, using languages such as Prolog and Haskell.

You'll consider the suitability of these paradigms in addressing various problems in AI, data processing, and mathematical reasoning.

You'll look at issues including:

  • data representation
  • algorithm design
  • efficiency
  • clarity and tool support when comparing declarative, functional and imperative paradigms.

Learning new languages and styles will help you see how to choose the right language for a task. While studying Haskell, we will also look at wider ideas in programming languages. We will use examples from Java, C, assembler, Haskell, PHP, and SQL.

Module learning outcomes

  • Apply the core language features and conventions of a functional programming language to solve problems.
  • Describe the principles of functional programming more generally, including the behaviour and application of concepts including functions, types, choice, lists, recursion, higher order functions, side effects, schemas and lazy evaluation.
  • Compare the styles and techniques in functional, imperative, object-oriented and other programming paradigms; and critically analyse their suitability in solving given problems.
  • Discuss the differences and merits of various features of languages, illustrate their use and explain their implementation. Such features include: subroutine and larger structures; pointers and literals; explicit memory management; strong and weak typing; documentation in code; lazy and eager evaluation; side effects.