Conference Paper

Teaching Software Development with Open Source, GitHub, and Scrum

Abstract: 

Open source software is particularly suitable for teaching and organisations like Teaching Open Source (http://teachingopensource.org) present actively advertise this. In this talk we want to present some practical benefits that open source programming and publishing software on an open online platform has for teaching project-oriented software engineering seminars at university level. In these courses students together develop a new system for a specific task in form of a group project. For project groups, we suggest to use an adjusted variant of Scrum for project management (http://en.wikipedia.org/wiki/Scrum_%28software_development%29), git as source code management system (http://git-scm.com/), and GitHub as a collaboration platform (http://github.com/, https://education.github.com/). Thanks to GitHub’s collaboration models such as “fork & pull”, each student’s work, may they be in lines of code or contributions to a discussion, can be tracked. Students fulfil different tasks in a project setting: some develop, some spend their time issuing bugs or improving documentation. But for all of them GitHub allows to quantify contributions and set concrete goals, e.g. two pull requests created, one merged, and five issues written. GitHub also offers graphical overviews of project activities. The goal is of course not to expose the student but to create a transparent environment for evaluation and grading. Teachers can even weigh in on discussions and make suggestions on the same platform as the students.
In our experience, students estimate very well their performance in comparison with their colleagues. However, using Scrum as a development model is challenging for them. We adopted the classic Scrum schedule and defined two week long sprints. Students sometimes quarrel with the role of supervising other students and delegating tasks among their peers. But in the end, the clear schedule and the focus on the iterative and communicative aspects of project management are a key to ensure success. Teachers should be ready to step in a Scrum masters and to support the product owners and must be open to adjust plans and expectations in the same way that the students have to.
We think this approach can considerably increase quality of a course from both a teaching and a learning perspective. A few examples: it reduces workload on lecturers and teaching assistants; it makes individual contributions in group work identifiable; it confronts students with the reality of modern software development, which is collaborative and agile; both teachers and students are regularly forced to evaluate and improve the process; students build an online portfolio of their code and learn to work in an open source environment. Our goal with this talk is to share experiences with other people who teach programming-related courses and encourage other to utilise GitHub as a collaboration platform (see also https://github.com/blog/1817-octotales-uc-berkeley).

Author: 

Daniel Nüst, Thomas Bartoschek

Presenter Biography: 

Daniel is a software developer at the Open Source organiation 52°North. He works in the fields of sensor web, geostatistics and geoprocessing and is involved in teaching because students can create amazing software.

? Top