Module Descriptors
ADVANCED PROGRAMMING LANGUAGE CONCEPTS
COSE60431
Key Facts
Faculty of Computing, Engineering and Sciences
Level 6
15 credits
Contact
Leader: Leonardo Noriega
Hours of Study
Scheduled Learning and Teaching Activities: 24
Independent Study Hours: 126
Total Learning Hours: 150
Assessment
  • EXAMINATION - UNSEEN IN EXAMINATION CONDITIONS weighted at 50%
  • ASSIGNMENT weighted at 50%
Module Details
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.

Module Additional Assessment Details
50% 2 hour exam (learning outcomes 1 and 4)
50% practical assignment (learning outcomes 2 and 3)
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 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