Multicore Programming with Java (3 op)
Toteutuksen tunnus: TX00EL43-3001
Toteutuksen perustiedot
Ilmoittautumisaika
04.05.2020 - 02.08.2020
Ajoitus
03.08.2020 - 07.08.2020
Opintopistemäärä
3 op
Virtuaaliosuus
3 op
Toteutustapa
Etäopetus
Yksikkö
ICT ja tuotantotalous
Toimipiste
Karaportti 2
Opetuskielet
- Englanti
Paikat
0 - 24
Koulutus
- Tieto- ja viestintätekniikan tutkinto-ohjelma
- Degree Programme in Information Technology
Opettaja
- Jörg Hettel
Ryhmät
-
ICTSUMMERICT Summer School
Tavoitteet
Knowledge and understanding:
Today, multicore/multiprocessor hardware platforms are widespread used in all ICT domains, including smartphones, automotive, computer vision, and many others. Multicore programming is the key enablers for performance scaling in compute-intensive applications.
The students will know the concept of multicore programming with Java. They will know the concurrency related problems, like race conditions and visibility constraints and their consequences. They have an understanding how these problems can be avoided or solved. They know low-level and high-level synchronization concepts and their application.
Further they know the modern parallelization frameworks of Java, like ForkJoin, parallel Streams or CompletableFuture and understand their internal working mechanisms.
Skills:
The students are able to design and write multicore programs and apply concepts, like synchronization and threadpools. They can design and implement solutions like data or task parallelism. For concrete problems they can decide which parallelization concepts are best suited. They can apply parallelization frameworks to speed up program execution.
Sisältö
Introduction
Concept of Threads
Low-level synchronization concepts
- Synchronized, wait, notify, notifyAll, Locks, Atomics
Java Memory Model
Executors and Futures
High-level synchronization concepts
- CountDownLatch, CyclicBarrier, Phaser
Concurrent Data Structures
Concurrency Patterns
Frameworks for Parallelisation
- Fork-Join-Framework
- Parallel Streams (data parallelism)
- CompletableFuture (task parallelism)
- Reactive Streams (event parallelism)
Case Studies
Arviointiasteikko
0-5
Arviointikriteeri, hyväksytty/hylätty
Students actively work on the daily exercises assigned on the course. At the end of the course the examination is divided into two parts: a short written exam (30 min) and practical programming exercises (90 min).
Esitietovaatimukset
Good Java skills. Basic mathematics, especially vector and matrix operations.
Lisätiedot
Intensive course with hands-on exercises on paper and with the computer. A computer with a Java 11 (or higher) development environment is required.