High Performance Computing

High Performance Computing (HPC) is the ability to tackle computationally- or data-intensive problems by powerful processors, networks and parallel supercomputers. The HPC MSc program introduces students to leading-edge HPC technologies and develops skills to exploit the full potential of the world’s largest supercomputers and multicore processors.

The HPC MSc program is aimed at graduates of Mathematics and/or Computer Science, Computational Engineering, Applied Mathematics, Natural Sciences (Physics, Chemistry, Biology, Geology, Geography) and related degrees.

For a successful course of study, English is recommended according to reference level B1 of the Common European Framework of Reference for Languages.

Sofia University "St. Kliment Ohridski" is a partner organization under the EUMASTER4HPC project. Applicants for this Master's program have the opportunity to apply in parallel for an EUMASTER4HPC scholarship at the following link: https://eumaster4hpc.uni.lu/application. Successful applicants are granted the right to study for a year at a partner university and, upon successful completion, to obtain a double degree.

Professional area: 
4.6. Informatics and Computer Science
Degree: 
Master of Science
Speciality: 
Informatics
Master's programme: 
High Performance Computing
Form of education: 
Full - time
Duration of full-time training (in semesters): 
4
Professional qualification: 
Master of Sciences in Informatics - High Performance Computing
Language of Instruction: 
English
Master's programme director: 
Prof. Krassen Stefanov, PhD

Focus, educational goals

High Performance Computing (HPC) is the ability to tackle computationally- or data-intensive problems by powerful processors, networks and parallel supercomputers. This is exactly the area that the training in the master’s program is focused on. The aim of the master’s programme High Performance Computing is to introduce students to leading-edge HPC technologies and to develop skills to exploit the full potential of the world’s largest supercomputers and multicore processors. Through the curriculum based on well-established experience in training specialists in parallel programming and numerical methods the master’s program provides perspective education adequate to modern needs. It provides an opportunity for the students to acqire multidisciplinary skills and knowledge in both HPC and Data Science to extract knowledge contained in the increasingly large, complex and challenging data sets generated across many areas of science and business.

The High Performance Computing MSc program is aimed at graduates of Mathematics and/or Computer Science, Computational Engineering, Applied Mathematics, Natural Sciences (Physics, Chemistry, Biology, Geology, Geography) and related degrees.

For a successful course of study, English is recommended according to reference level B1 of the Common European Framework of Reference for Languages.

Also applicants should have knowledge of linear algebra notions and related algorithms, as well as basic numerical analysis. On the computer science, applicants are expected to be familiar with a programming language (preferably Python, Java or C++), as well as algorithm design and complexity.

The MSc Program in HPC is suitable for candidates from the following two main groups:

  • Scientists from various domains (mathematics, physics, chemistry, biology, etc.) willing to gain new knowledge and skills how to use existing HPC infrastructures for solving complex problems in their domains applying existing mathematical models and methods (climate, clean and safe life conditions, oceanology, cosmology, mеdicine, new drug development, etc.)
  • Computer science experts willing to design, develop, support HPC infrastructures and respective models and software for solving new problems in various domains 

Training (knowledge and skills)

The High Performance Computing MSc program lasts 4 /four/ semesters. During the first semester the training is aimed at the study of fundamental courses followed by two semesters for more specialized courses and one semester internship focused on a practical MSc project and written MSc thesis. The studies have a strong practical focus and they have an opportunity to access a wide range of HPC platforms and technologies.

Included fundamental courses provide a broad-based coverage of the fundamentals of HPC, parallel computing, mathematics and data science. There is a set of optional courses focused on more specific in-depyh knowledge and more practical applications. All fundamental courses are offered as elective courses and students can choose from them depending on their educational needs.

The elective courses for additional specialized training provided in the third semester give an opportunity students to make their choice depending on the field they wish to specialize in.

During the education in the master's program, students have also the opportunity to study disciplines oriented towards the acquisition of so-called "soft skills".

As a summary, the content of the MSc Program includes three types of courses:

  • Fundamental courses, providing base knowledge and practical skills related to four specific domains: Mathematics and statistics, Software engineering, Parallel programming and Computer architectures.
  • Specialization courses, providing knowledge and skills to various application domains where HPC and Data Science have important contribution (physics, chemistry, biology, medicine, finance and others)
  • Transversal courses providing additional soft skills 

The MSc Program has two main specializations:

  • Numerical and data analysis for science domains (including knowledge areas like Parallel algorithms, Monte Carlo, Linear Programming, Sorting, Fast Fourier Transform, Computational Linear Algebra, Computational Numerical Methods, Quantum Algorithms, Computational Biology, Computational Physics, Computational Chemistry, Computational Fluid Dynamics, Data Management and Analytics, etc.)
  • Software system development, support and performance analysis (including knowledge areas like AI, Data science, Computational Science, Data Management and Analytics, Heterogeneous Systems: CPU, GPU, FPGA, CGRA; Container Technologies, Virtualization Technologies, Performance Analysis, Operating Systems, Parallel File Systems, High-Speed Networking, Container Technologies, Virtualization Technologies, Integration of HPC and Cloud, Server administration, Security, Infrastructure Setup and Management)

Generalay, included courses are focused on providing the theoretical and technical background for HPC. The individual modules consist of lectures and hands-on sessions in and address the following objectives:

  • Provide an overview of the various tools and technologies used in HPC and the different ways to apply them;
  • Acquire competences in understanding the technical requirements of scientific and technical HPC applications to plan and set up HPC facilities;
  • Provide an outlook on future developments of HPC.

The master program includes a part of the education focused on how HPC methodology (i.e. the combination of algorithms, hardware and software tools) can be exploited in specific problems. This part of the education is strongly focused on algorithms and methods, with the aim of letting the students acquire practical skills and experience. Thus students learn to match methodology to solve specific problems, and be introduced to key subjects of various scientific areas and industrial or engineering tasks requiring high-performance computations.

Students are required to directly implement and apply methodologies to solve technical problems of increasing difficulty.

In the last part of the master program, each student carries out an internship in specialized HPC center, followed by HPC-oriented project tailored to professional interests and expectations of the students.

In order to graduate with the degree of a Master in High Performance Computing, all students are advised to undertake a technically challenging project in collaboration with an on-going research team and/or an industrial partner. In the projects, students must apply the knowledge obtained in the previous sections of the program to a scientific or technical computational problem that could, for instance, require the addition or improvement of parallelization or optimization or a port to a new HPC technology, or a combination thereof to a scientific application. Project proposals must be submitted to and accepted by a committee and must be overseen by a qualified adviser.

Professional competence

Students are expected to achieve the following sample practical skills:

  • Software tools: Docker, Singularity, Kubernetes, Git, Gitlab, GitHub, OS Administration (Ansible, Puppet, Chef), SQA, PyTorch, TensorFlow, Apache Spark
  • Parallel Programming (practical): C/C++, FORTRAN, OpenMP, MPI, CUDA, SYCL, Operating Systems (Linux), Python, Benchmarking, Profiling
  • Computer Architecture (practical): Modeling and Simulation Tools (at the different levels: ISA, cycle-accurate, full system), Benchmarking, Profiling, EDA Tools (HLS, Verification), RTL Programming, FPGA Prototyping

Professional realization

Job options for students successfully finishing the program:

  • Data Scientist
  • Information Systems Manager
  • IT Consultant
  • Cyber Security Analyst
  • Network Engineer
  • Systems Developer
  • Software and IT Engineer
  • Programming Engineer

Curriculum

AttachmentSize
PDF icon For academic year 2023/202481.37 KB

Contact information