
Education :: Degree > Second Year Modules  
This page contains more detailed information about the modules I took during the second year of my Computing degree.
Aims
To introduce the capabilities of different kinds of machines, to explore the relationship between Turing
machines and algorithms, and to explore the limitations of Turing computability.
To introduce the Lambda calculus. Objectives
Students should appreciate the limitations of finitestate machines, and the availability of different
possible standard formalisations of Turing machines. Students should understand what can and cannot be computed using Turing machines, and
the relationship between Turing machines and algorithms. In the lambda calculus, students should be able to find normal forms, when these exist,
using alpha and beta reduction.
Content
Aims
To convey to students the idea that programming can be presented as a systematic process of calculation with
mathematically secure foundations.
Objectives
Students should be able to develop modest programs systematically with a complete understanding of the mathematical
foundations of the method advocated, and should understand the relationship between formal and informal methods for practical use.
Content
Aims
To gain experience of working with other people and, on a small scale, some of the problems that arise in the
development of software.
Objective
To carry out the full cycle of the first phase of development of a software package, namely; requirements analysis,
design, implementation, documentation, testing and delivery.
To know the main terms of the Data Protection Act and be able to explain its application in a variety of contexts. Content
Project Management:
Aims
To present a detailed account of some fundamentally important and widely used algorithms.
To induce an appreciation of the design and implementation of a selection of algorithms. Objectives
To learn the general principles of effective algorithms design and analysis on some famous examples, which
are used as fundamental subroutines in major computational procedures.
To be able to apply these principles in the development of algorithms and make an informed choice between basic subroutines and data structures. Content
Aims
To give an introduction to the processes involved in compilation and the use of compiler generation tools and
compiler support.
Objectives
To know the phases of the compilation process and how to implement them.
To be able to choose between different techniques and different representations, depending on the problem to be solved. Content
Formal grammars, lexical analysis using lex, parsing by recursive descent and by yacc, error handling in the
parsing process, intermediate code representations, type checking, simple code generation. The interface to the operating system. Design
of runtime systems and issues in storage management, including garbage collection.
Aims
To provide a grounding in the principles behind object oriented languages and how they are realised, in order
to enable the student both to use any object oriented language and to use any language in an object oriented way.
Objectives
To be able to classify a given object oriented language into the categories identified above
To describe the differences between those categories and to know the principles involved in implementing a language belonging to any one of those categories. Given a problem description, to be able to design suitable class hierarchies. To be able to read, understand and write programs in C++ and EuLisp. Content
Aims
To give the student an appreciation of the foundations of programming by considering functions as units of
computation lcalculus and combinatory logic.
To raise the issue of correctness and to develop a critical attitude toward computing in general and logic programming in particular. To illustrate how the various mathematical principles discussed in this Unit are translated in practical programming languages. Objectives
Students should be able to perform reductions in two reduction systems, and to prove elementary theorms in and
about these calculi.
To understand enough logic so that correct logic programming is possible. To be able to apply the theories of mathematical logic to the development of programming languages, to contrast pure rewriting with environment based interpretation operating over different domains (eg. values and types). To be able to read, understand and write programs in EuLisp. Content
Aims
To inform students of the rapid change in computing via an analysis of the history and development of the
computing industry and subject. The course aims to do two things. First, to remove the almost mystical
belief that computers can do anything. Secondly, to encourage students to question the appropriateness of computer systems as a solution to
any given problem.
Objectives
Describe the major trends and changes in hardware, programming languages and software; explain the evolution of
the computing industry; extrapolate current trends in the industry, while realising the weakness of extrapolation. Students should be able
to demonstrate reasoned arguments for and against the use of computer technology. They should be able to compare machine and human
intelligence. They should understand the dangers of compulsive use of computers; and the hazards that a computer solution may introduce.
Content
Aims
To present an introductory account of the theory and practice of databases.
Objectives
To demonstrate understanding of the basic structure of relational database systems and to be able to construct small databases.
Content
Aims
To provide an introduction to the techniques of representing, rendering, and displaying computer graphics, with assessed coursework.
Objectives
Students will be able to distinguish modelling from rendering. They will be able to describe the relevant components of Euclidean geometry and their relationships to matrix algebra formulations. Students will know the difference between solid and surface modelling and be able to describe typical computer representations of each. Rendering for raster displays will be explainable in detail, including lighting models and a variety visual effects and defects.
Content
Aims
This unit aims to give the student confidence and competence in C programming, shell programming and problem solving using tools. It does this through a combination of laboratory sessions, project work and supporting lectures. Objectives: To have students demonstrate a mastery of C at a level above single file simple I/O programs, experience interfacing to programs whose inner workings are not known, learn to adapt or combine existing tools to build solutions and practice in a professional approach to programming and presentation.
Content
Last updated: 6 Nov 2005 

Site
design: Dale Lane 
Education :: Degree > Second Year Modules  