Skip to main content

Github Tools

Github is a software development platform built on top Git, an open source distributed revision control system. It provides a web based user interface and hosting for web repositories. Git and Github are industry standards. Today's employers expect that software developers know how to work with these tools.

From an education perspective, Github has some really great features that can be very useful when teaching software development courses. Here is a short list of some of these features:

  • Hosting of student work in a meaningful way
  • Automatic testing of code through github actions
  • Cloud based IDE called codespaces that allows you to edit the source repository, compile your programs and test your code all done in the browser
  • Client-side web pages through github pages (these notes for example are built from a github repository and hosted using github pages)
  • Built in Collaboration tools for groups
  • Discussion Boards
  • User access control
  • ... and more

These notes will go through some of these tools. Namely it will look at github classroom, github codespaces and github actions

Github Classroom

Github was not built as an educational tool. The typical usage patterns for non-education users are very different from how educators might use github. Thus the typical user interface provided by github to manage the access and content on their site does not scale well for use within an education setting.

Github classroom is a tool built by github to help teachers manage their student work on github. It provides a means to create and manage a relatively large number of repositories with as little work as possible.

Codespaces

Github code spaces provides a web based IDE. A github code space clones your repository into a VM. From there you can work with your files. codespaces can be configured with various compilers. When you have completed your work in your code space, you can push the changes back into your repo.

Actions

A github action is a workflow that runs based on various events. For example you can set up an action so that every time a certain file is changed, the workflow can run the unit tests. An action can get more complicated than just running unit tests..for example every time a file is changed in the repository for these notes, a workflow is automatically triggered to build the docusaurus site, generate the pdf, place the pdf into the appropriate branch.