| Program start date | Application deadline |
| 2026-01-07 | - |
| 2026-02-05 | - |
| 2026-06-05 | - |
| 2026-07-13 | - |
| 2026-09-08 | - |
| 2027-01-07 | - |
| 2027-02-05 | - |
| 2027-06-05 | - |
| 2027-07-13 | - |
| 2027-09-08 | - |
Program Overview
ALGORITHMS AND DATA STRUCTURES
The course of Algorithms and Data Structures aims at expanding the students' knowledge and skills related to programming in the small with imperative languages; it provides the basis for designing efficient algorithms and for developing data structures that enable effective information organization.
OVERVIEW
The course focuses on the development of skills related to programming, algorithm design, and data structure implementation.
AIMS AND CONTENT
LEARNING OUTCOMES
- Expanding knowledge and skills related to programming in the small through imperative languages
- Learning to design correct and efficient algorithms
- Implementing data structures that support effective and efficient organization of information
AIMS AND LEARNING OUTCOMES
At the end of the course, the student will be able to:
- Compute the complexity of known algorithms (sorting, adding, searching, and modifying elements in a data structure) to identify the most efficient one
- Design the interface of a data type
- Implement the data type with different data structures that include indexed and linked structures
- Understand the difference in the efficiency of the functions supported by the data type when different data structures are employed
PREREQUISITES
The basic skills that students should already possess to properly face the course contents are those provided by the "Introduction to Programming" course.
TEACHING METHODS
- Traditional, with frontal lessons and laboratory sessions
- The course includes the development of an optional individual project
- For students who intend to develop transversal skills, teaching methods also include:
- Production of short videos on topics already explained during classes
- Production of documentation that explains in written form topics already presented during classes
- Peer review activities
- Flipped classroom on a topic for which teachers have provided documentation before the class
- Development of an individual project (mandatory to obtain the corresponding open badge)
SYLLABUS/CONTENT
- Methods for algorithm analysis: cost criteria, asymptotic notation, complexity analysis of recursive algorithms
- Sorting algorithms: insertion sort, selection sort, bubble sort, mergesort, quicksort
- Basic data structures: arrays and lists; stacks and queues; dictionaries implemented with lists
- Dictionaries: implementation with binary search trees and hash tables
- Trees: indexed and linked representations for binary trees and general trees; depth-first search and breadth-first search of trees
- Search Trees: Binary search trees, search trees as a data structure for implementing dictionaries, balanced trees
- Hash tables: collision lists and open addressing
- Priority queues: implementation with lists and heaps
- Graphs: definitions, data structures, primitives for querying and updating graphs; graph visits in depth and in width; examples of application of graph visit algorithms
- Laboratory: C++ laboratories related to course topics
RECOMMENDED READING/BIBLIOGRAPHY
All topics covered by the program are faced during frontal lessons. The teaching material provided by teachers via AulaWeb (including fragments of C++ code implementing algorithms and data structures addressed during the course) is essential for preparing the exam.
TEACHERS AND EXAM BOARD
- VIVIANA MASCARDI
- MAURIZIO LEOTTA
- FRANCESCA ODONE
Exam Board
- FRANCESCA ODONE (President)
- MAURIZIO LEOTTA
- VIVIANA MASCARDI (President Substitute)
LESSONS
LESSONS START
According to the calendar approved by the Degree Program Board.
Class schedule
The timetable for this course is available on the Portale EasyAcademy.
EXAMS
EXAM DESCRIPTION
- Exam description: The exam consists of a written part and a laboratory part. The two parts are independent of each other.
- Computation of the final mark: The final mark is obtained as the sum of the written mark + the lab mark + the mark of the individual (optional) project.
ASSESSMENT METHODS
The various parts of the exam have been carefully designed by teachers to verify whether the student is able to:
- Compute the complexity of known algorithms
- Design the interface of a data type
- Implement the data type with different data structures
- Understand the difference in the efficiency of the functions supported by the data type when different data structures are employed
Exam schedule
- Data appello: 07/01/2026, 08/01/2026, 05/02/2026, 09/02/2026, 05/06/2026, 10/06/2026, 13/07/2026, 14/07/2026, 08/09/2026, 17/09/2026
- Orario: 09:00, 14:00
- Luogo: GENOVA
- Degree type: Scritto, Laboratorio
OPENBADGE
- SOFT SKILLS - Creazione progettuale base 1 - A
- SOFT SKILLS - Imparare a imparare avanzato 1 - A
- SOFT SKILLS - Alfabetica avanzato 1 - A
