Type of course: |
Elective (1 of 2) |
Language of instruction: |
Romanian |
Erasmus Language of instruction: |
English |
Name of lecturer: |
Ovidiu Domsa |
Seminar tutor: |
Arpad Incze |
Form of education |
Full-time |
Form of instruction: |
Class / Seminary |
Number of teaching hours per semester: |
42 |
Number of teaching hours per week: |
3 |
Semester: |
Autumn |
Form of receiving a credit for a course: |
Grade |
Number of ECTS credits allocated |
7 |
Course aims:
Learning basic about parallel an concurrent programming
Develop algorithmic thinking and skills using one or more processors for multiple processes
Use of an advanced programming language for implementing the studied methods, explain the importance of exploiting parallelism in programs
Course Entry Requirements:
Basic programming languages
Course contents:
Course
- General principles for parallel programming. Introductory material.
- Paralelism – Computer Architecture Perspective
- Parallel Models – Shared and Distributed memory models.
- Distributed vs. shared-memory parallelism.
- No determinism and how it arises, even in single-processor systems. Multiple processors tasks.
- Design and analysis of parallel algorithms
- Numerical algorithms, Non-numerical algorithms
- Distributed memory programming. Shared Memory programming.
- Parallel frameworks
- Applications- scientific computing
- Process synchronization. Applications.
- Interconnection networks
Laboratories
- Java and Threads. A brief introduction to the Java language. Example applications with Threads.
- Understanding the Problem
- distributed vs. shared-memory parallelism.
- -No determinism and how it arises, even in single-processor systems.
- Threads, race conditions, and critical sections.
- Solution Techniques
- Abstractions for mutual exclusion and synchronization.
- Modern Java concurrency facilities.
- Object-oriented design patters for concurrency.
- Project proposals, design, solutions
- Writing Concurrent Programs
- Parallel computing and message passing
- Practical applications. Examples of practical problems solved with efficient methods.
- Analysis, evaluation, and feed-back.
Teaching methods:
Lecture, conversation, exemplification, projects
Learning outcomes:
- Solve different problems in Java using Treads.
- explain fundamental concepts and solutions in concurrent programming;
- recognize issues and challenges in developing concurrent programs;
-apply common techniques used in implementing concurrent programs;
-describe shared memory and message passing approaches to parallel programming;
-write a program using features of a language that supports concurrent programming; and
-recognize and apply design patterns for concurrent programming.
Learning outcomes verification and assessment criteria:
Project presentation and laboratory assignment grades.
Recommended reading:
A. Grama, G. Karypis, V. Kumara and A. Gupta,
Introduction to Parallel Computing, Addison Wesley
, USA
, 2003
, 143
web,
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-189-multicore-programming-primer-january-iap-2007/lecture-notes-and-video/l5-parallel-programming-concepts/, MIT
, NA
, 2020
, 12
web,
https://e-learn.csc.fi/course/view.php?id=46, site
, NA
, 2019
, 12