Università di Bologna · Prof. M. Viroli, Prof. G. Aguzzi · a.a. 2025/2026

Advanced Software Modelling and Design

15 chapters4 parts~9 hours of study60+ interactive widgets

How to study

A

Robust software engineering

Pervasive validation, testing at every level, and AI in the development process.

  1. 01Robust software engineering and pervasive validation25 min
  2. 02Requirements, acceptance testing and BDD/ATDD30 min
  3. 03Advanced testing: TDD, test doubles and integration45 min
  4. 04Large language models for software engineers45 min
  5. 05AI-assisted software engineering40 min
B

High-level specification and programming

Scala 3 as the language in which models are written, checked and executed.

  1. 06Advanced Scala: ADTs, modules and type classes45 min
  2. 07Monads, property-based testing and a monadic MVC45 min
  3. 08Effect systems: transformers, tagless final and capabilities40 min
C

Modelling with complexity

Non-determinism, probability, time, and the tools that analyse them.

  1. 09Modelling nondeterminism: transition systems and Petri Nets40 min
  2. 10Stochastic modelling: DTMC, CTMC and stochastic Petri Nets45 min
  3. 11Stochastic analysis: temporal logics and model checking40 min
  4. 12Stochastic simulation: kinetic Monte Carlo and Alchemist40 min
D

Learning and distribution

Synthesising behaviour by learning, and programming the aggregate rather than the device.

  1. 13Reinforcement learning: from MDP to deep and multi-agent RL50 min
  2. 14Aggregate computing: purely functional distributed programming45 min
  3. 15Agentic AI engineering: tools, memory and verification40 min