11929 - Algorithm and Data Structures

Academic Year 2025/2026

  • Moduli: Roberto Casadei (Modulo 1) Vittorio Maniezzo (Modulo 2)
  • Teaching Mode: Traditional lectures (Modulo 1) Traditional lectures (Modulo 2)
  • Campus: Cesena
  • Corso: First cycle degree programme (L) in Computer Systems Technologies (cod. 6007)

Learning outcomes

At the end of the course, the student knows the basic data structures and the notable algorithms from the literature operating on them. The student is familiar with the main techniques for estimating the computational cost of algorithms and is able to design and implement efficient solutions to solve common problems in the field of information technology disciplines.

Course contents

The course consists of two modules: one primarily introducing algorithms and data structures, and the second introducing the Python language. The algorithms and data structures of interest will be presented using an abstract language (pseudocode) independent of syntactical details, and during the exercises, they will then be translated mainly using the C language. Python will offer another perspective, useful both in this course and especially in subsequent courses.

The topics covered during the course include:

  • Concepts of algorithms and efficiency/complexity
  • Analysis and asymptotic notation of complexity (Big O)
  • Recursive algorithms and the divide-and-conquer methodology
  • Search algorithms
  • Sorting algorithms
  • Elementary data structures: stacks, queues, lists
  • Hash tables
  • Graphs and graph traversal algorithms
  • Binary search trees

Readings/Bibliography

The provided material is necessary and sufficient.

For further study, the following texts are suggested:

  • Introduzione agli algoritmi e strutture dati. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest. McGraw-Hill Education, 2010
  • Algoritmi e strutture dati - Astrazione, progetto e realizzazione. Pasquale Foggia, Mario Vento. McGraw-Hill, 2011

Teaching methods

  • Lectures
  • Practical exercises in lab

Considering the type of activity and the teaching methods adopted, the attendance of this training activity requires the prior participation of all students in the training modules 1 and 2 on safety in the study places, https://corsi.unibo.it/laurea/TecnologieSistemiInformatici/formazione-obbligatoria-su-sicurezza-e-salute in e-learning mode.

Assessment methods

The exam will consist of two parts:

  1. A small project (exercise) related to the Python module, which will be a criterion for admission to the written exam (without grade), and
  2. A written/practical exam containing questions on theoretical aspects for the assessment of the acquired knowledge and practical implementation exercises of algorithms/data structures (in C and/or Python) for the assessment of the competences. The final grade will be computed as the sum of the grades of the individual exercises.
Students with specific learning disorders (DSA) or temporary or permanent disabilities are advised to contact the responsible University office in advance, at the address https://site.unibo.it/studenti-con-disabilita-e-dsa/en. The office will take care of proposing any necessary adjustments, which must in any case be submitted, at least 15 days in advance, for the approval of the instructor, who will assess their appropriateness also in relation to the learning objectives of the course.

Teaching tools

  • Handouts (slides) prepared by the instructors
  • Source code examples and Jupyter notebooks
  • Exercises (with solutions)

Office hours

See the website of Roberto Casadei

See the website of Vittorio Maniezzo