Module 11582 (2010)
Syllabus page 2010/2011
06-11582
Software Workshop Haskell
Level 2/I
Links | Outline | Aims | Outcomes | Prerequisites | Teaching | Assessment | Books | Detailed Syllabus
The Module Description is a strict subset of this Syllabus Page. (The University module description has not yet been checked against the School's.)
Relevant Links
Further information about this module,
including any last-minute changes,
corrections and alterations to the information
contained above, can be found on my
Software Workshop Haskell module web page
.
Outline
The purpose of this module is to present the basic ideas of the pure functional programming language Haskell, to demonstrate the main elements of good programming style and to illustrate some of the used and applications of Haskell.
Aims
The aims of this module are to:
- present the basic ideas of the pure functional programming language Haskell
- demonstrate the main elements of good programming style
- illustrate some of the uses and applications of Haskell
Learning Outcomes
| On successful completion of this module, the student should be able to: | Assessed by: | |
| 1 | demonstrate an understanding of the main features and advantages of a functional language. | Examination, Coursework |
| 2 | write programs and implement algorithms in a functional style | Examination, Coursework |
| 3 | use functional programming techniques to solve problems | Examination, Coursework |
| 4 | use higher-order and list-manipulating functions | Examination, Coursework |
| 5 | use various data types appropriately in the solution of problems | Examination, Coursework |
| 6 | demonstrate an understanding in general terms of how a functional language is implemented | Examination, Coursework |
Restrictions, Prerequisites and Corequisites
Restrictions:
None
Prerequisites:
None
Co-requisites:
None
Teaching
Teaching Methods:
Ten one-hour weekly lectures plus ten three-hour demonstrator-supervised laboratory sessions.
Contact Hours:
Assessment
- Sessional: 1.5 hr examination (80%), coursework (20%).
- Supplementary (where allowed): By examination only (100%).
Recommended Books
| Title | Author(s) | Publisher, Date |
| Introduction to Functional Programming using Haskell (second edition) | Richard Bird | Prentice Hall , 1998 |
| Haskell: The Craft of Functional Programming (second edition) | Simon Thompson | Addison Wesley Longman , 1999 |
| Programming in Haskell | Graham Hutton | Cambridge University Press , 2007 |
| Real World Haskell | Bryan O'Sullivan | O'Reilly , 2008 |
| The Haskell School of Expression | Paul Hudak | Cambridge University Press , 2000 |
| An Introduction to Functional Programming Systems Using Haskell | Antony J. T. Davie | Cambridge University Press , 1992 |
| Functional Programming with Haskell | Michael G. Hinchey and Steven A. Jarvis | McGraw-Hill , 1997 |
Detailed Syllabus
- Introduction: aims of the module; structure and organisation of the module; assessment; teaching methods; style of presentation; useful books.
- Functional language paradigm: uses; implementation; history; main features; advantages and disadvantages; languages (Lisp, Hope, ML, SASL, KRC, Miranda (tm), Orwell, Haskell); why Haskell is the best.
- Haskell: various implementations (Gofer, HUGS98 and others); the HUGS98 system; system commands; sessions and scripts; fundamental ideas (higher-order functions, currying, uncurrying, sections, function composition, recursion, local definitions, Landin's off-side rule); programming style; literate scripts; the standard prelude; type systems; qualified types.
- Numbers: basic operations (addition, subtraction, multiplication and so on); basic numerical types (Int, Integer, Float, Double); numerical type classes (Num, Integral, Real, Fractional).
- Lists: basic operations (concatenation, concat, reverse, length, head, tail, init, last, take, drop, indexing, map, filter, zip, unzip and so on); list comprehensions.
- Homomorphisms: various operators (foldr, foldl, foldr1, foldl1, scanr, scanl, scanr1, scanl1); duality theorems; fusion.
- Programming techniques: executable specifications; program transformation; source reduction; partial evaluation; accumulating parameters; tupling; memoisation or tabulation; divide-and-conquer functions; continuations.
- Advanced features: modules; monads; interactive programs; lazy evaluation; proving properties possessed by programs; harmful effects of deductivist style and Euclidean methodology.
- Animation: executable and formal specification; representing types; implementing operations; choosing the state space.
- Types: basic types (Int, Integer, Float, Double, Bool, Char); type classes (Text, Eq, Ord, Num, Integral, Real, Fractional); enumerations; recursive datatypes (trees and others).
- Combinatory logic: contraction; reduction; normal forms; various systems; Church-Rosser Theorem and other useful properties; bracket abstraction algorithms; bases; fixed-point combinators; Curry-Howard isomorphism.
- Type theory: design issues; systems (non-existent, monomorphic, polymorphic, other); motivation; type-free lambda-calculi; Curry-style typed lambda-calculi; Church-style typed lambda-calculi; type-inference and type-assignment; Curry-Howard isomorphism.
Last updated: 03 Sep 2010
Source file: /internal/modules/COMSCI/2010/xml/11582.xml
Links | Outline | Aims | Outcomes | Prerequisites | Teaching | Assessment | Books | Detailed Syllabus