Coursework spanning OpenMP shared-memory parallelism, MPI distributed computing, pthread concurrency, and CPU scheduling algorithms
This collection of coursework from my Parallel Programming and Operating Systems courses covers the full spectrum of concurrency — from shared-memory parallelism with OpenMP, to distributed memory computing with MPI on an HPC cluster, to thread-level synchronization with POSIX threads, and process scheduling simulation at the OS level. Each assignment tackles a different parallel paradigm and synchronization challenge, building hands-on systems programming experience from the ground up.
Parallelized a Medicaid CSV summarizer that aggregates total payments by HCPCS code, comparing a sequential baseline against an OpenMP implementation with per-thread local hash maps.
Distributed analysis of a large web crawl dataset across 16 MPI ranks on an HPC cluster, computing global statistics and top/bottom URL rankings.
Parallelized image file writes by splitting data into blocks and dispatching each block to a POSIX thread, with mutex-protected shared file I/O.
Implemented four CPU scheduling algorithms that simulate how an OS manages concurrent processes on a single core, computing waiting time and turnaround time metrics.
The MPI web crawl analysis processed over 658 million rows from 25,440 files in approximately 323 seconds across 16 MPI ranks on an HPC cluster. The sequential Medicaid CSV summarizer took roughly 438 seconds for the read-and-summarize phase alone, motivating the OpenMP parallelization with thread-local hash maps and line-boundary-safe chunking.
These assignments reinforced the tradeoffs between parallel paradigms: thread-local accumulation avoids lock contention but requires a merge step, mutex-protected I/O serializes writes but keeps file state consistent, and scheduling algorithm choice (SRTF vs Round Robin) directly impacts waiting time and responsiveness under different workload patterns.
Rows Processed (MPI)
MPI Ranks
Scheduling Algorithms
Parallel Paradigms (Shared + Distributed)