C306 Design and Analysis of Algorithms
Professor: Dimitris KOUKOPOULOS
Introductory concepts. Representation of algorithms. Data representation: graphs, trees, queues, stacks. Algorithms vs. trees ( tree traversing). Algorithms vs. queues (scheduling algorithms). Algorithms vs. stacks ( recursive algorithms). Algorithms vs. heap (HeapSort). Algorithmic problems classification (P vs. NP). Introduction to heuristic algorithms. Complexity analysis of searching algorithms and HeapSort algorithm (worst-case, average). Basic techniques for design and analysis of algorithms: balancing, divide-and-conquer (analysis, examples – QuickSort, binary searching, mergesort) and greedy techniques (general analysis, examples-task scheduling problem-Knapsack problem-Travelling Salesman problem). Graph traversal: breadth-first search, depth-first search. Dynamic programming (Bellman principle, examples). Survey of current research papers. Laboratory: design of algorithms and development of applications in programming environments with emphasis in digital cultural content management.