How do I build my study plan?

Finding your way through elective courses

How much flexibility is there in the study plan?

This is an important question, because a study plan is not just a list of courses.

It is the way in which you gradually build your profile: which skills you want to strengthen, which areas you want to explore, and how far you want to move towards computer science, numerical methods, scientific and industrial applications, or emerging technologies such as quantum computing.

HPC Engineering has a clearly defined structure, while also leaving significant room for personalisation. Understanding the logic behind the study plan helps you make more informed choices among the elective courses.

The first year is mainly designed to build a common foundation.

The compulsory courses define the core identity of the programme and are designed to build the key skills that a graduate in this field should have: understanding how advanced computing systems work, being able to programme and design efficient software, knowing the principles of parallel computing, understanding the relationship between hardware architecture and performance, using numerical methods to solve complex problems, working with large-scale data and computational models, and making effective use of emerging technologies such as quantum computing.

These are therefore the courses that give coherence to the programme and create a common language among students with different backgrounds.

The second year offers more room for personalisation.

There are some common courses, such as Artificial Neural Networks and Deep Learning and Systems and Methods for Big and Unstructured Data, but a substantial part of the programme is built through elective courses and the thesis project.

This means that the study plan is not designed to produce a single standard profile.

On the contrary, it allows you to build different trajectories within a common framework: some more oriented towards software, architectures, data, numerical modelling, scientific applications, AI, quantum computing, or interdisciplinary research.

How do I choose my courses?

Elective courses are the part of the study plan where you can most actively shape your profile.

In the study plan, they are divided into three main groups:

  • courses in the computer science area, known as “characterising” courses, which strengthen the more specifically computing-related components of the programme;
  • so-called “related” courses, which complement your education with skills in mathematics, statistics, electronics, physics and other closely connected areas;
  • HPC applications, which allow you to see how high-performance computing skills are used in specific contexts, such as biomechanics, fluid dynamics, aerospace, materials, energy, finance, process engineering and beyond.

This distinction is useful because it helps you understand not only “which course interests me”, but also “what kind of profile am I building”.

What are “characterising” courses?

In the study plan, the term “characterising” has a technical meaning, referring to the Master’s degree class to which our programme belongs. It indicates courses in the scientific-disciplinary sector IINF-05/A (formerly ING-INF/05), Information Processing Systems, within computer engineering.

In HPC Engineering, this area is central because it allows you to develop skills at several levels: from software design to systems management, from performance analysis to the efficient use of computing infrastructures, through to methods and tools for AI and data-intensive computing.

The key point is that these courses should not be seen as separate from one another, but as parts of the same educational area. HPC requires the ability to connect software, systems, architectures and algorithms. Writing efficient code also means understanding how that code is executed, how it uses memory, how it communicates across processors or nodes, how it scales on parallel architectures, and how it can be optimised for the available infrastructure.

What are “related” courses?

Related courses complete the programme with skills that are closely connected and complementary to the characterising computer science area.

In the HPC Engineering study plan, these may include courses in mathematics, statistics, physics, electronics, networks and telecommunications, and quantum technologies.

They are not “secondary”: they help give depth to your profile and connect HPC with disciplines that use and enable its technologies.

For example, if you are interested in the relationship between HPC and AI, you can move towards courses in computational statistics, numerical machine learning or probabilistic methods. If you are interested in quantum computing, you can strengthen the physics, electronics or information-processing aspects of quantum technologies. If, instead, your interest lies in modelling, you can choose courses closer to scientific computing.

Related courses therefore help you answer a very personal question: how much depth do I want to give to my pathway?

Do I need to make a decision straight away?

Not necessarily.

One of the features of the programme is that the first year exposes you to several fundamental dimensions of HPC: numerical methods and scientific computing, parallel computing and advanced architectures, software, infrastructures, quantum technologies and applied statistics.

It is normal for some students not to have a clearly defined direction at the beginning. In fact, it is often during the first year that you gain a better sense of where you want to position yourself.

Some students discover a strong interest in parallel architectures and hardware accelerators. Others move towards software engineering and code optimisation. Some find it more natural to work with data, machine learning and large-scale models. Others become interested in scientific simulation or industrial applications. And some use the programme to build a pathway towards research.

The important thing is not to see these choices as a random collection of courses. Even when you explore different areas and build a more cross-cutting profile, it is useful to ask yourself what common thread connects them.

Why is there so much mathematics?

This is a very common question, especially among students who expect the Master’s degree to be almost entirely focused on computer science.

The short answer is: in HPC, computing power alone is not enough. You also need to know what you are computing, which methods you are using, what approximations are involved, with what level of stability and at what computational cost.

Many problems addressed through high-performance computing originate from complex mathematical models. Solving them requires more than writing efficient code. You need to understand how to transform a mathematical problem into a computable one.

At this stage, the trade-off between the accuracy of the solution, execution speed, efficiency and computational cost also becomes central. A more accurate solution may require longer computing times, more memory, more energy and therefore a higher economic and environmental impact. Conversely, a faster or less costly solution may be acceptable only if the level of approximation remains consistent with the scientific or application-related objective of the problem.

Numerical methods are central to all this because they determine how a theoretical solution, often impossible to obtain in exact form, can be reliably approximated by a computer. They define how to discretise a continuous phenomenon, how to control error, how to ensure stability and convergence, and how to choose algorithms that are compatible with the available resources.

In HPC, therefore, the quality of a solution is not measured only by its mathematical accuracy, but also by its ability to achieve a conscious balance between the reliability of the result, the efficient use of resources, energy sustainability and processing costs.

Courses such as Numerical Linear Algebra, Numerical Methods for PDEs and Advanced Methods for Scientific Computing are fundamental for this reason. They help you understand tools and methods for solving systems of equations, differential problems, scientific models and computational problems that arise in many real-world applications.

In other words, numerical mathematics concerns the way in which complex problems are formulated and solved by a computer, and it is one of the areas where it becomes clear that HPC is not just about “using powerful computers”. It is about designing computational solutions that are correct, efficient and scalable.

This area is also useful for those moving towards AI and data science, because many modern methods are based on numerical optimisation, linear algebra, matrix computation and the efficient management of large data structures.

For an HPC student, the point is not necessarily to become a pure numerical mathematician. The point is to gain enough depth to understand the methods behind advanced computational tools, and to use them consciously.

What role does the computing component play?

The computing component a core pillar of the programme.

In HPC Engineering, computer science is not seen only as programming, but as a set of interconnected layers.

This is an important distinction.

In high-performance computing, the performance of an application does not depend only on the code, nor only on the machine. It depends on the relationship between software and hardware: how an algorithm uses memory, how work is distributed across processors or nodes, how communication and bottlenecks are reduced, and how parallel architectures, accelerators and complex infrastructures are exploited.

This is why the study plan includes courses that cover several levels: Parallel Computing, Advanced Computer Architectures, Software Engineering for HPC, Computing Infrastructures, Quantum Computing, as well as elective courses on distributed systems, performance evaluation, code transformation and optimisation, computer security, machine learning and deep learning.

The aim is to train students who do not simply “use” HPC tools, but understand how to design, evaluate, improve and adapt them to the real-world problems they need to solve.

Why are hardware and software so closely connected?

In HPC, this separation is much less clear-cut than it may seem.

While in other areas of computer science it may be possible to develop software without paying too much attention to the underlying architecture, in HPC this awareness becomes central.

An algorithm may work correctly, but still be inefficient if it is not suited to the architecture on which it runs. In the same way, a very powerful machine can be poorly exploited if the software is not designed for parallelism, memory hierarchy, communication between nodes, or the use of accelerators.

This is why the programme places strong emphasis on the relationship between hardware and software.

Parallel Computing introduces the principles for distributing computation and exploiting parallelism. Advanced Computer Architectures allows you to explore how advanced computing systems are built and which architectural choices influence performance. Software Engineering for HPC focuses on how software should be designed for complex, high-performance systems.

These courses are connected to one another.

Taken together, they help develop a very important skill: understanding the behaviour of an application not only from the point of view of the code, but also from the point of view of the machine on which it runs.

Why is parallel computing so central to HPC?

Parallel computing is one of the fundamental concepts of HPC, because many scientific, industrial and technological problems cannot be solved efficiently by a single processor or a single machine.

Addressing these problems requires dividing the work, distributing it, synchronising it, and managing communication, memory, data and dependencies. Studying parallel computing therefore means learning to reason differently from sequential programming. It is not simply a matter of making a program “faster”, but of understanding how a problem can be decomposed, executed and reconstructed across complex systems.

Parallel architectures are the other side of the same issue. To write efficient software, you need to know the characteristics of the systems on which that software runs: multicore CPUs, GPUs, accelerators, clusters, distributed systems, shared and distributed memory, and interconnection networks.

That said, parallel computing does not encompass the entire field of HPC. HPC also includes other systems, models and computing paradigms: heterogeneous architectures, specialised accelerators, high-performance cloud and edge systems, AI-based scientific computing, and different paradigms such as quantum computing.

Can I drive my study pathway towards AI and Big Data?

The study plan allows you to build a very solid trajectory towards AI, machine learning and data-intensive computing.

The common part of the programme includes courses such as Artificial Neural Networks and Deep Learning and Systems and Methods for Big and Unstructured Data.

Your studies can be complemented by elective courses such as Machine Learning, Advanced Deep Learning, Streaming Data Analytics, Computational Statistics, Bayesian Statistics, Numerical Analysis for Machine Learning, or other courses that are coherent with your study plan.

The specificity of HPC Engineering, however, is not simply “studying AI”. It is studying AI and data from the point of view of scalability, infrastructures, performance and their relationship with advanced computing.

The relationship between HPC and AI is becoming increasingly close. On the one hand, HPC makes it possible to train complex models, manage large volumes of data and run algorithms at scale. On the other, AI helps make advanced computing more efficient, for example by supporting the optimisation of simulations, the analysis of results, resource management and the development of data-driven models.

This can be particularly interesting for those who want to work on complex models, huge datasets, large-scale deep learning, data pipelines, data-driven simulations, or scientific applications of artificial intelligence.

What if I am interested in applications in other sectors?

Applications are an important part of the programme because they show how HPC skills are applied to real-world problems. This is also where the more engineering-oriented approach of the degree programme becomes clear.

In general, HPC can play a role in all application areas where there is computational complexity to manage: very large models, complex simulations, large amounts of data, processes to optimise, or phenomena that require long computing times.

In the applications group, you can find courses related to biomechanics, fluid dynamics, aerospace, materials, process engineering, energy and finance. These courses are useful for those who want to see HPC in action within specific disciplinary contexts. They help you understand how numerical models, software, data and computing infrastructures are used to address concrete scientific and industrial problems.

This does not necessarily mean specialising once and for all in a single application sector.

It can also be a way to learn how to work in multidisciplinary contexts, where the role of the HPC engineer is often to connect different skills: the application domain, the mathematical model, the algorithm, the software implementation and the computing infrastructure.


If you are considering HPC Engineering and would like to discuss your specific situation, you can contact me directly at: federico.schiepatti@polimi.it