Single-Course English 5 ECTS

# 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.

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.), greedy algorithms, and divide-and-conquer algorithms.

Recommended prerequisites

02002/02003/02100/02101/02102/01017/01019, An introductory course in programming + an introductory course in discrete mathematics. Or similar competences.

Teaching Method

Lectures and exercises. Teaching will be available in both English and Danish as far as possible.

Faculty

See course in the course database.

## Registration

Language English 13 weeks Compute DTU Lyngby Campus 02105 Bachelor Week 5 Week 19 Thurs 8-12
Price 7.500,00 DKK