UNIVERSITA’ DEGLI STUDI MEDITERRANEA DI REGGIO CALABRIA Subject Code Subject Name Professor 16479 Algorithms and Data Structures Prof. Francesco Buccafurri Department: Degree course: Class: Type of educational activity: Disciplinary Area: Scientific-Disciplinary Sector: DIIES ICT Engineering L-8 Characterizing Computer Science Engineering ING-INF/05 Compulsory preliminary exams: Course Year: Semester: Programming II I ECTS: Hours: 6 48 Synthetic description: The aim of this course is to provide the students with solid foundations about the basic concepts of computer programming: data structures and algorithms. Acquisition of knowledge on: The main goal of the course is to teach the students how to select (and design) data structures and algorithms in the solution of a problem, by taking into account asymptotical costs in terms of consumed space and time. The study algorithms and data structures is done within an object-oriented framework. When implementations are considered, the Java programming language is used. Evaluation method: Written Test + Oral Examination Student’s independent work Individual study and implementation activity Detailed course program Introduction Problems and Algorithms Computability and Church-Turing conjecture Computational Complexity of problems and algorithms (notations O, Omega, Theta) Abtract Data Type and Data Structures Array, Matrices, Linked Lists, Ordered linear structures, Queues, Stacks, Heap, Binary Trees, Binary Search Tree, n-ary Trees, Priority Queues, Associative Arrays, Dictionaries Hash Tables, Sets, Graphs. . Basic Algorithms, Programming Techniques and Graph Algorithms Basic Graph Algorithms (Reachability, Connected Components, Spanning Tree), Search and Sort Techniques, Divide et Impera (with example like: Binary Search, Merge Sort, Bubble Sort, Factorial, Fibonacci series, etc.), Recursive equations describing the cost of Divide et Impera techniques. Greedy Techniques (Knapsack 0-1 and real number Knapsack, Dijkstra Algorithm, Prim Algorithms, Implementation through array and indexed heap) Examples of Application to Computer Networks. OO Programing in Java OO di Java. Implementation of Data Structures and Algorithms Resources and main references Camil Demetrescu, Umberto Ferraro Petrillo, Irene Finocchi, Giuseppe F. Italiano, Progetto di algoritmi e strutture dati in Java, McGraw-Hill. Cormen-Leiserson-Rivest: Introduzione agli algoritmi e strutture dati 2a ediz., McGrawHill. Ausiello, et al., Teoria e Progetto di Algoritmi Fondamentali, Franco Angeli. A.A., Bertossi, Strutture, Algoritmi, Complessita', ECIG, Universita' di Pisa. Cay Horstmann, Concetti di informatica e fondamenti di Java, Apogeo. Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano, Algoritmi e strutture dati 2/ed, McGraw-Hill.