Hello,
This is my first time digging into Github Classroom resources. Apologies if this is a duplicate topic - my limited search didn’t turn up quick answers.
I’m building a new course for ~15 PhD students, loosely based on the Geohackweek model: https://geohackweek.github.io/. One of the learning objectives is for the students to “Demonstrate best practices for collaborative scientific computing and software development”. To me, this means working in groups to collaboratively solve problems, and using git/github functionality for forking, branching, and pull requests. Essentially, gaining real experience with modern workflows.
I looked at the Classroom model. My initial sense is that it has some great functionality for less experienced students, who might not be ready for intermediate/advanced git. If I understand correctly, all of the necessary forking and pull requests the assignment distribution/submission happens behind the scenes, and the students can focus on learning basic git workflow and the programming concepts. This is great, but I think it may be too limited for my application. I also want to be able to update assignments after distribution to fix issues, if necessary. And I’d rather have my entire course live in a single repo, not have to split content into 10 separate assignment repos each year. Maybe there are workarounds for these issues, or I’m missing something.
Since the quarter has begun, I’ve attempted to design a custom classroom setup.
I have an org set up and two teams: 1) admin and 2) students. I have a private repo where I will prepare modules each week in a new subdirectory containing markdown, Jupyter notebooks, data, and maybe some shell/python code. The “assignment” will likely be a notebook with some tutorial/sample cells, then problems and empty cells for the students to complete. I want them to be able to turn in their completed notebooks, so I can review manually and provide feedback (not necessarily a “right” answer each cell, and I won’t always have rubric, so nbgrader is overkill at this point).
I added the student team to the private repo containing the course material. The students all have access, they can all create their own fork, and can pull any new changes I commit. They can then create a new branch (or add a new notebook), complete the assignment, then “submit” the modified code as a PR in their own fork (or the upstream repo).
Unfortunately, the PR on each student’s private fork is visible to every other student on the team! While these are mature students, and there is some value in seeing others work, I know they will be tempted to copy/paste, or at least consult completed assignments instead of thinking about the problem themselves. I’ve gone through all of the settings for the organization, team, repo, and haven’t figured out a way around this. Any ideas? I suppose I could make a team for each student, but that’s cumbersome and seems to defeat the purpose.
The other issue is diffs on notebooks. I would like to comment on rendered notebook cells, not the raw json, which is not possible with current github functionality. I am hoping to use reviewNB for this, as functionality for this task is forthcoming. As far as I can tell, the Classroom assignment review does not (yet) support rendered notebooks?
Thanks for any thoughts you can provide.
-David