At the University of Oslo we have had two courses (1, 2) which over the four last years have used a GitHub organization and created a repository for each student there. We have created automated scripts for setting up this. In addition, we are using it automatically to set up student-to-student peer reviewing of both weekly assignments, but also larger mandatory assignments. Our experience is that the students produce better code, get a more thorough feedback, and learn more and faster from this set-up. An additional bonus is that it scales very well, and reduces the amount of work from the professor and teaching assistants. We called it virtual-classroom, check it out if you want to have a closer look.
My questions are:
Would it be possible to use the same tool/get the same functionality, but in Classroom?
Does anyone have other experiences with student-to-student peer reviewing?
If you have any questions about different ways of structuring review, and more details on the workflow, please do not hesitate to ask!
I would love to see this functionality in Classroom. In my experience, peer review has been very positive, and very well received students.
I also ask students to send their peer evaluations to the instructor. To avoid conflicts of interest, I want to avoid peer review within groups, that is: I don’t want X to review Y and Y to review X, like this might be the case with virtual-classroom.
I wouldn’t integrate features that could eventually create too specific workflows when the same things can be achieved with usual Git/GitHub tools (maybe with a bit more effort).
For example, having a way to export issues/wikis/projects alongside with the code within the assignment is a kind of feature request that is potentially advantageous for many, whereas populating the GitHub dashboard with the controls that are necessary to force student-student PR is a bit too custom in my view.
By contrast, teachers may assign admin rights to the student receiving the assignment (even marked as private) so that this student is in turn entitled to invite a peer as a contributor to his/her repository for doing the review of the PR used for turning in the solution. All these instructions can be made explicit within the README.md accompanying the assignment, where teachers can also add up further rules.
To find out a suitable peer, the student can access open team discussions taking place in the GitHub organization.
This is a possible way to put forward the need for participation and collaboration to build the community, as it is done in open source development.
Automating the download of student repos and sending them to other students for review can be solved with current tools. But a pull-request based code review UI would be much better. I was wondering also about the possibilities and the key question is always: how does the review (and its source code context) come back to the developer student? Without pull request, they can
write separate documents (no source code context, bad),
write comments into the code (how does that get back into the original repository?)
What we could automate is
Based on a list, assign additional collaborators to the repositories (the reviewers).
Create a review branch and a pull request (for merging everything into the review branch).
Expect N collaborators to review the pull request.
Integrating a workflow specific procedure into classroom would not be so good, but some small tools like the ones in the assistant can be added. I would suggest to increase the number of assistant operations which can be used or omitted in every workflow.