[Courses] [Projects] [Thesis projects] [Why?] [How?] [Study programs] [Algorithms elsewhere]

On this page, you will find:

- Algorithm courses and projects currently offered at ITU.
- Why study algorithms?
- How to study algorithms?

- Introduction to algorithms and data structures
- Advanced database technology
- Combinatorial optimization
- See also graduate courses in FIRST graduate school

- Search engine project
- Hex game
- Computational complexity

See the page on Project and thesis proposals in Algorithms for more information.

For studies within technical IT, an introductory course in algorithms is almost always mandatory, following a course in introductory programming. The student attends the course before or at the same time as other technical courses like operating systems and databases. The reason for this is that most technical courses are based on the assumption that the students have a basic understanding of algorithms from the start.

In an introductory programming course, you are often preoccupied with the syntax: "How do you write..." and "What do you call...", and often you cannot survey considerations on how to program the task in question in a **smart** way.

At an introduction course within algorithms and data structures, we assume the syntax to be known and focus on **general programming techniques** such as recursion, use of references, program correctness and program running time. The techniques to be covered do not depend on a particular programming language and can therefore be used in all software development.

In particular, algorithms focus on how to make efficient and correct programs as well as on which things at all can be implemented efficiently. A basic understanding of algorithms is an essential competence to every software developer who wants to know if certain ideas are feasible at all. At the specialised algorithm courses, you will learn how e.g. efficient databases, search engines and word-processing programs are constructed. Alternatively, you can concentrate upon theoretical problems.

Students are strongly encouraged to choose a programming project in the project period following upon the course in introductory programming. This could for example be the **Search Engine project**, where focus is on programming. If you have the energy, you could consider attending the course in introductory programming and the one in introduction to algorithms and data structures at the same time, as a few students have so far been successful in doing so.

Upon the introduction course to algorithms and data structures you can proceed with one of the more advanced courses.

- Topics in Combinatorial Optimization, Spring 2004
- Algoritmisk Biologi, Spring 2004
- Algorithm Engineering, Spring 2004

- Algorithm theory, Fall 2004
- Combinatorial Opimization, Fall 2004
- See also graduate courses