Trying to do it all in a single course: a surprisingly good idea - Newhall, Tia (2020 IEEE/ACM Workshop on Education for High-Performance Computing (EduHPC), 2020)
We present the curricular design and learning goals of an upper-level undergraduate course that covers a wide breadth of topics in parallel and distributed computing (PDC), while also providing students with depth of experience and development of problem solving, programming, and analysis skills. We discuss lessons learned from our experiences teaching this course over the past 10 years, and discuss changes and improvements we have made in its offerings, as well as choices and trade-offs we made to achieve a balance, in a single course, between breadth and depth of topic across these two huge fields. Evaluations from students support that our approach works well meeting the goals of exposing students to a broad range of PDC topics, building important PDC thinking and programming skills, and meeting other pedagogical goals of an advance upper-level undergraduate CS course. Although our single course design was created due to constraints common to smaller schools that have fewer faculty resources, smaller curricula, and often fewer required courses for their majors, our experiences with this course lead us to conclude that it is a good approach for an advanced undergraduate course on PDC at any institution.