Basic programming knowledge using the C language (pointers, structures, linked data representations). Recursion. Modularity and data abstraction. Stacks. Queues. Algorithm analysis. Lists and strings. Trees and expression trees. Heaps. Binary search trees. AVL trees. M-way trees. 2-3 trees. 2-3-4 trees. B-trees. Red black trees. Hashing. Disjoint sets. Graphs and graph algorithms. Sorting.
● Thomas A. Standish: Data Structures, Algorithms and Software Principles in C, Addison-Wesley. 1995.
● Robert Sedgewick: Algorithms in C
● Michael T. Goodrich, Roberto Tamassia: Data Structures and Algorithms in JAVA
● Slides from lectures
● Relevant material from the Web page of the course