| About the course (objectives, outline, recommended reading). Problem solving. Notions of Algorithmics (growth of functions, efficiency, programming model). Dynamic singly-linked lists
| Operations on dynamic lists. Doubly-linked and circular lists
| Trees – definitions, traversals. ADT Tree. Implementations. Binary Search Trees.
| Sets ADTs and Implementations. Dictionary ADT. Hash Tables. Mapping ADT. Priority Queue ADT.
| Advanced Set Representation Methods. AVL trees. 2-3 Trees. B+ trees. Union-Find Set ADT.
| Graphs. Definitions. Representations. ADT’s. Traversals for graphs and applications
I Graphs. Topological sort, strongly connected components, articulation points . Applications.
| Algorithm Design Techniques I. Backtracking. Search Tree Strategies (branch and bound)
| Algorithm Design Techniques II. Brute Force Algorithms. Greedy Algorithms.
| Algorithm Design Techniques III. Divide-and-Conquer.
| Algorithm Design Techniques IV. Dynamic Programming.
| Algorithm Design Techniques IV. Search Tree Strategies (branch and bound). Local Search.
| Sorting Algorithms
| Review