Open source lesson plans

(Hector Alfaro) #1

The open source community has been fantastic for the world of software. What if we could use what we have learned from what the open source community has done for software to benefit the world of education?

To that end, we invite you to use and adapt the lesson plan template introduced in the repo below! Over the next few weeks, we’ll introduce some Git- and GitHub-specific lessons based on this template. We can’t wait to see what you create!

Accessing The Lesson Plans

The lesson plans can be accessed using GitHub Classroom and following these instructions:

  1. Accept this invitation.
  2. Log in with your GitHub username and password.
  3. Give GitHub Classroom the requested permissions.
  4. You’ll be asked to select a team. Join Education Community to join this community. If you’d like to create a space to share lesson plans for your own group of collaborators, you’re welcome to create your own team. However, community contributions will all be in the Education Community team.
  5. Follow the link to the team repo.

Happy planning!

:bookmark_tabs: Lesson plans available in GitHub Classroom

  • :bookmark: Lesson Plan Template
    • the template used for the lesson plans provided as part of this community
    • posted Aug 22, 2016
  • :bookmark: Intro to GitHub
    • a lesson plan that can be used to teach a 90-minute Introduction to GitHub course to beginners
    • posted Aug 25, 2016
  • :bookmark: GitHub for Everyone
    • a lesson plan that accommodates longer delivery time, and aims to teach doing work locally with GitHub Desktop as well as handling merge conflicts
    • posted Aug 31, 2016
  • :bookmark: Git Essentials
  • this lesson plan is intended to be a pure introduction to Git. GitHub is only used as a remote and the lessons lan can be modified to use any Git host.
  • Posted Sep 20, 2016
  • :bookmark: GitHub for Developers
    • an introduction to Git and GitHub on the command line for students with some development experience.
    • Posted Oct 3, 2016

Why is there almost no activity in this community?
:question: What additional teaching tools can GitHub provide?
:wave: Teachers! Introduce yourself here
:wave: Teachers! Introduce yourself here
:wave: Teachers! Introduce yourself here
:wave: Teachers! Introduce yourself here
:wave: Teachers! Introduce yourself here
(Scott Sanicki) pinned #2

(Mark Tareshawty) #3

Hi everyone :wave:

We’ve been getting a few questions as to why we’re asking for so many permissions when you click the link above using GitHub Classroom.

I’d like to take a moment to explain how they work, why we need to request them from you, and how you can manage your organizations privacy while still using our application.

The link above is using the “Group Assignment” feature, this allows a team of students to work on an assignment together in an organization.

This is the page that is shown after a user accepts the permissions that Classroom requests.

When you click on the the “Join” button here is what happens under the hood.


  • Invite you to join the @githubschool organization
  • Accept the invitation to join the organization on your behalf so you don’t have to respond to an email invitation
  • Add you to the Education Community team on GitHub
  • Redirect you to a page on Classroom that will give you a link to take you to the designated repository we created for the team

Accepting the organization invitation on your behalf is the reason why we need full organization permissions. Other than that if all you do is accept the invitation link and join the @githubschool organization, we’ll never use your token again.

If you’re concerned about leaking information about another organization I encourage you to turn on or ask an admin to turn on Third Party Application Restrictions for your organization and reject GitHub Classroom from having access to it.

And as always, if you’re interested about the implementation as whole feel free to check out the source code at :grin:


(Ricky C.) #4

I’ve already comes to terms with the permissions, but I wanted to mention that it’s not easy to get companies to turn on third party application restriction.

The third party application restriction was something added fairly recently (2/15). I noticed that this is turned on by default now. For organizations that were created before this, doing so would invalidate SSH keys and tokens across the company. Right now my solution to get around this is to spin up another organization and migrate applications one at a time over after performing an audit if it’ll break anything.

The second problem lies in that it’s difficult to get larger organizations to make changes on the whim. I think this PR speaks to that.

(John Britton) #5

That’s a clever workaround. I wish there was a way for the user to enable it for their account even if the organizations that they are members of don’t have the setting enabled.

(Hector Alfaro) #6

:sparkles: Thanks to everyone that’s joined our classroom!

In addition to the template introduced earlier this week, you’ll now find a lesson plan for teaching Introduction to GitHub. This lesson plan assumes :zero: knowledge of Git and GitHub, and can be used to teach the lesson in 90 minutes (although the training team at GitHub has done it in an hour, as well!).

If you have any questions about joining the repo on GitHub Classroom, please don’t hesitate to ask! It’s our hope that by making the lesson plans available in this way, you’ll get the chance to experience the process as a student.

(Rob Muhlestein) #7

At one point I started creating something of what I hoped would be a standard way to represent a “course” in the same way that, say, package.json represents everything in a particular node build. I’ve since started migrating to using TOML as the standard (and working on an extension of it called FADB]. The point is, beyond just examples of course lesson plans I wonder if there is interest enough in the technical education community to put together a standard model of representing a course. Perhaps even something like a package manager could be used to download and put in different lessons. URLs could be the unique IDs and dependencies could be even managed in the same way Go or NPM does now. Electron and command line applications could be created to navigate the world of course repositories contributed from everyone in the world. It would leverage everything the software industry has learned about large repository libraries like CPAN//NPM/apt/brew etc.

I would suggest the first step is starting some domain modeling of the educational space and arriving at a common glossary of terms related to courses, lessons, and more.

[By the way, why can’t I update my avatar image?]

A standard format for lesson plans on GitHub
(Briana Swift) #8

Check out the newly launched ‘GitHub for Everyone’ lesson plan! This lesson starts with the basics of collaboration, and transitions to working locally with GitHub Desktop.

For more information about this and other lesson plans, see this post by @hectorsector. :tada: :sparkles: :balloon:

(Hector Alfaro) #9

@robmuh I do think there’s an interest in this, but some uncertainty about how to standardize this process. It sounds like you’ve got some great ideas started and if you started a repo to explore this further I’d :heart: to contribute.

@sanicki may be able to help us figure out why you can’t change your avatar.

(Scott Sanicki) #10

The avatar issue being experienced by some users is being discussed here:

(Hector Alfaro) #11

A new lesson plan is available: Git Essentials. This lesson is great for classes that focus on Git and not necessarily GitHub. GitHub is used only as a remote, and can be easily modified to use any Git repository hosting service as a remote.

(Brendenw) #12

Getting 404 on the Git Essentials link

(Hector Alfaro) #13

Hi @brendenwest, we made these lesson plans available through GitHub Classroom. Check out the instructions in the OP to gain access.

(Hector Alfaro) #14

A new lesson plan is available! GitHub for Developers can be taught over two lessons and a total of 5-6 hours. The lesson is intended for students that have a bit of development experience, as it utilizes the command line in combination with the web UI.

Head on over to the OP for a complete list of the available lesson plans, including this newest offering!

(Vanessa) pinned #15