Curriculum “Software: Programming, Principles, and Technologies”

06 java eclipse


The main theme of this track is the design and development of reliable, secure, scalable, usable, and efficient software. Students will improve their scientific and technological knowledge of software tools, also developing competitive skills for job interviews in major ICT companies and for applications to PhD programs (both at the national and international level). The track will technically address the scientific and engineering challenges arising from digital systems and applications, critical to modern society, with a glimpse of key infrastructures in widespread use today, ranging from multiprocessors, embedded devices and mobile phones through to networking systems, internet services and smart things.

Software is at the heart of this track from both theoretical and practical viewpoints. The driving idea is that formal techniques and automated proof assistants are gaining momentum in industrial software design, analogously to what happened for type systems and syntactic interfaces. The design and the deployment of applications over the aforementioned infrastructures are their natural experimental scenario, also addressing new emerging computing platforms.

Key ingredients in the track will be the foundations and the practice of programming for complex software building and the efficient design of algorithms to solve challenging problems, relying on guaranteed properties for correctness and performance. The learning core will cover the frontiers of algorithms, formal specifications and models, programming practices, software engineering, compiling and analysis techniques. Elective courses will be chosen by the students among application-oriented topics and more specialized subjects. Training will be enriched by laboratories of hands-on activities on themes that are currently challenging in academia and industry. The emphasis will be on methods that are applicable in practice as well as on their underlying supporting theories. The end goal is to convey all the above learning activities to help students to conceive innovative software solutions.

Career opportunities

Software is everywhere. The job market is growing and seeks for software specialists in all ICT areas. This curriculum offers a high qualification master degree to prospective ICT workers, and addresses all aspects of designing, developing, analyzing, verifying, testing and certifying software. Students will acquire suitable skills and capabilities, from scientific and methodological insights to advanced technological tools, so as to foster and strengthen ICT innovation. Job positions are typically in ICT companies (e.g. Google, IBM, Yahoo, Microsoft, etc.), public organizations, and research laboratories where advanced methods, languages and tools are required, both at the national and international level.

This master course also provides a solid background for a Ph.D. program in Computer Science or an equivalent degree.

Study plan

First year

Semester 1


Semester 2


Languages, compilers and interpreters 9 Principles for software composition 9
Competitive programming and contests 6 Algorithm design 9
Group: SW elective 9 cfu 9 Group: SW elective 9 cfu 9
Group: SW elective 6 cfu 6 Group: SW elective 6 cfu 6
30 33

Second year

Semester 3


Semester 4


Software validation and verification 9 Thesis 24
Group: SW elective 9 cfu 9 Laboratory for innovative software 6
Group: Free choice 9
27 30

Group: SW electives (9 CFU)

Advanced programming (WTW)
Smart applications (AI)
Advanced software engineering (ICT)
Parallel and distributed systems: paradigms and models (WTW)
Machine learning (AI)
Computational mathematics for learning and data analysis (BD-AI)
Mobile and cyberphysical systems (ICT)
Language-based tecnology for security (WCY)

Group: SW electives (6 CFU)

Bioinformatics (KB)
Information retrieval (BD)
Foundations of computing
ICT infrastructures (ICT)
Computational models for complex systems
Algorithmic Game Theory
Laboratory on ICT Startup Building
Introduction to Quantum Computing

For more details on course contents:

Curriculum description and syllabi for download (PDF)

Presentation slides (PDF)