A photo-illustration from sources (c) Disney Corporation. CSCI 361: Spring 2025Parallelism and Concurrency……………………. . . . . . . . . . . . . . . . .This course investigates the theory of algorithms and of system support for high performance multiprocessor systems. It is also an introduction to implementing these algorithms in executable code. Throughout the semester, students will be asked to demonstrate the ideas on current multiprocessor hardware and on GPU hardware. The first two-thirds of the course develop the theory of parallel algorithms, surveying some classic results including prefix scans and sorting, and also their applications to graphs and sequence analysis. This dovetails with actual implementation on a variety of parallel languages and concurrency libraries (e.g. POSIX threads, CUDA). In the last third of the course we look at scheduler and runtime support for executing parallel and concurrent programs, surveying recent research. Students also spend this last third researching and developing code for an independent project. Prerequisites: CSCI 221 and MATH/CSCI 382. ……………………. . . . . . . . . . . . . . . . .ResourcesWe will be working from excerpts of texts, tutorials, and notes, as well as research papers and articles. I will provide the readings, there is no required textbook (as of yet), and I will work to link those within the weekly schedule below as the semester progresses. Below also is a list of classic resources on parallel algorithm theory, on concurrency, and on parallel hardware that we’ve used in a past version of this course. Introduction to Algorithms Synthesis of Parallel Algorithms (1993) Parallel Algorithms and Architectures:
Arrays.Trees.Hypercubes (1992) The Art of Multiprocessor Programming (2e,
2021) Computer Architecture: a Quantitative Approach (5e,
2012) Limits to Parallel Computation (1995) An Introduction to Parallel Programming (2012) ……………………. . . . . . . . . . . . . . . . .Hardware & SoftwareYou will all have access to You can also configure your own machine to develop using any of ……………………. . . . . . . . . . . . . . . . .ResponsibilitiesThe course is a hybrid of theory and (prototyped) implementations, building off the skills you learned in MATH/CSCI 382 and CSCI 221. As such, there will be a mix of written problem sets and coded programs. There will also be a final, independent project assigned after the 8th week. This will ask you to either carry a homework assignment assignment further than just from pseudocode or from prototype, perhaps trying several techniques to get good practical performance. Alternatively, you can seek to attack a problem we do not cover in class, survey it, and implement a working solution (or solutions). • • • • • • • • • • • • • • • • • • • • •• • • • • • • • • • • • • • • • • • • • •• • • • • • • • • • • • • • • • • • • • •• • • • • • • • • • • • • • • • • • • • • |