Unit ALGORITHMS AND DATA STRUCTURES

Course
Programming and management of computer systems
Study-unit Code
55000606
Curriculum
In all curricula
Teacher
Francesco Betti Sorbelli
Teachers
  • Francesco Betti Sorbelli
Hours
  • 42 ore - Francesco Betti Sorbelli
CFU
6
Course Regulation
Coorte 2023
Offered
2023/24
Learning activities
Caratterizzante
Area
Tecnologie informatiche e dell'informazione
Academic discipline
INF/01
Type of study-unit
Obbligatorio (Required)
Type of learning activities
Attività formativa monodisciplinare
Language of instruction
Italian
Contents
Sorting algorithms; Basic data structures; Priority queues; Binary search trees, balanced binary search trees, and more recent implementations; Hash tables; Graph traversal and visits.
Reference texts
T. H. CORMEN, C. E. LEISERSON, R. L. RIVEST, C. STEIN Introduzione agli algoritmi e strutture dati (terza edizione), McGraw-Hill, 2010, ISBN: 978-88-386-6515-8.

The slides provided by the instructor.
Educational objectives
The objectives of the course are focused on providing students with a solid understanding of sorting algorithms and fundamental data structures. Throughout the course, students will learn and acquire practical skills in implementing and utilizing sorting algorithms such as insertion sort, selection sort, mergesort, quicksort, and heapsort. They will be able to evaluate the efficiency of each algorithm and select the most appropriate one to solve a given problem.

Additionally, the course will cover basic data structures such as queues, stacks, and lists. Students will be able to understand the characteristics of each data structure and efficiently use them to solve specific problems. The concept of priority queues will also be introduced, allowing students to understand how to handle data with different priorities in an efficient implementation.

Another objective of the course is to introduce students to binary search trees and their balanced variants such as AVL trees and red-black trees. Students will acquire knowledge about tree data structures and be able to perform search, insertion, and deletion operations efficiently.

Hash tables will also be studied in the course, where students will learn how to solve problems related to searching and storing large amounts of data using this data structure. Different hashing techniques and collision handling strategies will be presented.

Finally, the course will also cover graph traversal and visits, enabling students to become familiar with traversal algorithms such as depth-first search (DFS) and breadth-first search (BFS). They will be able to apply these techniques to analyze and solve problems related to graph structures.

Overall, the objectives of the course are to provide students with a solid foundation of knowledge in sorting algorithms, fundamental data structures, and graph visits, enabling them to analyze, evaluate, and solve a wide range of algorithmic problems in various contexts.
Prerequisites
Elements of Mathematical Analysis, Discrete Mathematics, and an imperative programming language.
Teaching methods
The course will be delivered through traditional classroom lectures.
Other information
The recommended attendance policy for classroom lectures depends on the specific policies and rules of the academic institution and the course. However, generally, students are advised to attend the lectures regularly.
Learning verification modality
Written + oral exam.
Extended program
Sorting algorithms (insertion sort, selection sort, mergesort, quicksort, heapsort); Basic data structures (queues, stacks, lists); Priority queues; Binary search trees, balanced binary search trees, and more recent implementations; Hash tables; Graph traversal and visits.
Obiettivi Agenda 2030 per lo sviluppo sostenibile
This course contributes to the achievement of the United Nations' Sustainable Development Goals outlined in the 2030 Agenda for Sustainable Development.
Condividi su