Research on Parallel Computing Teaching: state of the art and future directions

This research full paper identifies how the teaching of parallel computing has been developing over the years. The learning of parallel and distributed computing is fundamental for computing professionals, due to the popularization of parallel architectures. Teaching parallel computing involves theoretical concepts and the development of practical skills. Its content is dense and comprises different disciplines in computer courses. Although there is growing concerned about this type of teaching, the organization and depth of parallel computing teaching at universities change widely. The available literature on the teaching of parallel computing shows some experiences about how to teach parallel computing; however, it is not easy to determine the state of the art with challenges and gaps. Our objective is to identify essential aspects related to the teaching of parallel computing as methodologies, supporting resources, subjects taught, the satisfaction of students with learning and curricula. We carried out a systematic mapping to extract information from the literature, which is composed of three phases: planning, conduction, and reporting. We initially selected 819 papers from the Scopus, IEEE, ACM, and Google Scholar databases. After a previous analysis, we performed a full read of 94 papers. The use of different teaching methodologies appears in the publications, however, the traditional teaching methodology still is the most used. There is a small number of students in parallel computing courses, a concern of different authors. Educational software or hardware resources are reported, with software proposals corresponding to most of them. The teaching of parallel computing at the beginning of undergraduate courses appear in different papers. This paper contributes to research in teaching parallel computing, pointing out the state of the art of this area, highlighting challenges that should be the focus of investigations.

[1]  Marcelo Arroyo Teaching Parallel and Distributed Computing to Undergraduate Computer Science Students , 2013, 2013 IEEE International Symposium on Parallel & Distributed Processing, Workshops and Phd Forum.

[2]  Irina G. Zakharova,et al.  Key issues of low-level parallel programming in the individual projects for graduate students , 2018 .

[3]  Steve Carr,et al.  ThreadMentor: a pedagogical tool for multithreaded programming , 2003, JERC.

[4]  Greg Lammers,et al.  Exploring student understanding of parallelism using concept maps , 2012, 2012 Frontiers in Education Conference Proceedings.

[5]  Jichen Zhu,et al.  Graph grammar-based controllable generation of puzzles for a learning game about parallel programming , 2017, FDG.

[6]  Javier Cuenca,et al.  A Parallel Programming Course Based on an Execution Time-Energy Consumption Optimization Problem , 2016, 2016 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW).

[7]  Daniel J. Ernst Preparing students for future architectures with an exploration of multi- and many-core performance , 2011, ITiCSE '11.

[8]  Bernd Burgstaller,et al.  Parallel from the beginning: the case for multicore programming in thecomputer science undergraduate curriculum , 2013, SIGCSE '13.

[9]  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.

[10]  Sumit Kumar Jha,et al.  Predicting Success in Undergraduate Parallel Programming via Probabilistic Causality Analysis , 2018, 2018 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW).

[11]  Javier Cuenca,et al.  A High Performance Computing Course Guided by the LU Factorization , 2014, ICCS.

[12]  Daniel Andresen,et al.  Minimum Time, Maximum Effect: Introducing Parallel Computing in CS0 and STEM Outreach Activities Using Scratch , 2014, XSEDE '14.

[13]  Apan Qasem,et al.  A Module-based Approach to Adopting the 2013 ACM Curricular Recommendations on Parallel Computing , 2015, SIGCSE.

[14]  Lubomir Ivanov The right balance: restructuring the parallel and scientific computing course , 2012 .

[15]  Marc Reichenbach,et al.  Comprehensive curriculum for reconfigurable heterogeneous computer architecture education , 2017, IET Circuits Devices Syst..

[16]  Joint Task Force on Computing Curricula Computer Science Curricula 2013: Curriculum Guidelines for Undergraduate Degree Programs in Computer Science , 2013 .

[17]  Nouman M. Durrani,et al.  Novelties in Teaching High Performance Computing , 2015, 2015 IEEE International Parallel and Distributed Processing Symposium Workshop.

[18]  Atanas Radenski,et al.  Integrating data-intensive cloud computing with multicores and clusters in an HPC course , 2012, ITiCSE '12.

[19]  Brian Rague Measuring CS1 perceptions of parallelism , 2011, 2011 Frontiers in Education Conference (FIE).

[20]  Chris Lupo,et al.  Cross teaching parallelism and ray tracing: a project-based approach to teaching applied parallel computing , 2012, SIGCSE '12.

[21]  Dennis Brylow,et al.  Using Embedded Xinu and the Raspberry Pi 3 to Teach Parallel Computing in Assembly Programming , 2019, 2019 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW).

[22]  Samantha S. Foley,et al.  OnRamp: A web-portal for teaching parallel and distributed computing , 2017, J. Parallel Distributed Comput..

[23]  Steve Carr,et al.  Concurrent Mentor: A Visualization System for Distributed Programming Education , 2003, PDPTA.

[24]  Peter E. Strazdins,et al.  Experiences in Teaching a Specialty Multicore Computing Course , 2012, 2012 IEEE 26th International Parallel and Distributed Processing Symposium Workshops & PhD Forum.

[25]  Vicente Matellán Olivera,et al.  Supercomputers to improve the performance in higher education: A review of the literature , 2019, Comput. Educ..

[26]  Uzi Vishkin,et al.  Is teaching parallel algorithmic thinking to high school students possible?: one teacher's experience , 2010, SIGCSE.

[27]  Henrique Cota de Freitas Method for teaching parallelism on heterogeneous many-core processors using research projects , 2013, 2013 IEEE Frontiers in Education Conference (FIE).

[28]  Manuel Carro,et al.  A model-driven approach to teaching concurrency , 2013, TOCE.

[29]  Vivek Sarkar,et al.  Pedagogy and tools for teaching parallel computing at the sophomore undergraduate level , 2017, J. Parallel Distributed Comput..

[30]  Javier Cuenca,et al.  The Spanish Parallel Programming Contests and its Use as an Educational Resource , 2012, 2012 IEEE 26th International Parallel and Distributed Processing Symposium Workshops & PhD Forum.

[31]  Mike Rogers,et al.  Integrating Parallel Computing in Introductory Programming Classes: An Experience and Lessons Learned , 2017, Euro-Par Workshops.

[32]  Joel C. Adams Patternlets: A Teaching Tool for Introducing Students to Parallel Design Patterns , 2015, 2015 IEEE International Parallel and Distributed Processing Symposium Workshop.

[33]  Elavarasi Manogaran ACt-PBL: An Adaptive Approach to Teach Multi-core Computing in University Education , 2013, 2013 IEEE Fifth International Conference on Technology for Education (t4e 2013).

[34]  Peter Bui,et al.  Using clusters in undergraduate research: Distributed animation rendering, photo processing, and image transcoding , 2013, 2013 IEEE International Conference on Cluster Computing (CLUSTER).

[35]  Paul T. Tymann,et al.  Game playing as a technique for teaching parallel computing concepts , 1992, SGCS.

[36]  Domingo Gimnez A Practical Parallel Programming Course based on Problems of the Spanish Parallel Programming Contest , 2016, ICCS 2016.

[37]  Richard A. Brown,et al.  Patterns and Exemplars: Compelling Strategies for Teaching Parallel and Distributed Computing to CS Undergraduates , 2013, 2013 IEEE International Symposium on Parallel & Distributed Processing, Workshops and Phd Forum.

[38]  Juan Chen,et al.  Parallel programming course development based on parallel computational thinking , 2018 .

[39]  Mark Guzdial,et al.  Computer Science Curriculum 2008: An Interim Revision of CS 2001 , 2008 .

[40]  M. Nobre,et al.  The PICO strategy for the research question construction and evidence search. , 2007, Revista latino-americana de enfermagem.

[41]  Arturo Gonzalez-Escribano,et al.  Applying Gamification in a Parallel Programming Course , 2017 .

[42]  Bhaskar Chaudhury,et al.  Let's HPC: A web-based platform to aid parallel, distributed and high performance computing education , 2018, J. Parallel Distributed Comput..

[43]  Vivek Sarkar,et al.  Habanero-Java library: a Java 8 framework for multicore programming , 2014, PPPJ.

[44]  Rizos Sakellariou Experiences with Teaching a Second Year Distributed Computing Course , 2016, Euro-Par Workshops.

[45]  Vivek Sarkar,et al.  Preparing an Online Java Parallel Computing Course , 2017, 2017 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW).

[46]  Pearl Brereton,et al.  Lessons from applying the systematic literature review process within the software engineering domain , 2007, J. Syst. Softw..

[47]  Cédric Libert,et al.  Analysis of students’ preconceptions of concurrency , 2019, EASEAI@ESEC/SIGSOFT FSE.

[48]  Andrew Danner,et al.  Pervasive parallel and distributed computing in a liberal arts college curriculum , 2017, J. Parallel Distributed Comput..

[49]  Marin Silic,et al.  Application of social game context to teaching mutual exclusion , 2018 .

[50]  Domingo Giménez A Practical Parallel Programming Course based on Problems of the Spanish Parallel Programming Contest , 2016, ICCS.

[51]  Sebastian Burckhardt,et al.  Practical parallel and concurrent programming , 2011, SIGCSE.

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

[53]  Henrique Cota de Freitas,et al.  Parallel Programming in Computing Undergraduate Courses: a Systematic Mapping of the Literature , 2019, IEEE Latin America Transactions.

[54]  Barbara Kitchenham,et al.  Procedures for Performing Systematic Reviews , 2004 .

[55]  Suzanne J. Matthews Teaching with parallella: a first look in an undergraduate parallel computing course , 2016 .

[56]  Barry Wilkinson,et al.  Using Patterns to Teach Parallel Computing , 2014, 2014 IEEE International Parallel & Distributed Processing Symposium Workshops.

[57]  Jens Mache,et al.  Adding GPU Computing to Computer Organization Courses , 2013, 2013 IEEE International Symposium on Parallel & Distributed Processing, Workshops and Phd Forum.

[58]  Barry Wilkinson,et al.  Toward Using Higher-Level Abstractions to Teach Parallel Computing , 2013, 2013 IEEE International Symposium on Parallel & Distributed Processing, Workshops and Phd Forum.