Course MI106.2 · Year I · Autumn 2023-2024

Paralel and concurrent programming

Elective (1 of 2) course in Advanced programming and databases, taught by Ovidiu Domsa.

This course page is from 2023-2024 and is archived.
See this course for the current academic year

Overview

Lecturer
Ovidiu Domsa
Seminar tutor
Arpad Incze
Type of course
Elective (1 of 2)
Language of instruction
Romanian
Erasmus language
English
Domain
Computer Science - Masters
Field of study
Advanced programming and databases
Form of education
Full-time
Form of instruction
Class / Seminary
Credit awarded by
Grade
Teaching methods
Lecture, conversation, exemplification, projects
Entry requirements
Basic programming languages

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 contents

Course

  1. General principles for parallel programming. Introductory material.
  2. Paralelism – Computer Architecture Perspective
  3. Parallel Models – Shared and Distributed memory models.
  4. Distributed vs. shared-memory parallelism.
  5. No determinism and how it arises, even in single-processor systems. Multiple processors tasks.
  6. Design and analysis of parallel algorithms
  7. Numerical algorithms, Non-numerical algorithms
  8. Distributed memory programming. Shared Memory programming.
  9. Parallel frameworks
  10. Applications- scientific computing
  11. Process synchronization. Applications.
  12. Interconnection networks

Laboratories

  1. Java and Threads. A brief introduction to the Java language. Example applications with Threads.
  2. Understanding the Problem
  3. distributed vs. shared-memory parallelism.
  4. -No determinism and how it arises, even in single-processor systems.
  5. Threads, race conditions, and critical sections.
  6. Solution Techniques
  7. Abstractions for mutual exclusion and synchronization.
  8. Modern Java concurrency facilities.
  9. Object-oriented design patters for concurrency.
  10. Project proposals, design, solutions
  11. Writing Concurrent Programs
  12. Parallel computing and message passing
  13. Practical applications. Examples of practical problems solved with efficient methods.
  14. Analysis, evaluation, and feed-back.

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.

Assessment

Project presentation and laboratory assignment grades.

Recommended reading

Introduction to Parallel Computing
A. Grama, G. Karypis, V. Kumara and A. Gupta
Addison Wesley, USA, 2003 · 143