Skip to content

Assignments for the course on concurrent and distributed programming, covering synchronization, multithreading, OpenMP, semaphores, monitors, and message passing.

Notifications You must be signed in to change notification settings

Sana8200/Concurrent-Programming

Repository files navigation

Concurrent Programming Assignments

This repository contains solutions to a series of assignments for a course on Concurrent and Distributed Programming.

The course focuses on the foundations, principles, and practical techniques of concurrent, parallel, and distributed systems. The assignments provide hands-on experience with synchronization mechanisms, multithreading, shared-memory parallelism, and message-passing systems.

Course Topics

  • Concurrent programming concepts, models, and paradigms
  • Processes and threads
  • Mutual exclusion and condition synchronization
  • Critical sections, locks, barriers, and condition variables
  • Semaphores and monitors
  • Concurrent objects (locking, lock-free, wait-free)
  • Shared-memory parallelism (OpenMP)
  • Distributed programming and message passing (MPI)

Assignments Overview

Homework Topic
Homework 1 Critical Sections, Locks, Barriers, and Condition Variables
Homework 2 Programming with OpenMP
Homework 3 Use of Semaphores
Homework 4 Programming with Concurrent Objects (Monitors)
Homework 5 Distributed Computing with Message Passing

Each assignment is located in its own directory and includes source code and a brief explanation of the solution approach.

Technologies

  • Languages: C, Java
  • Libraries: pthreads, OpenMP, Java Concurrency, MPI
  • Concepts: Mutexes, Condition Variables, Barriers, Semaphores, Monitors

Learning Objectives

Through these assignments, the goal is to:

  • Understand fundamental concurrency problems and solution strategies
  • Implement correct and efficient synchronization mechanisms
  • Develop parallel programs for shared-memory systems
  • Build distributed applications using message passing
  • Evaluate performance and scalability of concurrent applications

📌 Notes

These assignments are part of an university course and are intended for educational purposes.

About

Assignments for the course on concurrent and distributed programming, covering synchronization, multithreading, OpenMP, semaphores, monitors, and message passing.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages