B8105 - Computational Management of Data (LM)

Academic Year 2025/2026

  • Docente: Silvio Peroni
  • Credits: 12
  • SSD: INF/01
  • Language: English
  • Moduli: Silvio Peroni (Modulo 1) Ivan Heibi (Modulo 2) Silvio Peroni (Modulo 3)
  • Teaching Mode: Traditional lectures (Modulo 1) Traditional lectures (Modulo 2) Traditional lectures (Modulo 3)
  • Campus: Bologna
  • Corso: Second cycle degree programme (LM) in Digital Humanities and Digital Knowledge (cod. 6736)

Learning outcomes

At the end of the course, the student knows the high-level principles and the historical and theoretical backgrounds for solving problems efficiently using computational tools and information-processing agents, as well as the theoretical and practical groundings for modelling, gathering and managing data using computational techniques. The student is able to understand and use the main data structures for organising information, develop algorithms for addressing computational-related tasks, implement such algorithms in a specific programming language, write and share data using standard formats for spreadsheet and Web consumption, understand and create databases through database management systems, retrieve data using appropriate query languages, build and interpret graphs showing basic descriptive statistics computed from data, and develop and integrate data-driven workflows into software applications.

Course contents

The course is organised in two blocks.

The first block (module 1) is organised in a series of lectures. Each lecture introduces a specific topic, includes mentions to some related historical facts and to people (indicated between squared brackets) who have provided interesting insights on the subject. The lectures are accompanied by several hands-on sessions for learning the primary constructs of the programming language that will be used for implementing and running the various algorithms proposed.

The second block (module 2 and 3) is organised in a series of theoretical lectures and hands-on sessions. In each lecture, it is provided a theoretical introduction about the specific topic of the lecture. In each hands-on session to be held with a computer, it is run a laboratory activity session based on existing tools that enable the experimentation with the topics introduced in the theoretical lectures.

List of lectures

First block (module 1, October-December)

  • Introduction to Computational Thinking [Chomsky]
    - What is a computer?
    - Comparing natural languages and programming languages
    - Abstraction: the main tool of Computational Thinking
  • Algorithms [Lovelace]
    - What is an algorithm?
    - First machines and programmers
    - How to develop an algorithm: flowcharts
    - Our first algorithm: input, process, decision, output
  • Computability [Turing]
    - The computational cost of an algorithm
    - The halting problem (or, can we compute everything?)
    - Assessing the output: test-driven development
  • Programming Languages [Hopper]
    - History of programming languages
    - Python
    - Writing our first algorithm in Python: variables, assignments, and conditional statements
  • Organising information: ordered structures [Knuth]
    - What is a data structure?
    - List
    - Stack
    - Queue
  • Brute-force algorithms [Holberton]
    - Iterations: for and while constructs
    - Linear search
    - Insertion sort
  • Organising information: unordered structures [Borges]
    - Can data structures be infinite?
    - Set
    - Dictionary
  • Recursion [Hofstadter]
    - An intuition: the Little Harmonic Labyrinth
    - Recursive approaches in Linguistics and Physics
    - Recursive algorithms
  • Divide and conquer algorithms [von Neumann]
    - Ordering billions of books
    - Merge sort
  • Dynamic programming algorithms [Fibonacci]
    - Golden ratio and rabbits: how do they relate to each other?
    - Keeping track of past solutions to sub-problems
    - Fibonacci sequence
  • Organising information: trees [Garcia Marquez]
    - Genealogy and document markup
    - Tree
  • Backtracking algorithms [AlphaGo]
    - Playing board games with trees
    - Peg solitaire
  • Organising information: graphs [Euler]
    - The city of Königsberg
    - Graph
  • Greedy algorithms [Evelyn Berezin]
    - Wordprocessors
    - Line wrap

Second block (modules 2 and 3, February-March)

  • [Lecture] Introduction to the course and final project specifications
  • [Lecture] What is a datum and how it can be represented computationally
  • [Hands-on] Data formats and methods for storing data in Python
  • [Lecture] Introduction to data modelling
  • [Hands-on] Implementation of data models via Python classes
  • [Lecture] Processing and querying the data
  • [Hands-on] Introduction to Pandas
  • [Lecture] Database Management Systems
  • [Hands-on] Configuring and populating a relational database
  • [Lecture] SQL, a query language for relational databases
  • [Hands-on] Configuring and populating a graph database
  • [Lecture] SPARQL, a query language for RDF databases
  • [Hands-on] Interacting with databases using Pandas
  • [Lecture] Describing and visualising data
  • [Hands-on] Descriptive statistics and graphs about data using Pandas

The dates and times of all the lectures above are available in the section "Schedule" of the GitHub repository of the course.

Students with specific learning disorders (SLD) or temporary/permanent disabilities should contact the appropriate University office immediately and agree with the teachers the most effective strategies for attending the lectures and preparing for the exam.

Readings/Bibliography

Lecture notes will be made freely available to students in the GitHub repository of the course before the beginning of the course. Slides and any additional material will be made also available a few days before each lecture in the same repository. No additional books or papers are needed for passing the final exam successfully.

The following suggested readings could be helpful to students as background material, in order to practice basic terminologies of the course:

Teaching methods

Face-to-face classes for 60 hours, plus face-to-face laboratory sessions in the laboratory for max. 20 hours.

Assessment methods

The exam consists of:

  1. a (non-mandatory) workshop (duration: 3 hours) to be held after the last lecture of the first block of the course, where the students are asked to organise themself in groups of 3-4 people - maximum score: 3 points;
  2. a written examination (duration: one hour and an half) held after the first block of the course, for assessing the overall competences and analytical skills acquired by the students on all the topics of the first block of the course - maximum score: 32 points; minimum score for being sufficient: 18 points.
  3. the implementation of a group project to be submitted after the second block of the course, where students are mandatorily asked to organise themself in groups of 3-4 people; the correctness of the implementation will be evaluated against specific use cases and the personal contribution that each member of the group have bought to the implementation is also assessed via an oral colloquium held with the entire group - maximum score: 32 points; minimum score for being sufficient: 18 points.

If both the scores for points (2) and (3) are sufficient, the final score of the student is the sum of the scores gained for each of the aforementioned points - i.e. (1), (2), and (3) - divided by 2, and approximating it to the closest higher integer value in case of a decimal number. Any final score greater than 30 will be registered as 30 cum laude. In particular:

  • excellent evaluation (final score greater than 26): reaching an in-depth view of all the course topics, and active involvement in the development of the project following all the theoretical principles and practical guidelines provided to the student during the lectures and the hands-on sessions;
  • sufficient evaluation (final score between 18 and 26): reaching a partial view of the course topics, providing a minor contribution to the development of the project;
  • insufficient evaluation (final score lesser than 18): not reaching an inappropriate view of the course topics, and not providing any contribution to the project.

It is strongly suggested to attend the course in person since it would enable collegial discussions with the professors and the other students. Indeed, these discussions are extremely important since they simplify a lot the study of the course topics and the implementation of the project. However, even if discouraged, it is possible to follow the course as non-attender. The material to study for the final written examination is the same for both attenders and non-attenders. Instead, for non attenders, the topic of the project should be discussed with the professors in advance.

Students with specific learning disorders (SLD) or temporary/permanent disabilities should contact the appropriate University office in advance. The office will be responsible for proposing adaptations to interested students. Such adaptations must be submitted to the teachers for approval at least 15 days before the exam session. The teachers will also evaluate the adaptations regarding the training objectives of teaching.

Teaching tools

Classes are held in a classroom equipped with personal computers connected to the Intranet and Internet.

Theory lessons will always be accompanied by practical parts, which will be reinforced during several hands-on sessions. All the material of the course - including lecture notes and slides - will be made available in the GitHub repository of the course. A group in a free messaging application will be set up so as to allow all the students of the course to communicate directly with each other and with the professors.

Links to further information

https://github.com/comp-data/2025-2026/

Office hours

See the website of Silvio Peroni

See the website of Ivan Heibi

SDGs

Quality education

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