CS 5220

Applied High-Performance and Parallel Computing


Location: Kimball Hall B11
Lecture: TR 1:25-2:40
Discussion: Ed Discussion
Course material: GitHub

Prof: Giulia Guidi
Email: gguidi@cornell.edu
Office: Gates Hall 437
Office Hours: Tu 3:00-4:00 437 Gates Hall

TA: Julian Bellavita
Email: jbellavita@cs.cornell.edu
Office Hours: Fr 4:00-5:00 107 Ives Hall

TA: Giridhar Balachandran
Email: gb555@cornell.edu
Office Hours: We 5:00-6:00 576 Rhodes Hall

TA: Anish Bhupalam
Email: ab2352@cornell.edu
Office Hours: Th 5:00-6:00 576 Rhodes Hall

News

2026-01-13: I'm not responsible for distributing PINs; this is handled by the Registrar’s Office, so please do not email me to request one. PINs will be sent starting Thursday, January 15, on a rotating basis each weekday, and expire after 24 hours.

2026-01-13: If you are an undergraduate or non-CS major, you may enroll in the class as long as you meet the prerequisites. Once your relevant add period begins, you can add yourself to the waitlist. Priority is given to CS majors in the following order: graduate, senior, junior, sophomore, and freshman, followed by other majors in the same order. The cap is 160, so I expect everyone who wants to enroll to be able to do so.

2026-01-13: To the best of my understanding, only CS MEng students can enroll directly. If you are not a CS MEng student (e.g., PhD, undergraduate, or non-CS MEng), you need to add yourself to the waitlist. If you cannot, please open a ticket.

2026-01-12: Unable to enroll? Check out the CS waitlist info page. For any other enrollment or waitlist question, please open a ticket. I (instructor) don't manage the enrollment and waitlist directly.

2026-01-12: Welcome to CS 5220!

Older news »

Overview

CS 5220 is an introduction to performance tuning and parallelization, particularly for scientific codes. Topics include:

  • Single-processor architecture, caches, and serial performance tuning
  • Basics of parallel machine organization
  • Parallel distributed memory programming with MPI
  • Parallel shared memory programming with OpenMP
  • GPU programming with CUDA
  • Cerebras programming with CSL
  • Parallel patterns: data partitioning, synchronization, and load balancing
  • Parallel numerical algorithms
  • Parallel graph algorithms
  • Parallel algorithms in science and engineering

To succeed in CS 5220, students should be able to read and write serial programs in C++ or a related language (e.g., C) and be familiar with computer architecture (e.g., CS 3410 at Cornell). Because examples will be drawn primarily from engineering and scientific computations, some prior exposure to numerical methods is useful but not required. Prior exposure to parallel programming is not required, and non-CS students from fields involving simulation and data-intensive applications are particularly welcome!

Please see the syllabus for more information on course logistics.