This program is tentative and subject to change.
This paper presents Snapgram, an innovative assignment for teaching matrix multiplications in the context of a Parallel Computing course. Designed for fourth-year undergraduate at the University, this assignment transforms the typically mundane task of matrix multiplication into an engaging exercise by framing it as a simple recommender system for a fictional social media application. Students implement two key operations: multiplying a matrix by itself and selecting the highest values in each row of the resulting matrix. These operations are adaptable to various parallel programming paradigms, including shared-memory (pthreads, OpenMP), distributed-memory (MPI), and GPU programming (CUDA). By contextualizing matrix multiplications within a practical, relatable scenario, Snapgram significantly enhances student engagement and learning outcomes. Instructors are typically encouraged to provide scaffolding code for I/O operations, allowing students to focus on implementing the core algorithms.
This paper discusses the motivation behind the creation of Snapgram, provides a detailed description of the assignment, analyzes its strengths and weaknesses, and presents student feedback. Our findings suggest that Snapgram successfully bridges the gap between theoretical concepts and practical applications in parallel computing education, leading to improved student satisfaction compared to traditional matrix multiplication assignments.