Algorithms and Data Structures

Credits: 
2.0
ECTS Credits: 
4.0
Term: 
Winter
Course Description: 

The course provides a gentle and still up to date introduction into Algorithms used in our everyday life. The main goal is to understand why certain strategies using huge data implemented on even on the fastest computer would not give the answer in a life time, while a clever modification solves the problem in seconds on a laptop, and how to find some feasible strategies.

 

The course introduces Computational complexity and big O notation, explains the difference among exponential, polynomial and even linear running time, and covers topics like sorting, breadth first and depth first algorithms, Dijkstra's algorithm for shortest path, Kruskal' algorithm for minimum spanning tree, heuristics for hard optimization like the traveling salesman problem, MCMC sampling.

 

You would experiment with many examples with the help of the tutor.

Learning Outcomes: 

By the end of the course, students are experts on the topic of the course, and how to use these methods to solve specific problems. In addition, they develop some special expertise in the topics covered, which they can use efficiently in other mathematical fields, and in applications, as well. They also learn how the topic of the course is interconnected to various other fields in mathematics, and in science, in general

Assessment: 

Weekly homework, midterm and final

Prerequisites: 

Introductory Python