The end of Moore's Law makes software performance engineering a priority for modern computer-science curricula.
OpenCilk enables you to teach principles of multicore computing using a state-of-the-art task-parallel platform that is easy to learn.
To help you develop your own course or module on performance engineering, we are compiling a list of relevant classes and workshops with materials that you can adapt. Each listing includes links to basic materials (e.g., lecture PDFs). Additional materials (e.g., editable slide decks, and solutions for homeworks and quizzes) are often also available, as detailed below, when you join the OpenCilk community. Do you have your own class or module to add to our list? Please let us know.
Click on a link below to jump to that section:
At MIT, Performance Engineering of Software Systems is an upper-division undergraduate course with prerequisitess of introductory computer architecture, algorithms, and programming courses. Other faculty have adapted this material as an introductory graduate course. The class uses the C language with OpenCilk task-parallel extensions. Materials from Fall 2018 are available on MIT Open CourseWare, which includes 23 lectures (listed below), 10 homeworks, 4 projects, 4 quizzes, and practice problems from selected recitations.
MIT's course has a significant homework/project component. Enabling students to achieve high performance on project submissions is a significant goal of the course. MIT typically uses servers from commercial cloud providers (historically AWS) to accept project submissions and measure performance.
Recent projects have included rotating an image, parallelization of a physical simulation, and memory management. The traditional MIT capstone project is a bot that plays one side of a 2-player game, where optimized bot performance is a necessity for a competitive submission.
Join the OpenCilk community for access to
John Owens adapted MIT 6.106 to create Performance Engineering of Software Systems at UC Davis.
Originally created in 2018 as a single full-day class, this workshop includes an introduction and 8 separate modules listed below.
Join the OpenCilk community for access to editable slide decks.