MSE Master of Science in Engineering

The Swiss engineering master's degree


Each module contains 3 ECTS. You choose a total of 10 modules/30 ECTS in the following module categories: 

  • 12-15 ECTS in technical scientific modules (TSM)
    TSM modules teach profile-specific specialist skills and supplement the decentralised specialisation modules.
  • 9-12 ECTS in fundamental theoretical principles modules (FTP)
    FTP modules deal with theoretical fundamentals such as higher mathematics, physics, information theory, chemistry, etc. They will teach more detailed, abstract scientific knowledge and help you to bridge the gap between abstraction and application that is so important for innovation.
  • 6-9 ECTS in context modules (CM)
    CM modules will impart additional skills in areas such as technology management, business administration, communication, project management, patent law, contract law, etc.

In the module description (download pdf) you find the entire language information per module divided into the following categories:

  • instruction
  • documentation
  • examination 
Parallel and distributed computing (TSM_ProgAlg)

The objective of this module is to present an overview of parallel and distributed computing and related algorithms. The first part of the course will be dedicated to the architectures of parallel and distributed  infrastructures, the different theoretical models for these architectures and the different programming models and tools for programming such architectures. The second part will be dedicated to the study of a number of classical parallel and distributed algorithms. This course includes practical work to train the student in the use of parallel and distributed computing.

Prerequisites

  • Procedural and object oriented programming
  • Software engineering (UML or other)
  • Basic notions of algorithms and complexity
  • Basic notions of concurrent programming (Threads)

Learning Objectives

At the end of the course the student knows:

  • The most common parallel and distributed hardware infrastructures
  • The different ways to model and efficiently program these architectures
  • How to choose the proper parallel or distributed algorithm to write an application for solving a specific problem on a specific architecture
  • How to efficiently program this application
  • How to assess the performance of this application

Contents of Module

Introduction

  • Different architectures of parallel and distributed infrastructures 
  • Communications models and communication costs
  • Performance metrics for parallel and distributed systems 
  • Scalability of parallel and distributed systems

Heterogeneous shared memory systems

  • Architecture of widely used multi-core systems
  • Parallel programming models (OpenMP)

Distributed memory systems

  • Communication operations and their costs
  • Message passing paradigm (MPI)
  • Distributed object paradigm

Parallel and distributed algorithms

  • Asymptotic analysis of parallel programs 
  • Decomposition techniques
  • Mapping techniques for load balancing 
  • Matrix-vector and matrix-matrix multiplication
  • Parallel and distributed sorting algorithms
  • Parallel and distributed Graph algorithms

Teaching and Learning Methods

This course involves theoretical presentations and practical exercises or laboratories. Some of the exercises or laboratories are programming exercises that can be done at home by accessing a parallel and distributed infrastructure made available through the internet.

Literature

A. Introduction to Parallel Computing, Zbigniew J. Czech, Cambridge University Press, 2017
B. An Introduction to Parallel Programming, 1st edition, Peter Pacheco , Morgan Kaufmann Publishers Inc, 2011

Download full module description

Back