Teaching & Training

Courses, student theses and projects, tutorials, workshops, and outreach activities.

Timeline

Current Courses

2026 Course

Engineering of Domain-Specific Languages

Domain-Specific Languages (DSLs) are programming languages that are tailored to a particular application domain. This essential focus of DSLs allows one to write more concise and understandable programs, with tight stakeholder integration, and, when done properly, to improve code quality. The course will feature the current state of the art in both the design and implementation of DSLs. The course will emphasize the different design dimensions of DSLs, the involved language paradigms and features, and the drawbacks with respect to simple API modeling.

2026 Course

Software Atelier 4: Software Engineering Project

Programming skills are essential but not enough to develop large and complex software systems that require the coordination of a team of specialists. Software engineering is about the development of such moderns software systems. Students will learn to go beyond programming, to coordinate a team, to apply modern methodologies and techniques.

Academic Tutorials

4 September 2016 Tutorial

Mining and Modelling Unstructured Data

Artifacts containing natural language, like Q&A websites (e.g., Stack Overflow), tutorials, and development emails, are essential to support software development. They have become a popular subject for software engineering research. The analysis of such artifacts is particularly challenging because of their heterogeneity: These resources consist of natural language interleaved with fragments of multiple programming and markup languages. Our tutorial is aimed at overcoming the challenge, by first discussing the state of the art of methodologies to analyze unstructured data, and their current limitations and challenges. Then, it focuses on our efforts towards a systematic approach to model contents of such artifacts. This in turn enables novel holistic analyses that fully exploit their intrinsic heterogeneous nature. We describe the theoretical foundations of our StORMeD framework, how it can be used to extract a full-fledged model of a development artifacts, and how it can be leveraged to construct various types of analyses, such as summarization.

Developer Workshops

PhD Theses

13 November 2017 PhD Thesis Co-Advised by me

Interaction-Aware Development Environments: Recording, Mining, and Leveraging IDE Interactions to Analyze and Support the Development Flow

Student: Roberto Minelli. Nowadays, software development is largely carried out using Integrated Development Environments, or IDEs. An IDE is a collection of tools and facilities to support the most diverse software engineering activities, such as writing code, debugging, and program understanding. The fact that they are integrated enables developers to find all the tools needed for the development in the same place. Each activity is composed of many basic events, such as clicking on a menu item in the IDE, opening a new user interface to browse the source code of a method, or adding a new statement in the body of a method. While working, developers generate thousands of these interactions, that we call fine-grained IDE interaction data. We believe this data is a valuable source of information that can be leveraged to enable better analyses and to offer novel support to developers. However, this data is largely neglected by modern IDEs.

16 March 2017 PhD Thesis Co-Advised by me

Holistic Recommender Systems for Software Engineering

Student: Luca Ponzanelli. The knowledge possessed by developers is often not sufficient to overcome a programming problem. Short of talking to teammates, when available, developers often gather additional knowledge from development artifacts (e.g., project documentation), as well as online resources. The web has become an essential component in the modern developer's daily life, providing a plethora of information from sources like forums, tutorials, Q&A websites, API documentation, and even video tutorials. Recommender Systems for Software Engineering (RSSE) provide developers with assistance to navigate the information space, automatically suggest useful items, and reduce the time required to locate the needed information. Current RSSEs consider development artifacts as containers of homogeneous information in form of pure text. However, text is a means to represent heterogeneous information provided by, for example, natural language, source code, interchange formats (e.g., XML, JSON), and stack traces. Interpreting the information from a pure textual point of view misses the intrinsic heterogeneity of the artifacts, thus leading to a reductionist approach. We propose the concept of Holistic Recommender Systems for Software Engineering (H-RSSE), i.e., RSSEs that go beyond the textual interpretation of the information contained in development artifacts. Our thesis is that modeling and aggregating information in a holistic fashion enables novel and advanced analyses of development artifacts. To validate our thesis we developed a framework to extract, model and analyze information contained in development artifacts in a reusable meta-information model. We show how RSSEs benefit from a meta-information model, since it enables customized and novel analyses built on top of our framework. The information can be thus reinterpreted from an holistic point of view, preserving its multi-dimensionality, and opening the path towards the concept of holistic recommender systems for software engineering.

Master Theses

18 June 2026 Master Thesis Advised by me

A Customized RAG-Based Chatbot for iCorsi

Student: Gianluca Maragliano. Students increasingly turn to general purpose Artificial Intelligence (AI) assistants for various kinds of help with coursework, from clarifying lecture concepts to working through assignments. These tools can produce relevant answers and are always available, but they have no awareness of what a particular instructor taught, what notation the course uses, or what was shown during a specific lecture. The materials students are actually supposed to learn from sit on their university's learning platform, entirely out of reach from the AI assistants. Grounding these assistants in course content is the obvious remedy. This thesis pursues that goal in the context of iCorsi, the Learning Management System at Università della Svizzera italiana (USI), a setting that surfaces two main engineering and conceptual challenges.

18 June 2026 Master Thesis Co-Advised by me

FairLex: AI-Based Assistant for Legal Compliance and Sustainability Challenges in the Fashion Industry

Student: Francesco De Vito. Regulatory pressure on sustainability in the fashion industry has increased significantly in recent years. Large companies face significant costs to comply with an increasingly complex regulatory framework, while for small and medium-sized businesses, the same obligations pose even higher risks, as they must navigate identical legal requirements with fewer dedicated resources and limited in-house legal expertise. Making matters even more challenging is the fact that these requirements are distributed across different jurisdictions and written in multiple languages.

29 January 2026 Master Thesis Advised by me

A Simple DSL to Query Challenging Patterns on Platformer Levels

Student: Boris Bezzola. In platform games, players have to reach the end of the level by navigating courses through platforms, obstacles, enemies, and uneven terrain by relying on jumps, climbing, dashing, and other movement mechanics. The Super Mario series is one of the most famous and influential games of this genre, spanning both 2D and 3D platform games, and often revolutionizing both.

29 September 2025 Master Thesis Co-Advised by me

AI-Driven Analysis and Optimization of Fairness in Competitive Video Games

Student: Federico Lagrasta. Since their inception, video games have experienced an immense growth in popularity. A once-niche hobby a few partook in is now one of the most accessible and widespread forms of recreation. The market has adapted to such demand: in 2023, the video game market size was estimated at over 240 billion USD and projected to reach 650 billion within 10 years. Video games can be costly to develop, and the titles with the highest budgets, known as AAA, can reach comprehensive costs ranging in the hundreds of millions USD.

30 January 2025 Master Thesis Co-Advised by me

Spatio-Temporal Visualization of Evolving Company Networks

Student: Francesco Bresciani. Switzerland has experienced significant economic changes over the past 150 years, transitioning from a primarily local economy, where businesses operated mostly in the primary sector, to one of the world's most competitive economies, largely driven by the services sector. This evolution has attracted the attention of economists who aim to understand the factors behind this shift. Part of the data needed for economists to analyze the Swiss economy is available due to the Swiss Ordinance on the Registry of Commerce, which requires businesses listed in the Central Business Name Index to provide detailed information about their location, ownership, business purpose, and other relevant aspects. The Swiss Confederation ensures this information is made publicly accessible by publishing daily updates in the Official Gazette of Commerce. Despite the wealth of this valuable data, its potential remains largely unexploited due to its unstructured nature, compounded by the multidimensionality of the information. Therefore, to date, no large-scale analysis has ever been undertaken.

19 June 2023 Master Thesis Advised by me

Mining A Century of Swiss Trademarks

Student: Daniel Travaglia. The Swiss Commercial Registry has been recording information regarding commercial activities in Switzerland since 1883, preserving the data in the form of periodic publications known as the Swiss Commercial Gazette of Commerce (SOGC). This information, currently accessible through a digitalized archive of scanned PDF documents, spans across heterogeneous cantonal registers and includes approximately 430,000 pages of text. These records are characterized by various details such as company acquisitions, founding events, relocations, bankruptcies, and trademark registrations from 1883 to 2001. This master thesis focuses on the specific events related to the registration of trademarks within this vast collection. The gathering and mining of this data hold significant importance for economic studies, enabling researchers to explore the notable economic development that Switzerland has witnessed over the past century. The objective of this work is to transform the wealth of unstructured information contained in these documents into a structured and queryable dataset to facilitate research activities. To accomplish this, we employ several state-of-the-art techniques to identify trademark sections, locate relevant entries, and extract associated information. Designing a comprehensive approach to achieve this goal involves addressing several challenges: (i) handling the extensive size of the collection, amounting to approximately 600GB; (ii) accommodating the evolving structure and information layout of the documents over time; (iii) managing the varying quality of the pages, including noise and artifacts; and (iv) dealing with the multilingual nature of the documents, incorporating entries in German, French, and Italian.

19 June 2023 Master Thesis Advised by me

Modeling and Analyzing Time-Dependent Network of Firms

Student: Federico Lombardo. Since 1888 the economic and legal data related to firms in the Swiss Confederation has been collected in the registry of commerce, a public archive administered by the government, which contains documentation about juridical entities conducting business. The aim is to record and publish legally relevant administrative events (e.g., the creation or the fusion of two companies, the names of partners, board members, and company directors having signatory authority) and ensure the protection of third parties. In particular, it promotes the security of trades by conferring certain legal effects on registered facts. Historically, this data has been recorded as natural language text, written in French, Italian, and German, in a printed format. Nowadays this data is recorded in digital format and enriched with metadata about the involved companies. However, the complete semantics still needs to be extracted from natural language. For example, when a firm has a new owner or partner, such information is available only in the raw text, and similarly, when a firm merges with another one, the buyer firm needs to be extracted from natural language. This information is essential to support many tasks in economic studies, in particular, the ones requiring networks (i.e., graphs) of direct firm-firm connections, such as subsidiary and branch relationships, as well as indirect firm-owner-firm links.

15 September 2022 Master Thesis Advised by me

Branching Scenarios in Interacting Video Tutorials

Student: Davide Ciulla. As technology advances, new means that support learning emerge. In particular, as the internet rose, programmers were granted access to an astounding amount of online resources. Among such resources, video tutorials have emerged as one of the most popular ways developers learn new concepts and technologies, and their popularity is rooted in their asynchronous and procedural nature based on detailed, step-by-step experiences. Recently, research has proposed interactive video tutorials, which consist not only of audio and video streams, but also streams of interaction data recorded from the IDE - e.g., mouse events, keyboard events - and re-playable in the IDE itself. This feature allows the programmer watching a tutorial to pause it, inspect the status of the IDE, and experiment with the code. While classic video tutorials are a rather passive experience, with interactive tutorials developers are allowed to take a more active role and experiment at any moment they need.

15 June 2022 Master Thesis Advised by me

Encoding Program Comprehension Tasks as Role Playing Games: a Prototype Framework Aiming to Produce Serious Games

Student: Lazar Najdenov. Program comprehension is one of the fundamental activities of software development. Despite advances in software engineering research and practice, how to properly support program comprehension is essentially an open problem, especially when it involves tasks in the large, e.g., getting a grasp of the architecture of a software system, or understanding complex domain models. Moreover, for such tasks, the support given by modern IDEs is relatively limited. Like many other complex and poorly supported software engineering activities, program comprehension can impair the motivation of developers, ultimately causing a significant loss of engagement. To overcome this negative effect, recent research has investigated the use of Gamification, i.e., the use of game elements and game design techniques to address non-game problems. However, this often resorts to merely adding points and badges as rewards, which is known to have limited effectiveness because of a fast degradation of engagement. Instead, we believe that the complex relationships typical of software systems, that are thus involved in program comprehension tasks, require equally complex game design techniques that are typical of more complex games.

17 June 2021 Master Thesis Co-Advised by me

GITGLASS: Data Analysis and Visualization of Collaborative Development Platforms

Student: Gabriele Zorloni. Collaborative development platforms, such as GitHub and GitLab, integrate version control and source code management with collaboration features like issue tracking, wikis, continuous integration, and merge request management. Thus, the analysis of such platforms can reveal not only information about the structure and quality of a code-base, but also valuable insights on how a development team works and collaborates.

9 September 2020 Master Thesis Advised by me

Automatic Classification of Development Artifact Contents

Student: Alexander Fischer. Software developers often make use of development artifacts (e.g., StackOverflow posts, software documentation) to obtain information related to the problem they are trying to solve. The content of these resources is heterogeneous as it usually combines source code and other structured information (e.g., interchange formats, stack traces, log outputs) with natural language. Furthermore, the snippets of code in these resources may pertain to multiple programming languages in a single artifact, and such snippets may even be incomplete or erroneous. Extracting the contents from these resources has become a fundamental task for many applications in software analytics and recommendation systems for software engineering (RSSEs). Such tools can help developers in navigating large numbers of artifacts, thus improving their information-gathering efficiency.

23 June 2020 Master Thesis Co-Advised by me

Characterizing and Visualizing Development Fragmentation with Interaction Data

Student: Aldo Gabriele Di Rosa. Work fragmentation is a phenomenon that has been widely investigated in recent years. This phenomenon is very common in the workspace, and is detrimental to the actual work taking place. One source of fragmentation is represented by interruptions, where an external signal (e.g., email, chat, or phone call) forces a switch of activity at an unplanned moment and for an unknown duration.

23 June 2020 Master Thesis Co-Advised by me

SITRA - Simple Traffic: Support Decision-Making in a Real Context with Traffic Simulation

Student: Valerie Burgener. Nowadays urban road traffic management presents a number of challenges: In fact, there is an increasing demand for physical mobility, new mobility models change the flow of the streets, and technology advancements such as autonomous cars result in considerable changes in driving behavior.

23 January 2020 Master Thesis Co-Advised by me

Viralscale: Leveraging Virality to Predict and React to Traffic Spikes

Student: Lucas Pennati. Microservices are a novel architectural style that, among many benefits, enables easy to scale applications. This approach promotes the development of an application as a suite of the composing services. Due to this decoupling, it is easy to deploy multiple instances of the same service, and distribute the workload among them.

1 September 2017 Master Thesis Co-Advised by me

Assessing Software Documents by Comprehension Effort

Student: Talal El Afchal. Recommender systems for software engineering have become increasingly popular in recent years. These systems combine several methodologies to provide suggestions that meet the developer’s needs. Recommender systems collect data from online resources, such as blogs, forums, Q&A websites, and suggest documents or pieces of code that are most likely helpful to the developers. However, these systems are not taking into consideration their comprehension effort, which may vary depending on the document familiarity and readability. In this thesis, we present our approach to calculating the comprehension effort, by creating a language model able to capture a document familiarity, that we combine with the document readability. Usually developers are more interested in documents which they are familiar with. By calculating the comprehension effort, a recommender system can complement the rank and suggest the most comprehensive and appropriate ones to the developer.

23 June 2014 Master Thesis Co-Advised by me

Visual Reflexion Models

Student: Marcello Romanelli. Understanding a large software system is a complex task. To deal with this problem, one solution is to create a high-level model by abstracting from the source code entities. As a side effect, this will create a conceptual gap with the real underlying system. Thanks to a reflexion model it is possible to figure out if the high-level model is coherent or not with respect to the real system. In other words, a reflexion model allows to validate a given system against a developer’s mental model. Reflexion model entities are currently constructed from the repository of the system. Specifically, the only elements taken into account are the file system structure of the repository and the textual content of the source code files. Generating the source model by parsing files with an extraction tool is both time consuming and error prone since it requires the manual intervention of the user. Another issue is that it is hard to understand the current coverage of the system: one cannot easily understand which source code entities are already mapped to high-level entities and which are not. We believe that the idea of software reflexion model is powerful and we think that it can be of great benefit for anyone involved in writing software. This thesis presents our approach that starts from a meta-model of the source code and eliminates the step of encoding the high-level abstraction in favor of a purely visual selection. With the support of a web-based tool, we show how our idea can be effectively implemented in practice. The visual creation of abstractions allows the users to navigate the system as it is being analyzed and one eliminates the need of any "extra" language, reduces the possible errors and enables to understand if the final result is correct with respect to the initial mental model. To validate our approach we apply it to two different case studies.

Bachelor Projects

Outreach Activities

Older Teaching Activities

2020 Course

Software Atelier 4: Software Engineering Project (2018-2020)

Programming skills are essential but not enough to develop large and complex software systems that require the coordination of a team of specialists. Software engineering is about the development of such moderns software systems. Students will learn to go beyond programming, to coordinate a team, to apply modern methodologies and techniques.

2016 Course

Software Atelier 1: Fundamentals of Informatics

The first of the ateliers, which are a crucial part of our Bachelor curriculum is roughly divided into three main pieces. On the one hand the students will obtain first-hand experience with a variety of tools of the trade, such as LaTeX, HTML, Versioning, and the unix shell. Second, the students will get an overview of the history of computer science since its very beginning up to the present day. The third part of the atelier is dedicated to a group project, in which students will put into practice what they learned in the course.

Course No tags assigned
2015 Course

Software Engineering

Software engineering is the discipline of engineering large software systems, that is developing software systems that are available in multiple versions and whose design, development and maintenance involve multiple people. Modern software engineering requires to manage methods, tools and techniques to develop systems on time and on schedule. The course provides the fundamental skills to engineer large software systems, manage a software process, elicit, specify and analyze software requirements, architect and design dependable and maintainable software, validate and verify software systems.

Course No tags assigned