Software Engineering

(for Intelligent Distributed Systems)

A.Y. 2025/2026


Prof. Giovanni Ciatto


Compiled on: 2026-05-19 — printable version

Table of contents

  1. About the course (and the exam)
  2. Introduction to software engineering
  3. Preliminary notions for Software Development
  4. Decentralized version control (with git) and team organization
  5. Object oriented programming (in Python)
  6. Software Modelling with UML (and PlantUML)
  7. QA, testing, TDD, reproducibility and replicability (examples in Python)
  8. Build automation, packaging, and release (examples with Poetry)
  9. Versioning, Conventional Commit
  10. Continuous integration (examples with GitHub Actions)
  11. Overview on Distributed Systems Engineering
  12. Web Services and RESTful APIs
  13. Domain Driven Design
  14. Software Licensing

Extras (if we have time)