How to grade programming assignments on GitHub
Feedback is essential to the learning process. Input from an expert at the right time can make all the difference in a software project. In past programming classes, Professor John…
Feedback is essential to the learning process. Input from an expert at the right time can make all the difference in a software project.
In past programming classes, Professor John David N. Dionisio’s printed out student assignments and commented on their code by hand, directly on the paper. Students said it was easier to understand feedback when it was in context.
When he started using GitHub’s interface to communicate with his students, he found he could introduce version control even earlier in his courses. As a result, Dionisio’s students have the opportunity to use industry tools from day one of their studies.
The web app has made development more accessible sooner, letting freshmen get in on it without having to learn everything about version control. The comment threads and the ability to comment line by line tightens the feedback loop. Now printing is not really necessary because you can just look at the diffs and make comments about it.
With a streamlined process, students don’t get stuck on setup
John runs his courses using GitHub Classroom to manage student assignments and Jenkins CI to deliver immediate and ongoing feedback.
Working with a live repository, he knows students will see it exactly as he does. And GitHub Classroom’s dashboard lets him share a link to the full assignment and view who has accepted it.
For students it’s easy to get started. With Classroom, I can now basically deliver a complete package, including the instructions. Instead of things being sort of scattered, and having the student accumulate it together. Documentation is there, sample code is there, and configuration files for continuous integration are there.
Every student picks it up, and if they’re off and running. They can commit, and you can look at their histories. Students have their own private repo that they would build their files on.
More substantive feedback, fewer syntax errors
Until he started using Jenkins to flag formatting issues, Dionisio had to provide his students with a flood of stylistic comments.
Now, instead of focusing on bad indentations and incorrect spacing, Dionisio can give more qualitative feedback on redundancies and best practices. His comments have evolved into more of a conversation.
I frequently give feedback in terms of design and structure, like “I would’ve instead written this line this way.” And since GitHub comments are in Markdown, they’re easy to read and very clear.
You can really format the code and convey your ideas. The display thread helps the student respond. It allows very context-sensitive, context-aware discussions for finer points of code.
A before and after of Dionisio’s feedback—from manual markup to precise and contextual feedback using GitHub’s review process.
A few additional examples of John’s feedback to students.
The goal: strong communication skills around code
In industry, developers almost never start from scratch. To be successful, they need to be able to ask questions about code, to understand what’s going on, and recognize the strategies of other developers. In the classroom, pull requests work to build those skills:
Pull requests with Markdown support are a great place to have a consistent thread of feedback. And this clear signal of, “I now accept your work”—like building a relationship of submitting your work for someone to look at, and after we workshop it for a little bit, I now accept your work.
Anything that helps me simulate tools and practices they will encounter later is always of help.
This is a post in our “Teacher Spotlight” series, where we share the different ways teachers use GitHub in their classrooms.
See more GitHub education posts
Written by
Related posts
Boost your CLI skills with GitHub Copilot
Want to know how to take your terminal skills to the next level? Whether you’re starting out, or looking for more advanced commands, GitHub Copilot can help us explain and suggest the commands we are looking for.
Beginner’s guide to GitHub: Setting up and securing your profile
As part of the GitHub for Beginners guide, learn how to improve the security of your profile and create a profile README. This will let you give your GitHub account a little more personality.
Beginner’s guide to GitHub: Merging a pull request
As part of the GitHub for Beginners guide, learn how to merge pull requests. This will enable you to resolve conflicts when they arise.