|
Module Availability |
Autumn + Spring Semester |
|
|
Assessment Pattern |
Assessment Pattern
i) Unit(s) of Assessment
b) Weighting
Towards Module
Mark
2h Written Exam 60%
Programming coursework (an extensive program in Haskell)
(to be completed individually)
40%
Qualifying Conditions(s)
Average aggregate
|
|
|
Module Overview |
Module Overview
Logical thinking and reasoning is essential in computer programming. This module aims
further to develop logical thinking from COM1006, first abstractly, and subsequently in
applications within the framework of functional programming in Haskell.
Through programming in the functional paradigm, the students will learn to use techniques
such as recursion and polymorphism in a clean and structured way, so that they
subsequently can use this techniques in other paradigms incl. object-oriented programming.
With the use of Unix-based workstations and a functional language this module will
familiarise the students with a broader range of computer architectures and paradigms.
|
|
|
Prerequisites/Co-requisites |
Prerequisites/Co-requisites
The module assumes that the students read Foundations of Computing (COM1006) in
the same year.
The students should also have basic understanding and skill in imperative programming,
e.g. by taking Programming Fundamentals (COM1017).
|
|
|
Module Aims |
Module aims
This module shall enable students to develop software in a structured and logical way,
including abstraction, modularisation, testing, and proof of correctness.
|
|
|
Learning Outcomes |
Learning outcomes
At the end of the module, the students will
be able to work with standard command-line interfaces.
not explicitely assessed/prerequisite for further learning
write programs employing the fundamental features of Haskell.
to be assessed in the programming coursework
be able to make and use reusable functions as a fundamental building block of
software development.
to be assessed in the programming coursework
understand recursion and polymorphism and be able to use them in simple algorithm
design.
procedural understanding is assessed in the programming coursework; a deeper conceptual
understanding is assessed in the exam
be able to reason about computer programmes and argue their correctness
to be assessed in the exam
contrast functional and imperative languages and understand the advantages and
disadvantages of each.
to be achieved through discussions in class
|
|
|
Module Content |
Module content
Mathematical Induction and Reasoning
Program specification
Abstract Datatypes
Basics of the Unix User Interface
Basics of the Hugs User interface and the Haskell Syntax
Data types
– Integers, Floats, Boleans
– Strings
– Lists
Recursion
– Recursion over lists
– Recursion over integers
Polymorphism
Algebraic datatypes
– Polymorphic data types
– Recursive data types
I/O in Haskell
Reasoning about programs
– Application of Mathematical Induction
Implementing Abstract Data Types
|
|
|
Methods of Teaching/Learning |
Methods of Teaching/Learning
29h of lectures/tutorials:
– Autumn Week 7-9: 1h per week
– Autumn Week 10-11: 3h per week
– Spring Week 1-10 (11): 2h per week
15h of supervised lab with academic and demonstrator support. Weekly lab exercises
(1h) for 15 weeks (starting Week 7 of the Autumn semester). Additional
drop-in sessions with demonstrator support: 1h per week for 10 weeks.
|
|
|
Selected Texts/Journals |
Selected Texts/Journals
Core reading TBA. We have previously used Simon Thompson’s second edition (below).
A third edition has been expected for some time and will be used if it becomes available
in time. Otherwise, a different book may be considered.
3
You may find that you need a reference on Linux/Unix. The above two titles were the
best two I could find in the University Library. Sobell [?] is comprehensive and recent,
and may be a bit much for most students. The other [?] is shorter and possible more to
the point for our purpose; if you buy the book, you should look for a more recent edition.
Note. Graham Hutton’s book is a more basic alternative to Simon Thompson, and
contains just about the bare minimum for the module. The lectures will largely follow
the structure of Simon Thompson.
|
|
|
Last Updated |
AUG 2010 JG |
|