Learning outcomes |
The main goals of this course are related with the students’ understanding of complex and advanced data structures and algorithms and their use for solving classical and new computational problems. Students should understand: - Advanced Data Structures such as balanced and unbalanced trees, directed and undirected graphs, sparse and dense graph representations, string processing. - How to select the most appropriate data structures, given a practical problem. - How to select the most appropriate algorithms for a given set of data structures. - Mathematical techniques to analyse the spatial and algorithms’ temporal complexity. Upon the conclusion of the course, students shall be able to: - Explain the requirements of efficiency and performance for algorithms and data structures. - Analyse the computational (spatial, temporal) complexity of programs. - Implement programs using the algorithms and data structures studied.
|
Syllabus |
A - Computational Complexity of Algoritms 1. Big-O 2. Amortized analysis B - Abstract Data Structures 1. Simple links lists 2. Stacks 3. Queues 4. Binary trees 5. Binary search trees C – Balanced binary search tree 1. Binary insertion 2. Adelson-Velskii Landis (AVL) 3. Red-Black D - Balanced search tree 1. 2-3 tree 2. Interval tree E - Priority queue (Heap) 1. Binary heap 2. Binomial heap 3. Fibonacci heap F - Graphs 1. Types of Graphs 2. Data structures for graph representation 3. Graph search algorithms: Breadth First Search and Depth First Search 4. Graph problems: Minimum Spanning Tree, Shortest Path, Maximum Flow, and Optimal Matching Problems G - Strings 1. String Sets 2. String sorting: Radix Sort 3. String searching: Binary Search 4. Exact sub string matching: Knuth-MorrisPratt and Boyer-Moore 5. Prefix Tree, Suffix Tree, and Suffix Arrays
|
Main Bibliography |
"Competitive Programmer’s Handbook"; Antti Laaksonen; Draft July 3, 2018 "Algorithms", 4th Edition, 2011; Robert Sedgewick and Kevin Wayne; Addison Wesley, ISBN-13: 978-0321573513 "Introduction to Algorithms", 3rd Edition, 2009; Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein; MIT Press, ISBN-13: 978-0262033848 "Estruturas de Dados e Algoritmos em C", 2008; António Manuel Adrego da Rocha; FCA-Editora de Informática. Coleção: Tecnologias de Informação; ISBN: 9789727222957 "Algorithms in C, Parts 1-5 (Bundle): Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms", 3rd Edition, 2001; By Robert Sedgewick; Addison-Wesley Professional; ISBN: 0201756080 "Data Structures and Algorithm Analysis", Edition 3.2 (C++ Version), 2013; Clifford A. Shaffer; Department of Computer Science, Virginia Tech.
|