Parallel and Distributed Computing

Faculty
Ivan Puzyrevskiy
Tech Lead at Yandex
Course length
Duration
Total hours
Credits
Language
Course type
Fee for single course
Fee for degree students
Skills you’ll learn
Overview
Modern computing is all about distribution. Big Data, Machine Learning, Systems – all these new and fancy subjects require us to leverage the power of many available cores and devices. This course aims to provide students with background knowledge in parallel programming and concurrent and distributed computing. Students will learn how to structure, write, run and debug multithreaded applications in Java. More importantly, they will also learn how to reason about the code running in parallel to ensure that the desired safety and liveness properties are present in a scalable way without sacrificing performance. As a teaser, by the end of the course students are introduced to distributed computing.
The course builds on the classical model of computation with a single processor and memory, and iteratively introduces one more bit of complexity at once. First, the course explores the effects of introducing several processors into the computational model while keeping a shared memory. Then, the course explores the effects of replacing the shared memory model with the message-passing model (as in distributed computing). If time permits, the effects of failures on the computational model will be discussed.
On the practical side, the course includes a lot of labs and programming exercises to ensure enough hands-on experience. Performance matters are covered as well, as students will be delivered content on basic performance analysis capabilities.
Learning highlights
- Write a multithreaded application in Java
- Structure the multi-threaded code in a composable and scalable manner
- Understand and formulate the safety and the liveness properties
- Use synchronisation primitives to ensure the correct behaviour of an algorithm
- Identify problems that hinder the performance of a parallel algorithm
- Transform existing programmes to leverage the available parallelism
- Argument when the algorithm will not benefit from the available parallelism
Course outline
4 classes
Session 1
Introduction to the Course
Multithreaded Programming in Java (1)
Threads, interrupts and concurrency effects
Multithreaded Programming in Java (2)
Locks, Conditional Variables and synchronization issues
Basic Patterns and Techniques
Data/work-parallelism; load balancing and distribution; synchronisation and communication
Prerequisites
This course is one of three in a wholistic series.
Students that have already taken MSL-111 and those with prior experience with HTML, CSS, and Javascript building simple web pages will be good candidates for this module.
Currently Ivan is a technical lead in Yandex, where he supervises and leads the development of Yandex.Travel, an online travel service. Prior to that, he was working for 6+ years on the data storage and processing infrastructure that powers all the services in the company and scales over thousands of machines.
Ivan teaches at Higher School of Economics, where he leads the distributed systems seminar. He also contributed significantly towards the distributed systems programme for the bachelors. Also, Ivan has been teaching at Yandex School of Data Analysis since 2011.
See full profileApply for this course
Parallel and Distributed Computing
by Ivan Puzyrevskiy
Total hours
45 Hours
Dates
Apr 27 - May 15, 2020
Fee for single course
€1500
Fee for degree students
€750
How to secure your spot
Complete the form below to kickstart your application
Schedule your Harbour.Space interview
If successful, get ready to join us on campus
FAQ
Will I receive a certificate after completion?
Yes. Upon completion of the course, you will receive a certificate signed by the director of the program your course belonged to.
Do I need a visa?
This depends on your case. Please check with the Spanish or Thai consulate in your country of residence about visa requirements. We will do our part to provide you with the necessary documents, such as the Certificate of Enrollment.
Can I get a discount?
Yes. The easiest way to enroll in a course at a discounted price is to register for multiple courses. Registering for multiple courses will reduce the cost per individual course. Please ask the Admissions Office for more information about the other kinds of discounts we offer and what you can do to receive one.