Teaching Philosophy#
The content, activities and delivery approach of this course have been designed with one goal in mind: help researchers to build independence and self-reliance when using version control and collaborative development in research software projects.
We have organized the content in four lessons to fulfil such a goal. The first lesson is an introduction to the fundamentals of Git. The second lesson builds on the knowledge and skills of the first lesson and focuses on the use of branches and remote repositories. The third lesson introduces the topic of collaborative software development, where the skills and knowledge from the first and second lessons are used to collaborate effectively via platforms such as GitHub and GitLab. Finally, the fourth lesson focuses on best practices for managing collaboration, licensing, and releasing software.
Teaching Approach#
This course adopts a unique teaching approach to build self-reliance and independence among participants. Self-reliance is built by gradually increasing the expertise required to complete exercises as participants move from one lesson to another. At the same time, the detail in the instructions of the exercises is reduced withouth compromising clarity. The teaching approach graph illustrates this.

Fig. 1 A visual representation of the teaching approach used to build self-reliance across the lessons.#
Self-reliance is also built through engaging participants in individual and team assignments. Individual assignments are designed to create individuals who can apply skills confidently. In contrast, team assignments are designed to achieve the same when working with other software developers. We have condensed the teaching approach into two principles:
Self-reliance is built by gradually reducing the dependency on the instructor’s guidance when engaging in learning activities. The content and exercises are designed so that participants work gradually more independently from the instructor’s guidance and plan and execute assignments by themselves.
Participants can master some skills through individual efforts, while they must master other skills through experiences in software development teams. Individual exercises are prevalent in lessons one and two, focusing on acquiring skills fundamental to version control and collaborative development. During lesson three, participants form teams of three or four to undertake team assignments. Team assignments aim to expose participants to everyday situations among development teams working on a collaborative software project.