Facilitating the learning process in parallel computing by using instant messaging

Parallel Programming skills may require a long time to acquire. “Think in parallel” is a skill that requires time, effort, and experience. In this work, we propose to facilitate the students’ learning process in parallel programming by using instant messaging. Our aim was to find out whether students’ interaction through instant messaging tools is beneficial for the learning process. In order to do so, we asked several students of an HPC course of the Master’s degree in Computer Science of the University of León to develop a specific parallel application, each of them using a different application program interface: OpenMP, MPI, CUDA, or OpenCL. Even though the used APIs are different, there are common points in the design process. We encouraged students to interact with each other by using Gitter, an instant messaging tool for GitHub users. Our analysis of the communications and results demonstrate that the direct interaction of students through the Gitter tool has a positive impact on the learning process.

1 Introduction an enormous amount of computational power. These challenges could not be addressed out without the extreme computational power of a supercomputer. Information society requires betterprepared professionals in order to face these problems. These professionals should acquire several skills while they are learning in order to manage High-performance Computing (HPC) environments. One of the key skills to acquire for the effective use of HPC facilities is "Think in parallel".
Institutions are devoting a lot of effort and investing large amounts of money to promote and foster HPC facilities. But in addition, it is necessary to assess if the "Think in parallel" competence has been acquired or not by the people encouraged to use them. This is a difficult task that requires the evaluation of multiple pieces of evidence. Most of the time the assessment is determined by the final result or work delivered. However, there are many other factors which impact the learning process. One of the most studied factors has to do with Team Work Competence (TWC). In this work, we aim to evaluate if team-work may positively affect the learning process in parallel computing. In order to do so, students of Master's degree in Computer Science have been encouraged to interact between them by using Instant Messaging (IM) applications while dealing with a parallel computing practical assignment.
Nowadays the use of IM apps is widely extended since they are included in smartphones and similar devices. They enable for synchronous communication among users allowing students to exchange text, chat in a group, share images, videos, voice, and of course talk.
In 2019 the most popular applications for IM were: WhatsApp with 1,6 billion users, Facebook messenger with 1,3 billions, WeChat with around 1 billion, QQ mobile with 807 millions, Skype with 300, Snapchat with 287, Viber with 260, and Telegram with 200 (stats provided by stadista.com based on We are Social, Kepios and other sources [1]).
Consequently, students are active users of IM applications and even they prefer it rather than other communication media such as email or phone [2,3]. In fact, not only do they not consider IM as a technology, but they assume it as a common communication channel [4].
IM apps have been applied in learning contexts in different ways, but one of the most common is as a way to improve students communication with peers and faculty [5][6][7][8][9][10][11]. These studies indicates that IM simplifies communication increasing the interactivity between peers and making easier to share knowledge. It also increases participants sense of presence, fosters collaboration and makes ubiquity possible [12,13]. However, IM communication also presents drawbacks since it can become a distraction in the learning process if the learners use these tools while studying, and not necessarily with educational purposes [14,15]. As a result, IM applications provide interesting tools in educational activities when they are used under certain supervision and with educational purposes.
Therefore, IM apps contributes to acquire the TWC by leveraging a key issue such as enhancing communication between students. In this sense, there are several cases where instant messaging is applied as a communication channel for students groups [15] and in some the contents of the interaction is analyzed [16]. However, in those works the learning evidences are not used to assess TWC acquisition as the authors of this work aim to do.
Given this context it is clear that IM can be used to communicate by groups of students. In this sense, the present work explores the use of Gitter. Even though it is not one of the most popular IM applications, its usage has been encouraged owing to its integration with Github and Github Classroom, which are the platforms that students of Master's degree in Computer Science use to deliver their practical assignments.
This work goes beyond the existing research on this field because it aims to employ Gitter to facilitate cooperation among students that work to develop a project, and later allow analyzing their interactions to assess the acquisition of the "Thinking in parallel" skill. In order to do so, a set of experiments have been carried out. In these experiments, students attending the HPC subject of the master's degree in Computer Science of the University of León during the 2015-2016 course were assigned to develop a parallel application. Each student chose one Application Program Interface (API) among OpenMP, MPI, CUDA, and OpenCL. Even though the used APIs by different students are quite different, students were encouraged to share design decisions by using the Gitter application. Their results are going to be compared with the results of students attending the HPC subject of the master's degree in Computer Science during the 2014-2015, 2016-2017, 2017-2018, and 2018-2019 courses who were assigned a similar task but without the Gitter interaction.
This paper is structured as follows: section 2 describes the materials used in the experiments and the methodology used to evaluate the results; section 3 gathers tentative results; and section 4 poses some conclusions and works in progress.

Materials and Methods
A set of experiments was carried out to evaluate the impact of using IM in the learning process of parallel computing. During the experiments, students of the HPC subject of the master's degree in Computer Science of the University of León were assigned a practical task consisting on developing a parallel application.
Next, each of the elements is described and the methodology and metrics used in the experiment are presented.

High-performance Computing
High-performance computing is a subject in the first year of the Master's Degree in Computer Science at the University of León (Spain) where students learn the fundamentals of supercomputing and parallel programming. The main difficulty students deal with is the development of parallel algorithms to solve typical problems in computer science. Students find it hard to think in parallel so a set of basic examples is introduced to know how the typical parallel programming APIs, such as OpenMP, MPI and CUDA can be used.
Facilitating the learning process in parallel computing by using instant messaging TEEM 2019, October 2019, León, Spain Later, a more real problem is given to be solved in parallel. For that purpose, a sequential program and its explanation is provided. Next, students apply the knowledge they have acquired during the practical lessons to design a parallel solution using the studied libraries.
The organization of the subject was designed based on the knowledge acquired during two Erasmus teaching stays to collaborate with the subject Parallel Computer in the Computer Science degree at the University of Groningen. Not only did the students work with how APIs allow programmers to execute code in parallel but they also had to develop complete parallel programs for different fields such as image processing or physics.

Practical assignment
A real problem was presented to the students using a sequential version written in Fortran. The program solved contact problems between 3D solids by applying the Boundary Element Method. This method is presented and explained with detail in [17].
In short, two solids are meshed in triangular elements and then certain coefficients are computed for each pair of elements. To do this, a numerical or an analytic integral is solved depending on if the pair is formed by the same element or not. Integrals are computed from one element to the node of another element, that is located at its baricentre. As these coefficients are independent among elements, its computation is susceptible to be run on parallel. An algorithm of this problem is shown in Algorithm 1 [18].  With these values and some other parameters of the problem, a system of equations Ax=B is computed. Being N the number of elements that comprise both solids, A is a matrix N by N for the thermal contact problem and a matrix N*3 by N*3 for the elastic or thermoelastic contact problem. B is the independent vector and x are unknowns. Typical examples of contact problems involve at least 1200 elements so as to be able to design a proper geometry of the problem. System of equations are also potential candidates to run on parallel. Therefore, giving these details to the students and highlighting the two potential problems to be run on parallel, basically the task was to speed up the execution time by using several parallel techniques. Although they had to use several parallel techniques, they worked as a team so they had to collaborate to achieve the final result. Consequently, a supervision of all the development process and the decision making was required. For that purpose, the CTMTC (Comprehensive Training Model of the Teamwork Competence) methodology was applied.

Parallel Computing APIs.
Students were encouraged to use the parallel computing API they prefer. During the course they learned OpenMP, MPI and CUDA; but any other API was allowed, such as OpenCL which some students decided to use.  [19]. It allows to use a CUDA-enabled graphics processing unit (GPU) for general purpose processing. The CUDA platform is a software layer that gives direct access to the GPU's virtual instruction set and parallel computational elements. The CUDA platform is designed to work with C, C++, and Fortran. This accessibility makes it easier for specialists in parallel programming to use GPU resources. Also, CUDA supports programming frameworks such as OpenACC and OpenCL. 4. Open Computing Language (OpenCL). It is a framework for writing programs that execute across heterogeneous platforms consisting of central processing units (CPUs), graphics processing units (GPUs), and some other processors or hardware accelerators [20]. OpenCL specifies its own programming language and APIs to control the platform and execute programs. It provides a standard interface for parallel computing using task-and data-based parallelism.

Supecomputación Castilla y León (SCAyLE).
To develop the application students were granted access to Caléndula, the cluster of SCAyLE. SCAyLE has several calculation clusters with different computer technology architectures. Its theoretical peak performance is currently 131.8 Teraflops [21].

Comprehensive Training Mode of the Teamwork Competence (CTMTC).
For this practical assignment the CTMTC methodology is applied [22]. CTMTC explores the group results and how each individual has acquired the competence. The methodology relies on the analysis of learning evidence from data generated by the use of IT-based learning tools by student teams during a project development [23]. Applying the CTMTC methodology, five main aspects were considered and one chat room was created for each purpose: objectives, responsibilities, planning, norms and execution. Firstly, students had to design the goal and objectives of their assignment. As a result, they had to identify the technologies that were going to use and the code fragments to be run in parallel. Therefore, they agreed on the technologies to be employed. These adopted decisions were gathered in the corresponding objective wiki created for that purpose on the moodle of the subject. Secondly, students chose which API they preferred to work with, although they were aware that they also had to help the others. After a debate process by using the instant messaging tool, they reached an agreement of who was responsible for each approach. Observing how they made decisions, it was clear who had understood perfectly well what had been studied during the previous lessons since they were more active giving arguments and deciding how to face the problem. They also found more challenging the use of libraries that had not been studied during the previous lessons such as OpenCL. Planning was the hardest part since they found it really difficult to estimate the time of each task according to their messages. Lecturers had to be involved giving some advice about how much time they should expend designing, developing and testing. In order to work in group properly, they established a set of rules after debating them with gitter. They had to achieve an agreement and then all the rules were gathered on the corresponding wiki. Finally, they commented all the aspects related to the execution in the execution chat room. Following their discussions, it was clear to identify who was able to solve most of the problems, who provided useful solutions, who needed help, etc. Lecturers as observers of the chat, were able to give proper orientations to students right away, supporting some good contributions of some students or refusing those that were impossible to develop on time.

Gitter
Gitter is an open-source IM platform for developers and GitHub users. It provides a chat room system linked to users' repositories which allows discussing topics related to the source code. It provides most common IM features such as notifications, inline media files sharing, viewing and subscribing chat rooms; but also a set of specific features for developers such as subscribing changes on files or issues.

Evaluation
We will use two different metrics to evaluate the impact of using IM to facilitate the learning process in parallel computing. On the one hand, we will compare the final grades obtained by the students of the 2015-2016 course with the results of other courses, courses. During these courses, students did not use any IM application to interact within them. This analysis may indicate if the usage of IM applications may be helpful for students in order to improve their "Think in parallel" skill. For each course we will consider the following Key Performance Indicators (KPIs): 1. Total number of students. 2. Number of students who passed the course. 3. Number of students enrolled in the course who do not turn in the practical assignment. 4. Number of students who fail the course. 5. Number of students who get a C grade. 6. Number of students who get a B grade. 7. Number of students who get an A grade. 8. Number of students who get an A+ grade. On the other hand, an in-depth analysis of the students' interaction during the 2015-2016 course will be carried out. In order to do so, the conversations between students will be reviewed extracting some Key Performance Indicators (KPIs) which will result in a better comprehension of the effects of using IM in the learning process of parallel computing. The KPIs that will be considered follow:  Table 1 shows the results obtained in the courses analysed. According to the Table, the average ratio of pass in the 2015-2016 course is lowest. An in-depth analysis is required here to check if students who did not pass the course interacted with their mates by using IM or not. In order to do so the analysis of the conversations may result very useful. However, regarding the students who reached the highest grades (A or A+), the ratio of the 2015-2016 course (25%+12%) is higher than the average ratio (26%+3%). This factor may be an indicator that IM results helpful.  Table 2 shows the grades that each student got in 2015-2016 course in the HPC subject. According to the Table students 1, 2, and 7 did not pass the course. As mentioned above, it is a high fail percentage comparing to other courses. We want to perform an in-depth analysis of the students' interaction to assert that they did not interacted with their mates, and that this fact was a drawback them in order to pass the course. Teachers have the perception that these students were not involved with the rest. The reason of that failure, according to our point of view, is that those students were working at the same time. As students worked collaboratively, they were not able to keep the work pace of the rest of the students and they quit, letting know the rest of the students this situation and rescheduling the objectives, planning and role assignment. However, students that continue working as they were helped from each other, they passed the subject. Gitter rooms make clear the students that help the others and solve the most important problems they had to deal with. Tracking those instant messages also makes possible to realise how students that in order circumstances would not be able to pass the subject, were encouraged by others and oriented so as they keep working achieving the objectives.

Conclusions and work in progress
The "thinking in parallel" skill is essential for educational institutions and in order to improve the employability of students. This study describes and evaluates the use of IM applications to facilitate the learning process of parallel computing in Higher Education.
The case of study suggests that using Gitter has a positive impact in students' interactions and final grades. Furthermore, students have a positive perception of the experience, and they feel that it helps them to improve their skills in parallel computing.
An in-depth analysis of the students' interaction is being carried out to demonstrate that the high fail ration has to do with lower interaction of students failing the course.