Rocco De Nicola (IMT Lucca)

Principles of Concurrent and Distributed Programming

The course objective is to introduce the basics of concurrent programming problems through an illustration of the concepts and techniques related to modeling systems in which there are more components that are simultaneously active and need to coordinate and compete for the use of shared resources. At the end of the course the student will have a good understanding of the constructs for concurrent programming and be able to use them to write and analyze concurrent programs.

Modelling and Verification of Reactive Systems

Computing systems are becoming increasingly sophisticated and control key aspects of our lives. In light of the increasing complexity of such computing devices, one of the key scientific challenges in computer science is to design and develop computing systems that do what they were expected to do, and do so reliably. The aim of this course is to introduce models for the formal description of computing systems, with emphasis on parallel, reactive and possibly real-time systems, and the techniques for system verification and validation that accompany them.

Research Topics in Computer Science

The goal of this course is to get students acquainted with research methods in computer science, including publication strategies and a classification of its main outlets (workshops, conferences, and journals). Students will receive a broad perspective on the major sub-fields computer science (e.g., programming languages, verification, software engineering, security, ?) by means of guest lectures delivered by leading experts in the respective areas.

Qualitative and Quantitative Formal Methods for Computer Science

This course offers an introduction to core topics in formal methods for the specification and analysis of systems, both for functional and nonfunctional properties. Students will be exposed to basic models of computation such as labelled transition systems and process algebra, formal approaches to specifying the semantics of programming languages (such as operational and denotational semantics), and quantitative analysis methods based on Markov processes.

Principles of Concurrent and Distributed Programming

The course objective is to introduce the basics of concurrent programming problems through an illustration of the concepts and techniques related to modeling systems in which there are more components that are simultaneously active and need to coordinate and compete for the use of shared resources. At the end of the course the student will have a good understanding of the constructs for concurrent programming and be able to use them to write and analyze concurrent programs.

Modelling and Verification of Reactive Systems

Computing systems are becoming increasingly sophisticated and control key aspects of our lives. In light of the increasing complexity of such computing devices, one of the key scientific challenges in computer science is to design and develop computing systems that do what they were expected to do, and do so reliably. The aim of this course is to introduce models for the formal description of computing systems, with emphasis on parallel, reactive and possibly real-time systems, and the techniques for system verification and validation that accompany them.