Learning objectives:
Students acquire the skills to
- know, evaluate and apply the most important basic algorithms and data structures for sorting and searching as well as for graph-based problems
- be able to recognize basic algorithmic problems and select suitable algorithms and data structures
- be able to assess the runtime and space requirements of algorithms
Course content:
- The term algorithm
- Elementary data structures: one- and multi-dimensional fields and character strings
- Iteration and recursion
- Sorting and search algorithms
- Introduction to complexity theory (O-notation)
- Advanced data structures (e.g. list, heap, stack, queue)
- Hash algorithms
- Binary search trees
- Balanced trees
- Graphs (representation and implementation alternatives)
- Graph algorithms (including breadth-first and depth-first search, topological sorting, Dijkstra algorithm, A* algorithm)
- Problem-solving strategies (divide-and-conquer, backtracking, dynamic programming)