Module Indicative Content
Comparison of imperative, logic and functional languages, especially with respect to types, classes, generics , lists, pattern matching and recursion. Queries, facts, rules in a logic language. Fundamental functional programming language paradigm characteristics: referential transparency, higher-order functions, functional composition. Modern functional programming language characteristics: Curried functions, lazy evaluation, polymorphism, algebraic types, list comprehension, mohads and input/output.
Module Additional Assessment Details
50% 2 hour exam (learning outcomes 1 and 4)
50% practical assignment (learning outcomes 2 and 3)
Module Texts
Thompson S., Haskell: The Craft of Functional Programming, Addison-Wesley, 2nd edition, 1999, ISBN: 0201342758
Watt D.A, Programming Language Design Concepts, Wiley, 2004, ISBN: 0470853204
Clocksin and Mellish, Programming in Prolog, 5th Edition, Spring, 2003, ISBN: 3540006788
Module Special Admissions Requirements
Prior study of either CE00314-5 Further Programming in C++ or CE00527-5 Further Object Oriented Programming or equivalent.
Module Resources
Prolog Environment
JDK (Java Development Environment)
Hugs 98 Environment
Module Learning Strategies
Use of examples to introduce salient concepts. Exercises used to re-enforce concepts and their application.
18 hours of lecture and 6 hours of practical.
One hour of lecture and one of practical for six weeks, followed by two hours of lecture per week for six weeks.
Other non-traditional delivery such as the Fast-track MEng which will be delivered over the summer will deliver exactly the same number of hours, although the timescale for delivery will be reduced.