- Docente: Luca Padovani
- Credits: 6
- SSD: INF/01
- Language: Italian
- 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
This course introduces a number of different programming languages highlighting the underlying principles, the peculiar features, the strengths and the interesting implementation aspects. A recurring and common theme across all the presented arguments concerns the role of types in conceiving and using constructs and programming idioms enabling the development of code that is robust, modularly composable and that provides strong correctness guarantees. The arguments include:
- Classless object-oriented programming
- Limits of the object-oriented programming paradigm
- Traits in Go and in Rust, type classes in Haskell
- Case study: code testing with QuickCheck
- Compositional approaches to programming with side effects
- The origin of monads and classical monads (partial computations, state, I/O)
- Monad transformations
- Case studies: non-deterministic parsing, concurrent programming with Software Transactional Memory
- Certified programming
- From parametric to dependent types
- Case studies: certified programming on numbers, lists and sized vectors
Readings/Bibliography
The teacher will provide slides and programs presented during the lectures, in addition to pointers to papers, manuals and other online material.
Teaching methods
Lectures with presentation of slides and interactive program development guided by the teacher. Exercises to be carried out at home either individually or in a group.
Assessment methods
The exam is written and to be completed individually on paper or at the computer on the day of the exam without manuals, teaching material or personal notes. It includes open questions and programming exercises in the presented languages.
The exam is marked with a score from 0 to 31 and is considered to be sufficient if scored with at least 18.
Note: in order to access the computer science laboratory it is mandatory for all students to take the online course on security (modules 1 and 2).
Teaching tools
- Programming environments for various languages
- Slides
- Code examples
- Programming exercises with solutions
All the teaching material will be made available on Virtuale.
Office hours
See the website of Luca Padovani