Skip to content

Concurrency and Parallelism Programming assignments (BUAP, Fall 2025). Features implementations of Java multithreading, race condition handling, and parallel algorithms using OpenMP.

Notifications You must be signed in to change notification settings

LeoooLagOS/Concurrency-and-Parallelism-Programming

Repository files navigation

Concurrency and Parallelism Programming

  • Benemérita Universidad Autónoma de Puebla (BUAP)
  • Faculty of Computer Science
  • Term: Autumn 2025
  • Student: Leonardo Lagos López
  • Professor: Dr. Meliza Contreras González

📖 About This Repository

This repository contains all the assignments, projects, and practice codes developed for my 7th-semester Concurrency and Parallelism Programming course.

The main objective of this collection is to demonstrate the practical application of concurrent programming concepts, including thread management, synchronization mechanisms, and parallel processing algorithms using Java and OpenMP.

🛠️ Technologies & Concepts

  • Languages: Java (Core), C/C++ (for OpenMP)
  • Key Libraries: java.util.concurrent (Semaphore, Locks), OpenMP
  • Core Concepts:
    • Thread Lifecycle & Management
    • Race Conditions & Deadlocks
    • Critical Regions & Mutual Exclusion (Mutex)
    • Synchronization (Semaphores, Monitors)
    • Parallel Algorithms (PCAM Design Methodology)

📂 Project Index

🚀 Highlighted Projects

A simulation of two businesses ("Pizza Ready" & "Burger Joint") running concurrently. It features independent worker threads, a supervisor thread, and shared financial resources protected by Semaphores to prevent race conditions.

  • Concepts: Exclusion Mutual (Mutex), Semaphores.

Implementation of image processing algorithms using the PCAM (Partitioning, Communication, Agglomeration, Mapping) design methodology for parallel computing.

A performance-critical implementation of matrix multiplication utilizing OpenMP for parallel execution on multi-core processors.

📚 Coursework Activities

  • Activity 2: Introduction to thread creation and management.
  • Activity 3: Basic synchronization and thread coordination.
  • Activity 4: Handling race conditions.
  • Activity 5: Implementation of producer-consumer patterns.
  • Activity 6: Advanced synchronization primitives.
  • Activity 7: Deadlock detection and prevention.
  • Activity 8: Parallel patterns and thread pools.

💻 How to Run

Most projects in this repository are Java-based. To run a specific activity (e.g., Activity 9):

  1. Navigate to the specific activity folder:
    cd Activity-9
  2. Compile the source files:
    javac src/*.java
  3. Run the main class:
    java -cp src BusinessSimulator

Note: For OpenMP projects, ensure you have a compatible C/C++ compiler (like GCC) installed.

License

This project is for educational purposes as part of the Computer Science Engineering curriculum at BUAP.

About

Concurrency and Parallelism Programming assignments (BUAP, Fall 2025). Features implementations of Java multithreading, race condition handling, and parallel algorithms using OpenMP.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages