Patterns and Exemplars: Compelling Strategies for Teaching Parallel and Distributed Computing to CS Undergraduates

Parallel programming patterns provide enduring principles that serve as a conceptual framework to orient students when they set out to solve problems. Learning patterns enables students to quickly gain the intellectual and coding skills they will need to embrace the future of parallel and distributed computing (PDC). Exemplars consisting of representative and compelling applied problems, together with implementations in different parallel technologies, constitute a valuable resource for learning and teaching. Parallel programming patterns and exemplar applications naturally complement each other, and together provide a unified and practical strategy for PDC education at multiple course levels. We present two strategies we have used for incorporating patterns into undergraduate CS courses, examine the potential of exemplars, and indicate how patterns and exemplars reinforce each other.

[1]  Sanjay Ghemawat,et al.  MapReduce: Simplified Data Processing on Large Clusters , 2004, OSDI.

[2]  Jie Wu,et al.  NSF/IEEE-TCPP curriculum initiative on parallel and distributed computing: core topics for undergraduates , 2011, SIGCSE '11.

[3]  Samuel Williams,et al.  The Landscape of Parallel Computing Research: A View from Berkeley , 2006 .

[4]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[5]  Kurt Keutzer,et al.  A design pattern language for engineering (parallel) software: merging the PLPP and OPL projects , 2010, ParaPLoP '10.

[6]  Colin Campbell,et al.  Parallel Programming with Microsoft® .NET: Design Patterns for Decomposition and Coordination on Multicore Architectures , 2010 .

[7]  Richard A. Brown,et al.  Modules in community: injecting more parallelism into computer science curricula , 2011, SIGCSE '11.

[8]  James Demmel,et al.  the Parallel Computing Landscape , 2022 .

[9]  Timothy G. Mattson,et al.  Patterns for parallel programming , 2004 .

[10]  Doug Lea,et al.  Concurrent programming in Java - design principles and patterns , 1996, Java series.

[11]  Max Jacobson,et al.  A Pattern Language: Towns, Buildings, Construction , 1981 .

[12]  Allan Fisher,et al.  Unlocking the Clubhouse : Women in Computing by Allan Fisher , 2015 .

[13]  K. Keutzer,et al.  Our Pattern Language ( OPL ) : A Design Pattern Language for Engineering ( Parallel ) Software , 2009 .

[14]  Michael Haupt,et al.  Strategies for preparing computer science students for the multicore world , 2010, ITiCSE-WGR '10.

[15]  Richard A. Brown,et al.  CSinParallel and Synergy for Rapid Incremental Addition of PDC Into CS Curricula , 2012, 2012 IEEE 26th International Parallel and Distributed Processing Symposium Workshops & PhD Forum.

[16]  Mary Shaw,et al.  Software architecture - perspectives on an emerging discipline , 1996 .

[17]  Allan Fisher,et al.  Unlocking the clubhouse: the Carnegie Mellon experience , 2002, SGCS.

[18]  Johan Simon Seland Parallel Programming Patterns , 2010 .