General course objectives
The course introduces a number of fundamental concepts and
techniques for construction and analysis of efficient algorithms
and data structures. To be able to describe, evaluate, and apply
fundamental/basic algorithms and data structures. And to be able to
analyze an algorithm with respect to running time and use of
resources.
Learning objectives
A student who has met the objectives of the course will be able to:
- Describe an algorithm in an understandable way, i.e.,
accurately, concise and unambiguous.
- Argue for the correctness of algorithms.
- Analyze algorithms, including being able to determine the
running time and space consumption in asymptotic notation.
- Identify and formulate the underlying algorithmic problem in a
given problem.
- Apply basic data structures like stacks, queues, linked lists
and hash tables.
- Use graphs to model a given problem.
- Apply and analyze basic graph algorithms, for example BFS, DFS
and Dijkstra's algorithm.
- Analyze, evaluate, and compare algorithms / data structures and
in the light of this, select an appropriate algorithm / data
structure for solving a given problem.
- Modify known algorithms to solve a given problem.
- Describe and compare different algorithmic paradigms, including
recursion, greedy algorithms, and divide-and-conquer.
- Implement and test data structures and algorithms, and make
appropriate tests and empirical analysis of them.
- In a clear understandable language argue for choices made when
solving a problem.
Content
The concept of algorithms, graphs and trees, recursion and
iteration, fundamental algorithms for sorting of data, techniques
to analyze the complexity of algorithms (running time analysis,
analysis of space usage), O-notation, etc. Elementary data
structures (stacks, queues, linked lists, etc.), advanced data
structures (heaps, binary search trees, etc.), graph algorithms
(BFS, DFS, topological ordering, etc.).
Course literature
"Introduction to Algorithms" by Cormen, Leierson, Rivest
and Stein.
Last updated
02. maj, 2024