Master Meetings

Have you decided on which Master programme to study? Would you like more information on the contents and teaching methods at USI? Register at our Master Meetings to attend courses.
The various Master Meetings offer you the opportunity to follow lectures together with the current master students. Guided by a USI student, you can visit the campus and make up your mind as to whether the contents correspond to your study ambitions.

Registration is compulsory. Please register online.


MSc in Software and Data Engineering

SI-003, Informatics Building

Programming Styles

Prof. Matthias Hauswirth


You are a good programmer. You are fluent in multiple programming languages. But can you program in style? This course is a journey through the landscape of programming languages and idioms. You will discover a multitude of dramatically different programming styles. A style arises from a set of constraints you impose on your code. Styles are independent of a given programming language. You can use many different programming languages to write code in a given style. In this course you won't just hear about and discuss various styles. You will practice those styles. You will look at programming as an art, and like a budding artist—be it a painter, a writer, or a musician—you will practice producing works in multiple artistic styles.

SI-013, Informatics Building

Software Performance

Prof. Matthias Hauswirth


This course teaches how the various layers of a computer system interact and affect the resulting performance. It performs two cuts down the system stack: one about the 'state' and the other about the 'behaviour' of a system. The discussion of 'state' investigates memory usage of applications, leak detection, garbage collection, virtual memory management, and cache performance. The discussion of 'behaviour' investigates call graphs, dynamic class loading, shared libraries and dynamic linking, control flow graphs, exception handling, compiler optimizations, and branch prediction. The course uses Java virtual machines and their internal operation as a running example and teaches basic static and dynamic program analysis techniques. It includes a series of programming assignments in which students implement various program analyses.

SI-004, Informatics Building


Software Design and Modeling

Prof. Carlo Alberto Furia


Software is built on abstractions, and the quality of those abstractions determines usability and maintainability of software. This course presents techniques and methods to understand the design of existing software, to improve it, and to write programs using the right abstractions. The main focus of the course are object-oriented design mechanisms, but with some topics targeting functional programming. After an introductory recap of object-oriented programming, the course discusses how to assess the design quality of object-oriented systems, how to identify and use so-called design patterns, how to avoid common design flaws, and how to introduce rigorous yet practical means of documenting design and functionality. The course mainly follows a hands-on, learning-by-doing approach with assignments to be performed on open-source systems.

SI-003, Informatics Building

Mobile and Wearable Computing

Prof. Silvia Santini


The widespread use of mobile and wearable devices such as mobile phones and smart watches enables the design and implementation of an endless set of novel services in applications areas like mobile health, smart working, and more. This course presents the main building blocks of such services and applications and discusses the challenges that arise on the path towards their realization. Following an overview of typical mobile services and applications the focus will be devoted to the most significant technologies, including hardware platforms, programming environments and tools. Relevant aspects related to the design and development of a mobile application, including the handling of sensors, the design of user interfaces, the management of local and remote sensor data storage, privacy and security issues will be investigated and addressed. To gain practical hands-on experience, students will learn during dedicated tutorials how to design, implement, and demonstrate Android-based mobile applications.