Algorithms and Data Structures
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.
- Perform basic analyses of algorithms, including being able to calculate running times and space usage
- Identify and formulate the underlying algorithmic problem in a given problem.
- Apply basic data structures like stacks, queues, linked lists and hash tables.
- Apply and analyze basic graph algorithms, for example BFS, DFS and Dijkstra’s algorithm.
- Implement and test data structures and algorithms, and make appropriate tests and empirical analysis of them.
- 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.
- Communicate solutions to problems in a clear and precise manner
- In a clear understandable language argue for choices made when solving a problem.
- Analyse a given problem and make qualified choices to solve the problem based on the analysis.
Course Content
The concept of algoritthms, graphs and trees, recursion and iteration, fundamental algorithms for sorting of data, techniques to analyze complexity of algorithms (running time analysis, analysis of space usage), O-notation, etc. Elementary data structures (stacks, queues, linked lists, etc), advanced data structures (hash tabels, binary search trees, etc), graph algorithms (BFS, DFS, topological ordering, …), greedy algorithms and divide-and-conquer algorithms.
Recommended prerequisites
01904/62506/02312/02314/62507, An introductory course in programming + an introductory course in discrete mathematics. (e.g. 01904).
Teaching Method
Lectures and exercises.