Università di Bologna · Prof. Mirko Viroli · a.y. 2025/2026

Paradigmi di Programmazione e Sviluppo

11 lessons~5 hours of readingexam: project + FP/LP questions
Technical plate: testing, composed functions, objects with traits, iteration loops and a resolution tree, linked left to right
Plate 00 — Quality and tests → functions → objects → process → logic. The road of the course in one figure.

How to study

I

Software quality and testing

  1. 01Software quality, testing and tooling30 min
Plate: a test pyramid beside a checked box circled by the red-green-refactor loop
Plate I — Tests before code
II

Functional programming in Scala 3

  1. 02Functional programming basics in Scala 325 min
  2. 03Functional data structures30 min
  3. 04Advanced FP: ADTs, modules, type classes, monads35 min
Plate: a lambda feeding a chain of composed functions, with a two-case algebraic data type above
Plate II — Functions, composed
III

Scala for scalable software

  1. 05Object-oriented programming in Scala25 min
  2. 06Scala for scalable software: collections, mutability, modularity30 min
  3. 07Advanced Scala: types, mixins, variance, contextual abstractions30 min
Plate: a class containing two components with a trait mixed in on top and one method call leaving it
Plate III — Objects, traits, mixins
IV

Process and methodology

  1. 08Agile development and software methodology15 min
Plate: a loop of four arrows around a rising staircase, with a burndown chart beside it
Plate IV — Sprints and burndown
V

Logic programming and integration

  1. 09Logic programming: the paradigm and its computational model30 min
  2. 10Programming in Prolog: built-ins, idioms, metaprogramming35 min
  3. 11Java/Scala/Prolog integration and cross-platform Scala25 min
Plate: a resolution tree with two successful leaves, one failure and a backtracking arrow to the root
Plate V — Resolution and backtracking