Algorithms and Data Structures 1
Overall 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.
See course description in Danish
Learning Objectives
- 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.
Course 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.).
Teaching Method
Lectures and exercises. Teaching will be available in both English and Danish as far as possible.