Algorithms
About
The course topics are as follows:
- Introduction. What is an efficient algorithm?
- Tools for analysis of algorithms. O-notation. Analyzing loops and recursive calls. Solving recurrences;
- Data structures and algorithms. Review of basic data structures;
- Combining data structures. Merge-and-find;
- Graph algorithms;
- Greedy algorithms;
- Divide-and-conquer;
- Dynamic programming;
- Backtracking and Implicit search trees. Branch-and-bound;
- Short introduction to local search and approximation algorithms;
- Basic complexity theory. Complexity classes P, NP, and NPC, reductions. Examples of NP-complete problems. Coping with hard problems;
- Short introduction to other design techniques: local search, approximation algorithms, randomized algorithms, preprocessing, network flow.
Prerequisites and selection
Entry requirements
One requirement is to have a bachelor's degree of 180 hec in computer science (or equivalent), or alternatively to have successfully completed courses corresponding to 120 hec in computer science or mathematics. The following requirements must also be satisfied:
- 7\.5 hec in discrete mathematics (DIT980 Discrete Mathematics for Computer Scientists, or the sub-course Introductory Algebra of MMG200 Mathematics I, or equivalent),
- additionally 10 hec in mathematics,
- 15 hec in programming, and
- 7\.5 hec in data structures (this requirement can be satisfied by the course DIT375 Python for Data Scientists).
Applicants must prove knowledge of English: English 6/English level 2 or the equivalent level of an internationally recognized test, for example TOEFL, IELTS.
Selection
Selection is based upon the number of credits from previous university studies, maximum 285 credits