Description
Algorithms and data structures are fundamental notions in computer science . Understanding how they can be exploited in combination for better programming implementations in terms of time complexity is vital for writing efficient code. This course enables the student to:
– Understand, explain, and implement standard data structures, explain and analyze the core properties of these data structures.
– Understand, explain, and implement standard algorithms.
– Apply standard data structures and algorithms to solve programming tasks where each one takes place in a different scenario.
– Analyze and compare implementations with respect to their time complexity.
– Understand, explain, and apply standard programming techniques in the context of standard data structures
Regarding the learning objectives of this course, the student will learn about the following components:
- Data Structures
- Data Containers: e.g. list, tree, set
- Ordered Data Structures: e.g. stack, queue, priority queue, map
- Operations on Data Structures: e.g. iterative implementations, recursive implementations
- Sorting Algorithms
- selection sort, insertion sort, merge sort, quick sort
- Trees
- search, insertion, deletion
- binary tree, binary search tree
- tree traversals: e.g. pre-order, post-order, in-order, breadth-first traversal
- Hashing
- Hash table: representation of a map
- Hash function: hash code and compress functions
- Collision avoidance techniques: Separate Chaining, linear probing
- Insertions and Removals
- Graphs and Graph Algorithms
- graph data structures: e.g. directed graphs, undirected graphs, weights, representations
- graph algorithms: e.g. graph traversals, path finding, cycle finding, connectivity, topological ordering, shortest path, minimum spanning tree