11929 - Algorithm and Data Structures

Academic Year 2024/2025

  • 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

  • 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, and
  2. A written/practical exam containing questions on theoretical aspects and practical implementation exercises of algorithms/data structures (in C and/or Python).

Teaching tools

  • Handouts (slides) prepared by the instructors
  • Exercises (with solutions)

Office hours

See the website of Roberto Casadei

See the website of Vittorio Maniezzo