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
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:
- Representation: http://www.aaai.org/aitopics/pmwiki/pmwiki.php/AITopics/Representation
- Reasoning: http://www.aaai.org/aitopics/pmwiki/pmwiki.php/AITopics/Reasoning
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
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
|
|
||
| © School of Computing University of Leeds 1998-2008 |
Contact Web Editor |
Last modified 07 Jun 2009 |