Computer Systems and Networks (Undergraduate)
This module provides you with a basic understanding of how a computer works and how programs are executed by the CPU at the machine level. As an introduction to computer architecture and systems software, this module presents the concepts needed to understand typical computers at the level of their ';machine-code'; instruction set. It covers Boolean algebra rules and terminology as well as logic gates. The module also examines the use of bits, bytes and data formats to represent integers, text and programs as well as looking at the conventional von Neumann computer architecture (CPU, registers, memory). Assembly language programming and system software are introduced.
Functional Programming (Postgraduate)
Practical introduction to functional programming for students with good programming ability but no prior knowledge of FP
Functional Programming (Undergraduate)
Recent approaches to systems programming frequently involve functional programming either overtly in the sense that they use modern functional programming languages for rapid prototyping, or more covertly in that they use techniques developed in the functional setting as a way of lending greater structure and clarity to code. This module gives a structured introduction to programming in modern industrial functional languages such as Haskell and F# and to techniques such as map-reduce and monadic programming.