Next: Advanced Graphics and HCI
Up: Michaelmas Term 2001: Part
Previous: Additional Topics
  Contents
Lecturer: Dr A.C. Norman
(acn1@cl.cam.ac.uk)
No. of lectures + examples classes: 12 + 4
Prerequisite course: Data Structures and Algorithms
Aims
This course aims to provide a sampling of topics that are similar in
style to those discussed in the Data Structures and Algorithms course, but
which are of a more specialised or advanced nature. This is intended not
just to give a concrete understanding of the particular methods discussed
but to make students aware of something of the depth and breadth of
algorithmic techniques that have been developed: a variety of techniques
and results will be mentioned in passing and without full explanation or
proof to try to give an impression of this.
Lectures
- Binomial and Fibonacci Heaps: these grow out of a desire to solve
the single-source shortest path problem (e.g. using Dijkstra's algorithm)
on sparse graphs as fast as possible. Maybe the surprise is that
Dijkstra's algorithm as documented at a IB level fails to think
harder about this--but there again when you see how messy Fibonacci Heaps
are you will understand!
- Kolmogorov Complexity: Usually evaluations of the information
content or complexity of things will be asymptotic, and arbitrary
finite odd-cases will be quietly ignored. This part of the course
provides some basis for considering a finite string such as
``ababababababab'' to be less complex than one like
``abbbaabaaabaaaa''. This involves looking at various ideas about data
compression, Turing machines, probabilities and information
theory. Note very well that I will only give a simple introduction to
a large and difficult subject area.
- Probabilistic Algorithms: The relationship between true randomness
and computer-generated pseudo-random numbers. The extent to which a truly
random ``oracle'' might be a help in algorithm design, including a
discussion of the fact that there are several different ways of producing
precise models of what ``successful random computation'' might mean.
One of the most important areas where probabilistic algorithms are
commonplace: integer primality checking and factorisation. While I intend
to duck most technical issues this borders on including a bit of
computational number theory.
- More Garbage Collection: The background challenge here will be to
take a procedure which is easily implemented as one that takes place in
large disruptive chunks and to derive schemes that support (near-)
real-time processing. I may discuss both ``ephemeral'' garbage collection
and the issues behind true parallel garbage collection where one processor
continuously allocates and uses memory while another rushes along in the
background tidying up. Note that the widespread adoption of Java has
made Garbage Collection a hotter topic than it had seemed for a while!
- High Precision Arithmetic.
In late 1999 the record for computing the value of
was
206,158,430,000 decimal digits. [just think about the disc space
needed to store this, let alone calculate it!]. At precisions well less
than this non-classical algorithms for arithmetic and the calculation of
elementary functions and constants become important and I will discuss
some of them. Big numbers also arise in many computer algebra applications
and often rather different techniques (based on residue class arithmetic)
are required to render computations feasible.
Objectives
On completing the course, students should
- understand and be able to both describe and apply the particular
techniques that were covered in detail
- be able to recognise and comment coherently on different models
for evaluating algorithms (e.g. practical versus theoretical
efficiency, various forms of probabilistic measures of reliability,
provably optimal methods)
- appreciate that the range of techniques that have been developed
is very large, and that many of the algorithms are far from
obvious or easy to understand
Recommended books
Knuth, D.E. (1998). The Art of Computer Programming, vol. II.
Addison-Wesley (3rd ed.).
Cormen, T.H., Leiserson, C.E. & Rivest, R.L. (1990). Introduction to Algorithms. McGraw-Hill.
Those wanting yet greater depth and completeness are referred to the
Handbook of Theoretical Computer Science, Volume A edited by
van Leeuwen (1990) and during the course a number of references into
the primary literature will be provided.
Next: Advanced Graphics and HCI
Up: Michaelmas Term 2001: Part
Previous: Additional Topics
  Contents
Christine Northeast
Tue Sep 4 09:34:31 BST 2001