Courses
CSC447 Parallel Programming for Multicore and Cluster Systems
[3–0, 3 cr.]
This course provides an introduction to parallel programming with a focus on multicore architectures and cluster programming techniques. Topics include relevant architectural trends and aspects of multicores, writing multicore programs and extracting data parallelism using vectors and SIMD, thread-level parallelism, task-based parallelism, efficient synchronization, program profiling, and performance tuning. Message-passing cluster-based parallel computing is also introduced. The course includes several programming assignments to provide students first-hand experience with programming, and experimentally analyzing and tuning parallel software.
Prerequisites: CSC310 Algorithms and Data Structures; CSC326 Operating Systems