An *algorithm* is a well-defined procedure to solve a
specific problem. The study of algorithms is a key area of
computer science. The uniqueness and universality of algorithms
makes computer science into a separate branch of both science and
engineering.

This course has the aim to teach the main principles of algorithm design. Through a number of examples, the course will try to convey both the general spirit of thinking about the algorithms and a number of commonly used techniques for algorithm design. The important part of the course will deal with the analysis of algorithms, where we will look at the ways to reason about the correctness and efficiency of algorithms. Finally, the course will present a small toolbox of commonly used algorithms and data structures. These algorithms can be considered to be the "classics" of computer science.

Exercise classes are a *very important* part of this
course. Sitting down with a sheet of paper and actually "running"
the algorithm on a small example may give you more intuition than
reading about the algorithm or just reading the pseudocode of the
algorithm.

The course consists of 15 two-hour lectures with exercise classes after each lecture. The exercises in exercise classes will be related to the material presented in the preceding lecture, so that we can solve them while the material presented in the lecture is still hot in our minds.

Notice that lectures will take place in different auditoriums and classrooms during the semester. Check a lecture announcement before each lecture.

Simonas Saltenis (simas@cs.auc.dk), lecturer | |

Anders B. Christensen (abc@cs.auc.dk), teaching assistant | |

Daniel Povlsen (daniel@cs.auc.dk), teaching assistant |

Last updated Sep 3, 2001, Simonas Saltenis