- Docente: Gianluigi Zavattaro
- Credits: 12
- SSD: INF/01
- Language: Italian
- Moduli: Gianluigi Zavattaro (Modulo 1) Pietro Di Lena (Modulo 2)
- Teaching Mode: Traditional lectures (Modulo 1) Traditional lectures (Modulo 2)
- Campus: Bologna
-
Corso:
Second cycle degree programme (LM) in
Mathematics (cod. 8208)
Also valid for First cycle degree programme (L) in Computer Science (cod. 8009)
Learning outcomes
At the end course, the student knows programming principles, tools and techniques. He/she is able to program in a specific programming language.
Course contents
Data structures. Arrays, records, lists, stacks, queues. Trees. Tree visits (preorder, inorder, postorder). Sets. Dictionaries. Binary search. Hash tables. Priority queues. Heaps. Balanced search trees. MFSET. Graphs. DFS and BFS. Design and analysis of algorithms. Computational complexity. Order of growth. Recurrence equations. Lower bounds. Design techniques: divide-&-conquer, greedy, dynamic programming. Sorting: Insertion Sort, Merge Sort, Heap Sort, Quick Sort, Counting Sort, Bucket Sort, Radix Sort. Algorithms on graphs: Minimum Spanning Tree (Prim, Kruskal), Shortest Paths (Bellman-Ford, Dijkstra, Floyd-Warshall). Complexity. The P and NP classes. NP-completeness.
There is also a module of laoratory in which data structures are implemented and used, and the Object-Oriented paradigm as well as some Java notions are introduced.
Readings/Bibliography
Main text:
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Algoritmi e strutture dati
McGraw-Hill - seconda edizione. 2008.
Suggested books:
A.A. Bertossi & A. Montresor, Algoritmi e Strutture di Dati, Citta' Studi Edizioni, Torino. Terza edizione. 2014.
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein
Introduzione agli algoritmi e strutture dati
McGraw-Hill - terza edizione. 2010
Teaching methods
The course is aught during the second semester, and it comprises lessons and lectures. First, theoretical foundations are presented. After base notions are introduced, the main data structures and computational problems are presented. Algorithms for solving such problems are designed, pointing out the design techniques employed. For each proposed algorithm, theorems are stated, and sometimes proved, showing their correctness and temporal computational complexity. Next, several exercises are solved. Moreover, practical design and implementation of data structures are consuidered in the laboratory lessons.
Assessment methods
The assessment consists in a project and in a final written examination.
The project can be done by small goups of students and must be discussed with the teacher.
Teaching tools
Projector.
Office hours
See the website of Gianluigi Zavattaro
See the website of Pietro Di Lena
SDGs

This teaching activity contributes to the achievement of the Sustainable Development Goals of the UN 2030 Agenda.