I use Github in my courses, and I was excited when I saw this. Three responses:
1. The permissions screen immediately irked some of my collaborators – why does this need access to _everything_, including deleting repositories that already exist? They pointed out that if one privacy/security-conscious student makes a stir about this in an undergrad course, it's all of a sudden a potentially huge issue. And I teach my students to be suspicious of screens that ask for too many permissions, with good reason!
2. Can I connect this to my institution's internal Github enterprise? I currently manage assignment distribution and collection with hand-rolled Github scripts that run against our institution's deployment. Do the teachers_pet scripts work in that environment as well, or is there Classroom-specific setup required to make that work?
3. On the screen where I choose organizations, there was a text box for a new organization, and a dropdown. I thought I was making the choice to create a new organization, but it seems to be creating all the repos in an existing organization selected in the dropdown. This has caused a lot of folks to all of a sudden get signed up for automatic notifications who are members of the selected org. That's annoying, now I have to clean up after Classroom and figure out what went wrong. I doubt that adding random student repos to an existing organization is ever what a new user wants, and I tried to follow the flow that (I thought) would not accidentally do that. It seems like a Classroom organization is a different thing from a Github organization?
1. We're working with the OAuth permission model that exists today, but I've passed along your feedback to our platform team. The generic use case for Classroom for GitHub is to create a new organization to use for student assignments and use Classroom for GitHub to manage that organization. If / when you decide to stop using Classroom for GitHub you can remove your organization and it will clean up after itself.
3. I'm having a hard time understanding your situation, but would appreciate it if you could file an issue at https://github.com/education/classroom/issues/new, can't promise that it will be fixed immediately, but need to gather feedback like this.
Thanks for the response! Related to (1), the issue was more that when a _student_ visits an assignment page, they get the same big permission list as an instructor; it makes sense that instructors might need a plethora of permissions. Is that necessary for students?
A couple of things I've found, using GitHub for individual assignments (I also use it in another unit for a class-wide project, where it works very well)
- user management is a bit of a pain. Students are always late getting their github usernames to me, often with typos, and there are three different dates during term when the class-list changes (last day to enrol, last day to withdraw without incurring a HECS fee, last day to withdraw without academic penalty). If you could do an LTI endpoint, that would be helpful, as most LMSs support LTI. At the moment, we're considering running GitLab instead, as that supposedly has LDAP and so can use our university server logins.
- using teachers-pet (GitHub's command-line tools) for assignments this term, I found an issue where a student made a public fork of their assignment repository. Unfortunately this is problematic, as it could cause students to (accidentally) run into trouble with university plagiarism policies (where putting your work up for others to plagiarise in an assignment is also outlawed).
Those are two very common issues that we've tried to address with Classroom for GitHub.
You no longer need to collect usernames, just distribute an invitation URL and have your students include their student number or name in the repository description or README.md.
Forking is intended as a collaboration tool, so it makes sense that every member of the network can see all forks in the network. In a classroom setting, however, this might not make sense. Classroom for GitHub doesn't utilize forking, instead it creates independent repositories and pushes the starter code without using forks.
As for #1, students and instructors can simply create a new github account specifically for any given course and not connect it to any of their personal information or other github accounts/repositories if they are security-conscious.
This is a highly discouraged solution, multiple accounts lead to trouble with students and their local git configurations. They have to be knowledgeable enough to keep things separate.
I developed a similar system when I was teaching a web development course [1] last year. It's open-sourced at https://github.com/qrohlf/gradebook for anyone interested.
I think this is absolutely the way forward for technical courses (where the prof and maybe students already know how to use git, or can be expected to learn).
A course is kind of like a web app with a lot of common functionality. Too bad most LMSs seem to think we want to write our course in a little text box with no version control (even newer ones like Canvas make this assumption).
I agree, I think students should be learning how to set up version control very early on in 101 level classes. If for nothing else, it will preserve their work and ensure nothing is lost. I wish I had all of my work from University in git. I still have a lot of it, but things were inevitably lost because I did not use any kind of version control.
Also I like Markdown as a format for taking notes when you want to type them. Github renders these very nicely and its very convenient. However, I wish they had support for latex equations (inline or block).
I think this is the 'backend' for courses, but there has to be a better frontend for authoring of assignments, viewing those assignments, and viewing and optionally grading the completed assignment.
Way forward? Stuff like this has existed for years already just not as well marketed maybe.
At my university we typically use a single shared svn repository. Permissions restrict which directories are readable and writeable to students/groups. Performing reviews is a problem but apart from that it works perfectly even in classes with hundreds of students.
Classroom for Github automates repository creation and access control, making it easy for teachers to distribute starter code and collect assignments from students.
What's the cost of this? And who pays it (e.g. each individual student, the school/department/grader, etc)?
I like GitHub a lot, but I will say they can be rather pricey. $7/month for their smallest private plan, you can literally run your own VM in the cloud (e.g. on AWS/Azure) for that amount (and run Gitlab), get a terabyte of cloud storage (which you can store hundreds of Git repositories in), or go to one of their competitors.
And, yes, this absolutely does require a private repository if you want to avoid cheating.
This needs some videos to show what it can do. Not many teachers know what GitHub is and if I wanted to suggest this as a possible option I could not explain it to them.
Maybe a video showing the creation of an assignment and sending it out (url via email, is it?), students completing the assignment, and teachers looking over a completed assignment.
If that is a poor example of what this does then I missed the point entirely.
Anytime there's a GitHub story on HN, someone mentions an alternative. I also find GitHub pricey, at least for personal usage. But I'll never self host a solution or go with a competitor as long as GitHub continues to be the most convenient option and delivers the best user experience. I don't see that changing anytime soon.
As a teacher of non-CS courses, it's nearly drool-worthy as an alternative to Blackboard but the private Repo's are not free and this is a deal breaker.
As I recall, that's only for use in the classroom, to get students hooked. If you're doing research, or anything other than teaching a class, you pay for private repos. Feel free to correct me if I'm wrong.
Bitbucket gives you a free unlimited account if you sign up with a .edu email address.
[Edit: You actually get five free repos. Still limited and not at all the deal you get with Bitbucket.]
Blackboard is an actual piece of shit, though. It's slow, still has trouble with most browsers, and doesn't get any of its features right. The four years of crap I had to put up with for that site are still fresh in my mind.
To be a bit more solution-oriented, most students and teachers don't care about the majority of what BB offers. They want:
* Upload and administer documents
* Assign grades to assignments
* Access Control to the above
* Speed across all browsers for the above
If Github can get these right, I don't see why they couldn't have a strong offering.
Blackboard is the perfect example of buying by checkboxes: it ticks the most boxes, but since the person who buys the software rarely has to use it (if it all), they don't care that it does all those things terribly.
Blackboard is so shit that sometimes you look at it and out loudly say "what the fuck is this shit and who thought it was a good idea?". I remember trying to upload a document, dragging the file to the upload button and the file opening in the browser. Whereas if they used the standard _HTML4_ file input type, you can drag files on top of them to select them without browsing to its location.
I cruise without Java and Flash so it must have been some sort of hacked together proprietary upload button which triggered a regular file dialog anyway (JavaScript was enabled, I think). And that's just the tip of the iceberg. If there's any space to disrupt it's e-learning, but that's probably more of a deal-cutting job with major institutions than having an objectively better (looking) product.
I could see a company doing something shady like collecting metrics on students across different types of classes to eventually sell to someone. I can't for the life of me understand why that kind of data would be valuable, but I'm sure someone could make use of student metrics for advertising purposes.
A company that creates discussions boards for courses is already doing that. They are called Piazza (https://piazza.com/) and used the student data they have been collecting to Piazza Careers: https://recruiting.piazza.com/
It has caused some heated discussions at our university regarding student privacy.
Yep, I used Piazza extensively in school. As a tool, it was actually pretty good and students used it heavily. Unfortunately when they shifted their focus to selling students to top companies it soured the taste in my mouth a bit.
I see a lot of positives in that system, but it feels like a way for companies to more easily ignore candidates who aren't from top schools. My concern would be further ostracizing qualified students who don't go to top schools.
Looks great at first glance I'll incorporate it into my new class eventually.
I read through the education stuff and if I'm reading correctly one can get a free private repo for coursework? My class has two groups of 30 and they'll eventually have to complete a longer project in subgroups of 3-5. Any recommendations for that setup? I'm assuming there's no free plan for this as it would essentially require ~20 private repos. Those could get wiped every semester though.
I've def. scribbled down that I want to teach git(hub) ASAP because learning to use it from the getgo in the first semester is huge.
As a teacher you can get as many private repositories as you need for your course for free. Just make a request here: https://education.github.com/discount
same here. I see people being very cautious about enabling this when its defaulted to enable the organizations i have access to. There must be a way to restrict this to certain organizations no ?
GitHub's student SaSS package is the antithesis of educational. Students cannot learn, modify, and share any of this software. I see nothing but praise for GitHub in almost everything they do, but from my perspective they are doing great harm and have now directed their attention at the future generation of hackers. CS students need hackable software, free software, to learn from and build things with.
However, a major hurdle at US universities is FERPA [1]. FERPA (but really the fear of litigation under FERPA) is one reason why universities host their own software.
I fully agree -- people underestimate this issue. We recently had a long discussion among the CS faculty on using GradeScope (a software for grading paper exams). It looks great and I would love to use it, but the feedback was that the University would not approve of it for privacy reasons. Even using Google forms is problematic for that.
How to actually try it? I've created free organization under my GitHub profile, but Classroom still says me "You’re not managing any organizations yet."
1. The permissions screen immediately irked some of my collaborators – why does this need access to _everything_, including deleting repositories that already exist? They pointed out that if one privacy/security-conscious student makes a stir about this in an undergrad course, it's all of a sudden a potentially huge issue. And I teach my students to be suspicious of screens that ask for too many permissions, with good reason!
2. Can I connect this to my institution's internal Github enterprise? I currently manage assignment distribution and collection with hand-rolled Github scripts that run against our institution's deployment. Do the teachers_pet scripts work in that environment as well, or is there Classroom-specific setup required to make that work?
3. On the screen where I choose organizations, there was a text box for a new organization, and a dropdown. I thought I was making the choice to create a new organization, but it seems to be creating all the repos in an existing organization selected in the dropdown. This has caused a lot of folks to all of a sudden get signed up for automatic notifications who are members of the selected org. That's annoying, now I have to clean up after Classroom and figure out what went wrong. I doubt that adding random student repos to an existing organization is ever what a new user wants, and I tried to follow the flow that (I thought) would not accidentally do that. It seems like a Classroom organization is a different thing from a Github organization?