FUNCTIONAL AND CONCURRENT PROGRAMMING PRINCIPLES
Academic Year 2024/2025 - Teacher: Franco BARBANERAExpected Learning Outcomes
Knowledge and understanding: The course aims to make the students aquainted with some of the fundamental aspects of functional and concurrent programming. Students will learn to recognize the "core" and relevant parts common to all functional and concurrent programming languages, as well as to isolate their characterizing parts, As a relevant tool for the formal partial verification of programs, Type Theory will play a relevant role in the course.
Applying knowledge and understanding: The study of foundational aspects will be paired with programming activities on different actual languages, such as Haskell for funcltional programming and Erlang (based on the actor concurrency model) for functional/concurrent programming. Didactic/sperimental languages will also be dealt with in order to actually apply principles of Session Types.
Making judgements: The students will be encouraged to autonomously applying - on simple but actual programming examples - what learned in the general context of the foundational theories. They will be also encouraged to frame their past functional/concurrent programming experiences in the more formal part of the course..
Communication skills: The students will acquire the necessary communication skills and expressive ability in order to express in a formal and non-ambiguous way topics and arguments related to distributed and concurrent programming.
Learning skills: The students will be anabled to autonomously facing the study of functional and concurrent languages, as well as to recognize and isolate their characterizing foundational aspects.
Course Structure
The course site contains a remarkable set of exercises, and students are invited to tackle them during self-study.
Those in which the students encountered difficulties are addressed in the first part of the lesson, at the students' request.
Also in the first part, the teacher invites the students to communicate any difficulties encountered in tackling the study of the topics
of the previous lessons, so that we can discuss them together.
In the second part of the lesson, new topics are addressed and exercises relating to them are often indicated, among those present on the course
exercises page or new ones (which will eventually increase the set of available exercises).
As in the previous year, we will try to organize numerous ongoing tests, the evaluation of which will allow you to be exempted from taking part of the final exam.
Should teaching be carried out in mixed mode or remotely, it may be necessary to introduce changes with respect to previous statements, in line with the programme planned and outlined in the syllabus.
Learning assessment may also be carried out on line, should the conditions require it.
Required Prerequisites
Attendance of Lessons
Detailed Course Content
Textbook Information
Course Planning
Subjects | Text References | |
---|---|---|
1 | Introduction to Functional programming | https://www.dmi.unict.it/barba/PRINC-FUN-CONC/PROGRAMMI-TESTI/index.html |
2 | Introduction to Haskell and types in Haskell.Overview of lambda-calculus. | https://www.dmi.unict.it/barba/PRINC-FUN-CONC/PROGRAMMI-TESTI/index.html |
3 | Theory of simple types and ita application to Haskell | https://www.dmi.unict.it/barba/PRINC-FUN-CONC/PROGRAMMI-TESTI/index.html |
4 | The Actor model of cuncurrent programming | https://www.dmi.unict.it/barba/PRINC-FUN-CONC/PROGRAMMI-TESTI/index.html |
5 | Programming in Erlang | https://www.dmi.unict.it/barba/PRINC-FUN-CONC/PROGRAMMI-TESTI/index.html |
6 | Introduction to pi-calcolo. | https://www.dmi.unict.it/barba/PRINC-FUN-CONC/PROGRAMMI-TESTI/index.html |
7 | Introduction to Session Types. | https://www.dmi.unict.it/barba/PRINC-FUN-CONC/PROGRAMMI-TESTI/index.html |
8 | Introduzione a SePi | https://www.dmi.unict.it/barba/PRINC-FUN-CONC/PROGRAMMI-TESTI/index.html |
9 | Programming in SePi. | https://www.dmi.unict.it/barba/PRINC-FUN-CONC/PROGRAMMI-TESTI/index.html |
10 | The delegation mechanism in . SePi examples. | https://www.dmi.unict.it/barba/PRINC-FUN-CONC/PROGRAMMI-TESTI/index.html |
11 | Coreographies: global protocols, local protocols. | https://www.dmi.unict.it/barba/PRINC-FUN-CONC/PROGRAMMI-TESTI/index.html |
12 | Multiparty session types. | https://www.dmi.unict.it/barba/PRINC-FUN-CONC/PROGRAMMI-TESTI/index.html |
13 | Temporal Logic and Model Checking | https://www.dmi.unict.it/barba/PRINC-FUN-CONC/PROGRAMMI-TESTI/index.html |
14 | Ambient Calculus and Petri nets | https://www.dmi.unict.it/barba/PRINC-FUN-CONC/PROGRAMMI-TESTI/index.html |
Learning Assessment
Learning Assessment Procedures
In the written test, questions relating to the theoretical part of the course will be asked; the student will also be asked to develop small programs in the programming languages covered in the course.
Verification of learning can also be carried out electronically, should conditions require it.
Students with disabilities and/or DSA must contact the teacher, the CInAP contact person of the DMI (Prof. Daniele) and the CInAP sufficiently in advance of the exam date to communicate that they intend to take the exam taking advantage of the appropriate compensatory measures.