| Catalog Content |
This course teaches the fundamentals of thread programming and parallel computing on multi-core processors. Students work on core-thread relationships, scheduling and synchronization (mutex, semaphore, atomic), parallel programming models/languages (e.g., OpenMP, CUDA, MPI), and are introduced to GPU programming and distributed systems. They design and analyze basic parallel algorithms and parallel data structures such as sorting, searching, and graphs. They develop realistic examples of advanced topics such as performance measurement, load balancing, memory locality, and dynamic thread allocation/data parallelism. |