Teaching Parallel Programming in Containers: Virtualization of a Heterogeneous Local Infrastructure - Bachiega, Naylor Garcia (2021)
Providing parallel programming education is an emerging challenge, requires teaching approaches to further the learning process and a complex infrastructure to provide a suitable environment for the laboratory practical classes. Do not prioritize parallel programming requirements in future computing professionals learning can lead to a significant training gap, negatively impacting the efficient use of current computing platforms. To popularize \"parallel thinking,\" it is essential to adopt practical learning approaches and means to facilitate software configuration and the infrastructure necessary for laboratory classes. Unfortunately, many public and private institutions do not have a cluster or an infrastructure to run parallel programs. Also, there is an operational cost to create and maintain a required environment for these laboratory classes. The lack of lecturers who work in research related to high-performance computing and the difficulties inherent in managing the execution environment are two other factors that create barriers to teaching parallel programming. Thus, this thesis aims to evaluate whether the virtualization of heterogeneous parallel architectures contributes to the teaching of parallel programming by computing students in educational institutions, which do not have such parallel architectures or qualified personnel to manage these environments. This research started with a study of existing works in the literature to determine how the practical teaching of parallel programming is carried out today. After this survey, we found that no tool met the idealized virtualization needs. Next, we defined the virtualization requirements, and a tool was developed using containers. Subsequently, experiments were carried out with professionals in the field and students to evaluate the effectiveness of this tool in the practical teaching of parallel programming. As a result, Iguana was created, an open-source tool for teaching parallel programming, thinking about low-income students who do not have access to parallel architectures. The tool allows students to develop and run their parallel code through a real-time web interface without the need to access command-line terminals or wait for batch processing. Furthermore, Iguana can operate without the Internet in a simple virtual machine, requiring only essential computer resources, allowing its use by any first-year undergraduate student.