Teaching Parallel Programming in Basic Education: A Systematic Literature Review, Bibliometric Analysis, and Agenda for Future Studies
Abstract
In the last decade, especially due to the increase in computational power, and therefore the urgency of parallel programming, there was a need for trained professionals to develop software that use all the parallel potential of machines. With this, the teaching of parallel programming, for a long time exclusive to undergraduate courses, opened up space for it to be worked on in Basic Education as well. However, before starting to propose specific approaches for teaching parallel programming in Basic Education, it is necessary to understand the state of the art in this field. To face this challenge, a Systematic Literature Review was carried out with the objective of i) identifying which approaches have been used in teaching parallel programming in Basic Education; ii) detect which programming languages are used; iii) raise which concepts are addressed; iv) point out in which teaching phases these approaches are applied; and v) identify how the students' learning experience has been. As a result, it is possible to identify that i) the number of publications is still limited; ii) most studies are conducted in short-term workshops; iii) most studies are conducted only in the United States of America; iv) most studies use traditional teaching approaches; v) there is no consensus regarding the use of programming languages in teaching parallel programming; vi) most studies were conducted in high school; and vii) overall, the students' experience was positive. The results contribute especially to the area of Computing Education, opening space for the development of new approaches for teaching parallel programming.
Keywords:
Computer Education, Parallel Programming, Literature review, Research Schedule
References
Roberto Almeida Jr, Hadria Farias, Marcos Saavedra, and Josivaldo Araújo. 2021. Metodologias de Ensino na Programação Paralela com Placas Gráficas: Uma Revisão Sistemática da Literatura. Anais do XXXII Simpósio Brasileiro de Informática na Educação 32, 1, 1243–1252.
Naylor Bachiega, Paulo Lopes de Souza, Sarita Bruschi, and Simone Souza. 2017. Mapeamento sistemático do ensino teórico e prático de programação paralela. In Anais dos Workshops do Congresso Brasileiro de Informática na Educação. 1089.
Naylor Garcia Bachiega, Paulo Lopes de Souza, Sarita Bruschi, and Simone Souza. 2018. Um Panorama do Ensino de Programação Paralela e Distribuída em Universidades Brasileiras. In Anais dos Workshops do Congresso Brasileiro de Informática na Educação. 480.
Mordechai Ben-Ari and Yifat Ben-David Kolikant. 1999. Thinking parallel: The process of learning concurrency. ACM SIGCSE Bulletin 31, 3, 13–16.
Brian Broll, Akos Lédeczi, Peter Volgyesi, János Sallai, Miklós Maróti, and Chris Vanags. 2017. Introducing parallel and distributed computing to K12. In 2017 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW). IEEE, 323–330.
Luis Jorge Enrique Rivero Cabrejos, Davi Viana, and Rodrigo Pereira dos Santos. 2018. Planejamento e execuçao de estudos secundários em informática na educaçao: Um guia prático baseado em experiências. Jornada de Atualização em Informática na Educação, 21–52.
Robert A Chesebrough and Ivan Turner. 2010. Parallel computing: at the interface of high school and industry. In Proceedings of the 41st ACM technical symposium on Computer science education. 280–284.
Bushra Tawfiq Chowdhury, Sam Blanchard, Kirk W Cameron, and Aditya Johri. 2015. Seemore: An interactive kinetic sculpture designed to teach parallel computational thinking. In 2015 ASEE Annual Conference & Exposition. 26–1360.
Pawel Czarnul. 2018. Parallel programming for modern high performance computing systems. CRC Press.
Anderson Corrêa de Lima, Thiago Carvalho, Daniel Bailo, José Filipe Rozeno Rodrigues, Wellington Marques de Aquino, and Plabiany Acosta. 2018. Uma Oficina para Ensino de Algoritmos Paralelos por Meio de Computação Desplugada. In Anais dos Workshops do Congresso Brasileiro de Informática na Educação, Vol. 7. 619.
Franciely Alves de Souza, Taciana Pontual Falcão, and Rafael Ferreira Mello. 2021. O Ensino de Programação na Educação Básica: Uma Revisão da Literatura. Anais do XXXII Simpósio Brasileiro de Informática na Educação, 1265–1275.
Kevin Doucet and Jian Zhang. 2019. The creation of a low-cost raspberry pi cluster for teaching. In Proceedings of the Western Canadian Conference on Computing Education. 1–5.
Russell Feldhausen, Scott Bell, and Daniel Andresen. 2014. Minimum time, maximum effect: Introducing parallel computing in cs0 and stem outreach activities using scratch. In Proceedings of the 2014 Annual Conference on Extreme Science and Engineering Discovery Environment. 1–7.
Simcha Gochman, Avi Mendelson, Alon Naveh, and Efraim Rotem. 2006. Introduction to Intel Core Duo Processor Architecture. Intel Technology Journal 10, 2.
Chris Gregg, Luther Tychonievich, James Cohoon, and Kim Hazelwood. 2012. EcoSim: a language and experience teaching parallel programming in elementary school. In Proceedings of the 43rd ACM technical symposium on Computer Science Education. 51–56.
Wen-mei Hwu, Kurt Keutzer, and Timothy G Mattson. 2008. The concurrency challenge. IEEE Design & Test of Computers 25, 4, 312–320.
David Kirk and Wen-Mei Hwu. 2010. Programando para Processadores Paralelos: uma abordagem prática à programação de GPU. Elsevier Brasil.
Yifat Ben-David Kolikant. 2004. Learning concurrency: evolution of students’ understanding of synchronization. International Journal of Human-Computer Studies 60, 2, 243–268.
Suzanne J Matthews, Joel C Adams, Richard A Brown, and Elizabeth Shoop. 2018. Portable parallel computing with the raspberry pi. In Proceedings of the 49th ACM Technical Symposium on Computer Science Education. 92–97.
Nkundwe Moses Mwasaga and Mike Joy. 2020. Using high-performance computing artifacts as a learning intervention: a systematic literature review. In Proceedings of the 2nd International Conference on Intelligent and Innovative Computing Applications. 1–10.
Matthew J Page, Joanne E McKenzie, Patrick M Bossuyt, Isabelle Boutron, Tammy C Hoffmann, Cynthia D Mulrow, Larissa Shamseer, Jennifer M Tetzlaff, Elie A Akl, Sue E Brennan, et al. 2021. The PRISMA 2020 statement: an updated guideline for reporting systematic reviews. Systematic reviews 10, 1, 1–11.
Daniel Perry, John Robinson, Stephanie Cruz, Cecilia Aragon, Jeanne Ting Chowning, and Mette Peters. 2014. Game design for bioinformatics and cyberinfrastructure learning: a parallel computing case study. Concurrency and Computation: Practice and Experience 26, 13, 2303–2315.
Mitchel Resnick. 1990. MultiLogo: A study of children and concurrent programming. Interactive learning environments 1, 3, 153–170.
Adam Rifkin. 1994. Teaching parallel programming and software engineering concepts to high school students. ACM SIGCSE Bulletin 26, 1, 26–30.
Charles I Saidu, AA Obiniyi, and Peter O Ogedebe. 2015. Overview of trends leading to parallel computing and parallel programming. British Journal of Mathematics & Computer Science 7, 1, 40.
Amaal Shorman and Mohammad Qatawneh. 2018. Performance improvement of double data encryption standard algorithm using parallel computation. International Journal of Computer Applications 179, 25.
Paolo AG Sivilotti and Murat Demirbas. 2003. Introducing middle school girls to fault tolerant computing. ACM SIGCSE Bulletin 35, 1, 327–331.
Michael Steffen and Joseph Zambreno. 2012. Exposing High School Students to Concurrent Programming Principles Using Video Game Scripting Engines. In 2012 ASEE Annual Conference & Exposition. 25–623.
Shane Torbert, Uzi Vishkin, Ron Tzur, and David J Ellison. 2010. Is teaching parallel algorithmic thinking to high school students possible? One teacher’s experience. In Proceedings of the 41st ACM technical symposium on Computer science education. 290–294.
Naylor Bachiega, Paulo Lopes de Souza, Sarita Bruschi, and Simone Souza. 2017. Mapeamento sistemático do ensino teórico e prático de programação paralela. In Anais dos Workshops do Congresso Brasileiro de Informática na Educação. 1089.
Naylor Garcia Bachiega, Paulo Lopes de Souza, Sarita Bruschi, and Simone Souza. 2018. Um Panorama do Ensino de Programação Paralela e Distribuída em Universidades Brasileiras. In Anais dos Workshops do Congresso Brasileiro de Informática na Educação. 480.
Mordechai Ben-Ari and Yifat Ben-David Kolikant. 1999. Thinking parallel: The process of learning concurrency. ACM SIGCSE Bulletin 31, 3, 13–16.
Brian Broll, Akos Lédeczi, Peter Volgyesi, János Sallai, Miklós Maróti, and Chris Vanags. 2017. Introducing parallel and distributed computing to K12. In 2017 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW). IEEE, 323–330.
Luis Jorge Enrique Rivero Cabrejos, Davi Viana, and Rodrigo Pereira dos Santos. 2018. Planejamento e execuçao de estudos secundários em informática na educaçao: Um guia prático baseado em experiências. Jornada de Atualização em Informática na Educação, 21–52.
Robert A Chesebrough and Ivan Turner. 2010. Parallel computing: at the interface of high school and industry. In Proceedings of the 41st ACM technical symposium on Computer science education. 280–284.
Bushra Tawfiq Chowdhury, Sam Blanchard, Kirk W Cameron, and Aditya Johri. 2015. Seemore: An interactive kinetic sculpture designed to teach parallel computational thinking. In 2015 ASEE Annual Conference & Exposition. 26–1360.
Pawel Czarnul. 2018. Parallel programming for modern high performance computing systems. CRC Press.
Anderson Corrêa de Lima, Thiago Carvalho, Daniel Bailo, José Filipe Rozeno Rodrigues, Wellington Marques de Aquino, and Plabiany Acosta. 2018. Uma Oficina para Ensino de Algoritmos Paralelos por Meio de Computação Desplugada. In Anais dos Workshops do Congresso Brasileiro de Informática na Educação, Vol. 7. 619.
Franciely Alves de Souza, Taciana Pontual Falcão, and Rafael Ferreira Mello. 2021. O Ensino de Programação na Educação Básica: Uma Revisão da Literatura. Anais do XXXII Simpósio Brasileiro de Informática na Educação, 1265–1275.
Kevin Doucet and Jian Zhang. 2019. The creation of a low-cost raspberry pi cluster for teaching. In Proceedings of the Western Canadian Conference on Computing Education. 1–5.
Russell Feldhausen, Scott Bell, and Daniel Andresen. 2014. Minimum time, maximum effect: Introducing parallel computing in cs0 and stem outreach activities using scratch. In Proceedings of the 2014 Annual Conference on Extreme Science and Engineering Discovery Environment. 1–7.
Simcha Gochman, Avi Mendelson, Alon Naveh, and Efraim Rotem. 2006. Introduction to Intel Core Duo Processor Architecture. Intel Technology Journal 10, 2.
Chris Gregg, Luther Tychonievich, James Cohoon, and Kim Hazelwood. 2012. EcoSim: a language and experience teaching parallel programming in elementary school. In Proceedings of the 43rd ACM technical symposium on Computer Science Education. 51–56.
Wen-mei Hwu, Kurt Keutzer, and Timothy G Mattson. 2008. The concurrency challenge. IEEE Design & Test of Computers 25, 4, 312–320.
David Kirk and Wen-Mei Hwu. 2010. Programando para Processadores Paralelos: uma abordagem prática à programação de GPU. Elsevier Brasil.
Yifat Ben-David Kolikant. 2004. Learning concurrency: evolution of students’ understanding of synchronization. International Journal of Human-Computer Studies 60, 2, 243–268.
Suzanne J Matthews, Joel C Adams, Richard A Brown, and Elizabeth Shoop. 2018. Portable parallel computing with the raspberry pi. In Proceedings of the 49th ACM Technical Symposium on Computer Science Education. 92–97.
Nkundwe Moses Mwasaga and Mike Joy. 2020. Using high-performance computing artifacts as a learning intervention: a systematic literature review. In Proceedings of the 2nd International Conference on Intelligent and Innovative Computing Applications. 1–10.
Matthew J Page, Joanne E McKenzie, Patrick M Bossuyt, Isabelle Boutron, Tammy C Hoffmann, Cynthia D Mulrow, Larissa Shamseer, Jennifer M Tetzlaff, Elie A Akl, Sue E Brennan, et al. 2021. The PRISMA 2020 statement: an updated guideline for reporting systematic reviews. Systematic reviews 10, 1, 1–11.
Daniel Perry, John Robinson, Stephanie Cruz, Cecilia Aragon, Jeanne Ting Chowning, and Mette Peters. 2014. Game design for bioinformatics and cyberinfrastructure learning: a parallel computing case study. Concurrency and Computation: Practice and Experience 26, 13, 2303–2315.
Mitchel Resnick. 1990. MultiLogo: A study of children and concurrent programming. Interactive learning environments 1, 3, 153–170.
Adam Rifkin. 1994. Teaching parallel programming and software engineering concepts to high school students. ACM SIGCSE Bulletin 26, 1, 26–30.
Charles I Saidu, AA Obiniyi, and Peter O Ogedebe. 2015. Overview of trends leading to parallel computing and parallel programming. British Journal of Mathematics & Computer Science 7, 1, 40.
Amaal Shorman and Mohammad Qatawneh. 2018. Performance improvement of double data encryption standard algorithm using parallel computation. International Journal of Computer Applications 179, 25.
Paolo AG Sivilotti and Murat Demirbas. 2003. Introducing middle school girls to fault tolerant computing. ACM SIGCSE Bulletin 35, 1, 327–331.
Michael Steffen and Joseph Zambreno. 2012. Exposing High School Students to Concurrent Programming Principles Using Video Game Scripting Engines. In 2012 ASEE Annual Conference & Exposition. 25–623.
Shane Torbert, Uzi Vishkin, Ron Tzur, and David J Ellison. 2010. Is teaching parallel algorithmic thinking to high school students possible? One teacher’s experience. In Proceedings of the 41st ACM technical symposium on Computer science education. 290–294.
Published
2023-04-24
How to Cite
PEREZ, Felipe Pereira; OLIVEIRA, Wilk; LIMA, Anderson Corrêa de; CASTRO JUNIOR, Amaury Antônio de; ARAÚJO, Graziela.
Teaching Parallel Programming in Basic Education: A Systematic Literature Review, Bibliometric Analysis, and Agenda for Future Studies. In: BRAZILIAN SYMPOSIUM ON COMPUTING EDUCATION (EDUCOMP), 3. , 2023, Evento Online.
Anais [...].
Porto Alegre: Sociedade Brasileira de Computação,
2023
.
p. 19-26.
ISSN 3086-0733.
DOI: https://doi.org/10.5753/educomp.2023.228051.
