UNIVERSITA` DEGLI STUDI MEDITERRANEA DI REGGIO

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.