School of Computing

FACULTY OF ENGINEERING

 

Level 3 Options

From session 2009/2010 students on Computer Science, Computing, and Artificial intelligence will be able to choose some options from the following list, provided that the appropriate prerequisites have been passed.

  • TC30, TC31, TC32, TC33 will be compulsory for students on Computer Science; a further 2 modules are to be chosen from the list.
  • AI31, AI32, AI33, AI34 will be compulsory for students on Artificial Intelligence; a further 2 modules are to be chosen from the list.
  • Students on Computing choose 6 modules from the list

The following gives some more information for the level 3 modules which are:
AI31, AI32, AI33, AI34, TC30, TC31, TC32, TC33, GI30, GI31.

Artificial Intelligence Modules

AI31 - COMP3300 - Computer Vision

See Syllabus and Objectives

AI32 - COMP3310 - Natural Language Processing

Also see Syllabus and Objectives

Natural Language Processing is also known as Computational Linguistics, Language Engineering, or Text Analytics. Central to NLP is the computational modelling of language data; a CORPUS is a text dataset representative of the language to be analysed. This module will cover theory and practice; and look at a range of commercial applications. The NLP applications industry is growing and recruiting: nearly half the notices on the VLE Computing Vacancies discussion-board involve NLP. Past graduates of the NLP course have gone on to work in Web search, text analytics, translation and language consulting, online news, voice-to-text, the Search for Extra-Terrestrial Intelligence, and, of course, as University academics! For tasters, see
http://www.comp.leeds.ac.uk/eric/ai32/17textAnalyticsConference.pdf
http://www.comp.leeds.ac.uk/ai32/
http://www.comp.leeds.ac.uk/nlp

AI33 - COMP3750 - Biological and Bio-Inspired Computation

Also see Syllabus and Objectives

Living creatures are computing all the time to stay alive. They have to locate prey or avoid being eaten; grasp objects; navigate their environment, select mates, etc. In fact quite a lot of computation that is done routinely by living creatures is beyond the current state-of-the-art in computing: we would love to build robots with capabilities of an ant; have human-like object recognition performance, and so on.
Computing by biological creatures involves massively parallel networks of relatively slow units, rather than high power single processors; it sometimes uses the physical properties of bodies instead of computation; it arrives at solutions that are just good enough, rather than optimal. Sometimes such solutions are not arrived at during the lifetime of a single individual, but by a whole species over thousands of generations. These are just a number of important differences with respect to classical computing.
We do not understand all the principles behind biological computation, but some principles are understood well enough to lead to applications in technology. In this module we will explore examples of these principles: genetic algorithms; artificial neural networks; DNA computing and their applications. We will look at some limitations of classical AI in order to understand what makes biological creatures so successful in problems that are still considered to be hard by the AI community. We will also point out that there are still many unsolved problems in this area.

AI34 - COMP3760 - Knowledge Representation

Also see Syllabus and Objectives

A major goal of Artificial Intelligence is to build intelligent machines; but to be intelligent you have to know things and be able to reason. How can we get computers to represent knowledge and reason with it? What kinds of knowledge representation language are there? How do we know a good knowledge representation language when we see one? What kinds of reasoning could we get a computer to do and how could a computer reason efficiently? How does the choice of representation language affect the kinds of reasoning possible and their efficiency? Are there particular kinds of "useful knowledge" for a computer to have, and are there special techniques for handling these? These and other questions will be addressed in this module. The main emphasis will be to introduce the main ideas of KRR, and in particular the use of logic based representation languages, and deductive inference rules. A goal of the module is for you to develop some fluency in the use of such languages, so that you can actually represent knowledge in them, and use automated tools to reason with this knowledge. We will consider the tradeoff between expressiveness and efficiency, and the representation of particular kinds of knowledge such as spatial, temporal and taxonomic, and the development of ontologies, the basis of the semantic web.
A couple of introductory links are:

Theoretical Computer Science Modules

TC30 - COMP3900 - Distributed Systems

Also see Syllabus and Objectives

The World Wide Web is used by millions of people everyday for various purposes including email, reading news, downloading music, online shopping or simply accessing information about anything. Using a standard web browser, the user can access information stored on Web servers situated anywhere on the globe. This gives the illusion that all this information is situated locally on the user's computer. In reality, the Web represents a huge distributed system that appears as a single resource to the user available at the click of a button.
This module presents the main characteristics of distributed systems and look at some of the challenges that are faced by designers and implementers of such systems. It investigates how sophisticated multi-tier architectures can be supported, and examines how this is achieved using distributed object technology, Web services as well emerging technologies such as cloud computing.

TC31 - COMP3910 - Combinatorial Optimisation

See Syllabus and Objectives

TC32 - COMP3920 - Parallel Scientific Computing

Also see Syllabus and Objectives

Multicore and multiprocessor architectures are rapidly becoming the norm for PCs, laptops and games consoles. The majority of commonly-used applications do not (and do not need to) take full advantage of this, but the underlying technology, whether it is found in a dual-core desktop machine or the 129600 cores of Roadrunner (see http://www.top500.org/), can be harnessed to improve our understanding of the world around us -- simulations can be carried out which predict anything from climate change to tumour growth -- or to create and visualise artificial worlds which behave according to their own laws of physics.
This module will introduce the concepts of multicore and distributed architectures and explain how to design and implement efficient parallel algorithms which scale appropriately to larger systems. Simple examples will be drawn from Scientific Computing (the techniques of which underlie the types of simulation mentioned above) and related areas, in order to illustrate the fundamental concepts and provide practical experience of programming in parallel using MPI.

TC33 - COMP3930 - Complexity and Approximation

Also see Syllabus and Objectives

1. computability: Which problems can be solved by a computer?
We will see that not all well-defined problems can be solved by an algorithm. The probably best-known undecidable questions is the Halting problem: Does a given computer program terminate on a given input? To prove this we use an elementary model of a computer, the Turing machine. Even if simple, a Turing machine can simulate the execution of a Java program. On the other hand, this model is powerful enough to prove that the Halting problem is undecidable. Moreover, we consider the classes REC of decidable problems and RE of recursively enumerable problems.

2. efficient computability: Which problems can be efficiently solved by a computer?
We will see that not all computable problems can be solved efficiently. We use Turing machines again to define the class P of problems that can be solved in polynomial time, and the class NP of problems with solutions that can be verified in polynomial time. We will modify the tools we used to investigate the relation between REC and RE to apply to P and NP, and will discuss the $1,000,000 question whether P = NP holds.

3. approximation: How to deal with hard problems in practice?
We discuss restrictions to special classes of inputs and fixed parameters. But mainly we consider approximate solutions. As with REC/RE and P/NP, we sort NP-hard problems into a class that allows efficient approximation algorithms and a class of problems that are hard to approximate. The highlight of this part will be the PCP theorem.

Graphics and Interfaces Modules

GI30 - COMP3800 - Functional Informatics

Also see Syllabus and Objectives

How do you solve problems in complex domains like financial trading, hardware design, or music composition, or exploit the massive parallelism of graphics processors? A powerful new strategy is to first develop a domain specific language (DSL), a set of primitives and combinators that allow you to construct and manipulate data using the vocabulary of the application, be it exotic trades, hardware circuit components, musical scores, or GPU instructions. Functional programming languages provide a particularly good platform for working with DSLs, with a flexible system of data constructors, pattern matching, and higher-order functions that abstract over common patterns of computation. Embedded DSLs in Haskell have been used to produce solutions that are significantly smaller and simpler than other technologies. Here in School, we are actively working on DSLs for data visualization and GPU programming. This module interleaves an introduction to DSLs with teaching the fundamentals of functional programming, using the widely-used Haskell language. At the end of the module, you will understand the practice of functional programming, and how it is used to implement DSLs in a number of application areas.
Further references: The Haskell language: http://www.haskell.org

GI31 - COMP3810 - Visualization

See Syllabus and Objectives


 
© School of Computing
University of Leeds 1998-2008
Contact Web Editor Last modified
07 Jun 2009