Best practices to use Classroom in class

I wonder how you teachers integrate GHCR in your curriculum. And how you instruct your students to install the proper tools. I’ve been using GH for about four semesters now with very mixed results. My students bring their own devices and there have not been a single class were not one or two (or more) students are confronted with installation difficulties prohibiting to finish assignments normally. From logon problems to software like GHDT not allowing sign in to commits or push request not working for whatever reason. There are at this moment to many points during installation that can go wrong apparently.

How do you work this? or is this something I have to live with were students use good ol zip’n email to hand-in their work? Do you use a controlled school lab? virtualisation? docker? What is your solution to keep the critical failure points to the minimum?

1 Like

I’ve more or less given up on having students set up development environments on their own machines. Too many things can go wrong, and I don’t have access to help debug. I’ve been focusing on various virtualisation solutions.

Last term I started using Azure Lab Services, using it to provide the students with a virtual environment where all necessary tools are pre-installed and configured. They then clone their GHCR assignments to this environment to work on them. I’ve found it really helpful in removing a lot of the pain points where things can go wrong, and it’s easy to use. Also, I can access their machine to help debug issues rather than relying on emailed screenshots of partial error messages. In the past I’ve also used Gitpod with success, and am looking into Codespaces.

That said, I think some students will always find a way to get themselves into tangles trying to commit and push work to Github, I’m happy for this to be one of the things they learn/get experience with, and when I can access their VMs then I can help get them untangled. Sometimes they do something so weird I get to learn new git commands too!


My first assignment of the semester is basically just reading the syllabus and getting all the tools they need set up. For some students it’s a breeze, and for many others we have to do a lot of local development environment troubleshooting. I’ve written up the common points of confusion in a troubleshooting guide. But the students make extensive use of office hours and our Canvas discussion board for figuring out all their various problems. I’ve found it valuable to do it anyway rather than a web-based solution because it reduces the amount of “magic” involved in development. They actually have to face the command prompt / terminal, git, plain text editors…


We’ve started using Git in combination with GitHub Classrooms about 4-5 years ago in our Associate Degree Computer Programming program at Howest.

To enable all our students in using Git in a proper and correct manner we created a module in our program called Continuous integration basics. This enabled us to integrate the usage of GitHub Classrooms across all our modules in our program quite easily.

After one year we made the switch and use GitHub Classrooms for;

  • All course examples
  • All excercices
  • All assignment
  • All exams

Some insights in our stats from last academic year:
Some Howest statistics of previous semester:

  • 300 students and 15 lecturers used GitHub in all courses of the curriculum, we’re all huge fans :blush:
  • We used 27 organizations (one per module) and even got affiliated courses at Howest (Online and Offline Graphics Design, Systems and network administrator) to start using this infrastructure.
  • 53 GitHub Classrooms were created, containing dozens of individual and group assignments
  • Our students and lectures created +10k of repositories (and that’s yearly :star_struck:)
  • GitHub published our Customer story

GitHub in combination with GitHub Classrooms has become our one stop shop in terms of remote repositories and course material.

Feel free to reach out if needed/wanted and I’m more than willing to share our way of work in a Teams call or via any other means if this would help you out in any way.


A web-based solution doesn’t necessarily mean “magic” which shields students from command prompt / terminal, git, plain text editors. I’d argue that it rarely does. I guess you’re referring to the sort of all-in-one IDE environments like There’s lots of web/cloud-based solutions which do require students to deal with terminal/git/text editors (e.g. Gitpod, Codespaces, Codio, Azure Lab Services). I expect my students to deal with all of those things. They just do it in a managed environment and don’t have to install and configure them themselves is all.


Hey @ConsoleFriend I share your enthousiasm for the potential.

Unfortunately I teaching not c/s degree level students but apprentice web developers. Some lean more to the design side of things and are wizards in InDesign and Illustrator. Yet on the c/s they’re easily baffled by complexity. They will, in other words, never become an console friend (forgive me the pun :smiley: )

But I’m trying different coping strategies here and what I’ve been seeing sofar helps a lot.

But why not get in touch to improve my skills and extend the options.

@ConsoleFriend 's story is excellent, congratulations.

The bottom line is that we have to prepare students for industry and part of that is learning how to configure software, dev tools and environments. The question is when to expose them to this.

I have been using Git & GitHub in my classes for about five years now. During that time I learned that if you want your students to effectively use GitHub (inc classroom) then you are going to have to teach your students Git fundamentals (command line) at some point. After they master the fundamentals let them use the GUI tools or IDE integrations. Once students understand Git they are much less likely to tie themselves into knots.

To solve this issue, I ended up creating about 4 hours of instructional videos to cover Git fundamentals and GitHub.


I totally agree about students having to deal with command line and command line git. IDE integrations and GUI tools present too much “magic” that inhibits their understanding of what’s going on, and it’s fundamental and highly transferable. (Gitpod, btw, is just an online linux-based dev environment that requires use of command line and command line git). As a junior dev in industry myself I used a git GUI for a year or so and in hindsight it held me back in becoming more of a git power-user.

I’ve started making a distinction between the fundamental and transferable things (general command-line, git) and the more specific and less transferable things (e.g. setting up the dev environment specific to the tech stack used in the module I’m teaching). In industry they’re going to set up a tech stack specific to the product they’re working on, and this will be different product-to-product So grappling with issues around specific versions/libraries of node/ruby/python/whatever for me gets in the way of the module’s learning goals and doesn’t add a whole lot of transferable value, and I’m happy to abstract it away, while maintaining the fundamental basics of command-line and git. And there are cloud-based tools that facilitate this really well.

1 Like

Did the same thing here. Made a (German language) cheatsheet for git commands as the ones I’ve found are next to useless. Still even if students follow the steps in the video carefully there are many things that can go wrong in a BYOD situation.

I agree that students with a close to technology situation need to know these things. I made a mental note to include installation and activation of a Git(hub) account part of the yearly setup procedure we do with our students and the equipment they bring.

That’s it @john-french As an c/s teacher I attempt to take out the “magic” of their dayly experience with laptop and smartphones.

But it is understandably hard for them. Much of GitHub Desktop or the VSCode extension GitHub Pull request and Issues or GitHub Classroom is, however, quite obscure for the careless viewer. Where are the credentials stored? how do these work together? how with git-scm?.

Anyway I’m in the same book.

1 Like