Towards a Collaborative Learning Platform: The Use of GitHub in Computer Science and Software Engineering Courses




Feliciano, Joseph

Journal Title

Journal ISSN

Volume Title



Technical fields such as computer science and software engineering have placed an emphasis on collaboration and teamwork, and training students entering these fields is a challenge that educators and researchers have attempted to tackle. To develop students’ skills for these technical fields, some educators have integrated learning activities where students collaborate heavily and make contributions to each other’s learning, emulating the type of work students will perform in industry. Consequently, the learning tools that instructors use for their courses need to support these collaborative and contributive activities. GitHub is a social coding tool that has seen rapid adoption in the software development field because of the open, collaborative workflow it encourages. This thesis explores the use of GitHub as a collaborative platform for computer science and software engineering education. GitHub provides users with opportunities to contribute to each other’s work through its transparency features, supports integrated discussions, and provides support for reusing and remixing work—opportunities which may be extended to education. In this thesis, I investigate how GitHub’s unique features, such as ‘pull requests’ and commit histories, can be used to support learning and teaching. This work also explores the benefits and challenges that emerge from using GitHub in this context from both the instructor’s and the student’s perspectives. We found that GitHub afforded instructors with opportunities to encourage student participation by contributing to the course materials through the use of ‘pull requests’ and provided instructors with ways to reuse and share their course materials. As well, students gained experience with a tool and a workflow they expected to encounter in industry, and were provided ways to further engage in their learning by giving feedback to or further developing other students’ work. However, we found that instructors and students were challenged by GitHub’s lack of educational focus, as well as the implications of using GitHub’s open workflow on the public availability of student work. Findings from this work determine the viability of GitHub as a tool for supporting computer science and software engineering education, and contribute to our understanding of what activities and benefits GitHub provides beyond traditional learning tools. The contributions of this work include a set of recommendations for instructors wishing to use GitHub to augment their courses, utilizing GitHub’s features to support educational activities such as student contributions to course materials and providing continuous feedback to students.



GitHub, Computer Science Education, Software Engineering Education, CSCL, Collaborative Learning, Learning Tools