Key points: All commodity computers now have high-level parallelism, and cluster and cloud computing have become widespread in industry. CS 300, Topics: Parallel and Distributed Computing (PDC), provides hands-on experience with current PDC technology and enduring principles that prepare you for future developments in this rapidly evolving aspect of all computing.
In less than a decade, the nature of computing has suddenly changed: now it is no longer possible to buy computers without multiple cores (circuits capable of running programs), with more and more cores over time; and cloud computing services and techniques have enabled thousands of companies and ordinary individuals to program with vast amounts of data in reasonable amounts of time. This course focuses on principles and current-day practices in parallel computing (e.g., multi-core) and distributed computing (e.g., cloud and Beowulf cluster computing), with an eye towards future trends. The PDC course also features numerous program-design patterns used by professionals for creating parallel and distributed software, and incorporates applications to real-world problems. The goal: provide the best available one-course preparation for a lifetime of computing that will inevitably involve parallel and distributed computation.
Prerequisite: CS 251, or permission of instructor. Counts as a “Systems” core course in the CS major. See Dick Brown for more information.