Computer Science

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.

Formal Methods for Computer Science

This course is intended to acquaint new students with the computer science requirements of the PhD program and with some of the research areas that are active within the program. It aims at providing the basic mathematical techniques necessary for understanding semantics and logics of programming languages, which are at the basis of different kinds of program analysis.

Advanced Topics of Image Analysis

This course will be organized as series of reading groups or specialized seminars by members or collaborators of the research unit on Pattern Recognition and Image Analysis (PRiAn).

Model Predictive Control

Quick review of linear dynamical systems in state-space form, stability, state-feedback control and observer design, linear quadratic regulation and Kalman filtering. Basic model predictive control (MPC) algorithm and the receding horizon principle. Linear MPC: formulation, quadratic programming, stability properties. Multiparametric programming and explicit MPC. MPC of hybrid dynamical systems subject to linear and logical constraints. Stochastic MPC. Selected applications of MPC to automotive and aerospace systems, supply chains, financial engineering.

Model Checking

Model checking is an automated formal verification technique whose main idea is to formally specify both the system specification and its properties (typically, by means of temporal logic) and automatically verify that such properties are satisfied (or to which extent they are). This course aims at presenting the fundamentals of model checking techniques for the verification of distributed and concurrent systems. Different classes of temporal logics will be introduced that rely on the use of semantic models to provide a logical framework for the analysis and verification of complex systems.

Software Engineering for Service-Oriented Systems and Autonomic Systems

Service-Oriented Computing is an emerging paradigm where services are understood as autonomous, platform-independent computational entities that can be described, published, categorised, discovered, and dynamically assembled for developing massively distributed, interoperable, evolvable systems and applications. In this course a model-driven approach to the development of service-oriented software systems is presented where foundational theories and techniques are integrated in a pragmatic software engineering approach.

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.