Introducing High School Students to Version Control, Continuous Integration, and Quality Assurance

Joseph Latessa,Aadi Huria,Deepak Raju
2023-10-06
Abstract:Software Engineering concepts such as version control, continuous integration, and unit testing are often not presented in college computer science curriculums until the third year of study, after completing several semesters of programming courses. Throughout the summer of 2023, two high school students volunteered in our lab at Wayne State University where I'm a graduate research assistant and Ph.D. student in computer science. The students had taken AP Computer Science but had no prior experience with software engineering or software testing. This paper documents our experience devising a group project to teach the requisite software engineering skills to implement automated tests that meaningfully contribute to open-source scientific computing projects developed in connection with our lab. We describe the concepts covered, tools used, and software tests written in this early introduction to software engineering while maintaining shared emphases on education and the deployment of our work.
Software Engineering
What problem does this paper attempt to address?
The problem that this paper attempts to solve is to introduce software engineering concepts, such as version control, continuous integration and unit testing, at the high school level, in order to make up for the deficiency of late introduction of these important skills in traditional computer science education. Specifically, through a summer research project, the author guided two high school students without a software engineering background to learn and apply these skills to develop automated tests for open - source scientific computing projects. This attempt aims to provide high school students with an early opportunity to engage in software engineering practice, enabling them to gain relevant experience and skills before formally entering a university computer science major, so as to better prepare for their future academic and career lives. In addition, the project also hopes to enhance students' understanding and sense of participation in scientific computing projects through their actual contributions. The paper elaborately describes the design and implementation process of the project, including the tools used, the concepts taught, the challenges encountered and the successes achieved, aiming to provide references and examples for other educators or laboratories that hope to introduce software engineering concepts at a similar educational level.