81672 - Emerging Programming Paradigms

Academic Year 2023/2024

  • Teaching Mode: Traditional lectures
  • Campus: Bologna
  • Corso: Second cycle degree programme (LM) in Computer Science (cod. 5898)

Learning outcomes

In recent years there is a renaissance of the development of programming language, motivated by the introduction of multicore processors and the need of finding simpler way to exploit them. Go, Scala, Erlang, Clojure, Rust are examples of languages that are interesting to the industrial world and that are rooted into both new and old programming paradigms. At the end of the course the student will know the main emerging programming paradigms, how to critically weight their weak and strong characteristics and she will have acquired new programming skills.

Course contents

The course introduces the student to several programming languages, highlighting the principles and characteristics that are the strong points or at least that are peculiar to the language (e.g. error management in Erlang, memory management in Rust, etc.).

We will also see recurrent problems in programming language designs, comparing the linguistic solutions available.

The list of topics will include at least:

- actor based programming and its implementation

- blockchains and smart contracts

- functional constructs and their implementation: closures, algebraic data types, pattern matching, extensible records, polymorphic variants

- generalized algebraic data-types

- different flavors of polymorphisms and their implementation: parametric polymorphism vs bounded polymorphism vs dynamic dispatching

- traits, type classes

- monads and monad transformers

Readings/Bibliography

There is no main book.


Slides will be prepared by the teacher.


Manual and other on-line material will also be suggested in class.

Teaching methods

Frontal lessons where slides are presented or code is developed on-the-fly. Each student will be required to learn a couple of programming languages and, later, present them to the other students in discussion sessions or during talks.

Students could be assigned mini-projects to be done individually or in groups. The assignments are meant to highlight the main differences between the various programming paradigms and programming languages.


Assessment methods

Oral exam.

Students with disabilities and Specific Learning Disorders (SLD)Students with disabilities or Specific Learning Disorders have the right to special accommodations according to their condition, following an assessment by the Service for Students with Disabilities and SLD. Please do not contact the teacher but get in touch with the Service directly to schedule an appointment. It will be the responsibility of the Service to determine the appropriate adaptations. For more information, visit the page:

https://site.unibo.it/studenti-con-disabilita-e-dsa/en/for-students

Teaching tools

Slides, recorded lessons, on-line website implementing a Repl (Read-Eval-Print-Loop) for some of the programming languages presented.

Office hours

See the website of Claudio Sacerdoti Coen