
For years, GitHub has been free to individual students and teachers for classroom use. Now, we’re making it possible for schools of all types and sizes to adopt GitHub and our education offerings in a single bundle through GitHub Education.
GitHub Education includes access to GitHub, an ever-growing suite of developer tools in the Student Developer Pack, workflows for teachers in GitHub Classroom, and training through Campus Experts and Campus Advisors.
Now we are putting all of these tools and programs together—along with free access to our Business Plan and GitHub Enterprise, so your entire school can get on board at no cost.
We’re excited to expand our commitment to include the features that schools need, like SAML single sign-on and access provisioning, with GitHub Education.
In 2014, we launched the Student Developer Pack, a set of the best tools to help students prepare for careers in the industry. By 2015, teachers asked for help managing their courses with GitHub, so we built GitHub Classroom. Teachers have used it in over 10,000 courses, with their students creating more than two million repositories. Since 2016, students have leveled up their leadership skills through Campus Experts. Now hundreds of Campus Experts around the world are working to build strong technical communities. Earlier this year, we opened up teacher training with our new Campus Advisors program, so that instructors can use Git and GitHub in their courses with confidence.
To date, we’ve helped more than one million students around the globe learn to code, and engage with technical communities to take the next step in their careers.
While many schools teach with GitHub because it is the industry standard for collaborating on software, our partner schools see GitHub Education as a vital way to fulfill their own missions.
Kwame Yamgnane, co-founder of coding school 42 Silicon Valley, says, “Our mission is to prepare tomorrow’s workforce, entrepreneurs, and thinkers with skills and a digital toolset for the 21st-century. We want to make education and pathways to the workforce accessible, and GitHub Education is helping us do that globally.”
In Spain, Ubiqum Code Academy is working to reduce high unemployment rates as well as a skills shortage for IT jobs. “We’re reversing this trend,” says Nathan Benjamin, Head of Product. “At Ubiqum students learn to think like coders and analysts, collaborate on project teams, and use the modern tools essential to IT. The most important of these is GitHub.”
Other GitHub Education schools include Gallaudet University, Santa Barbara City College, St. Louis Community College, and the University of New Hampshire.
Bring GitHub Education to your school.
Anisha Gupta is a recent graduate from Arizona State University, a Campus Expert, and developer workshop leader at events around the world. She joined the GitHub Developer Marketing team in January as a Developer Relations Intern and will be working through Summer 2018. In this post, Anisha shares how she was able to connect with diverse communities and find inspiration, while working remotely from ASU, by laser cutting contribution graphs.
Students don’t realize how much stuff they get for free—I didn’t until I was three months away from graduation. I’d just started an internship on GitHub’s Developer Relations team when I also discovered my university’s laser cutting lab. I passed by the lab daily but never entered because I didn’t even know what laser cutting was. It didn’t occur to me to try it out until I found the perfect design idea: contribution graphs. My contribution graph tells me what I’ve contributed to, how I contributed, and how often I worked on projects.
After talking to a mentor from the GitHub Team, Katrina Owen, I learned that she works daily on her open source project, exercism.io, and it takes 100 commits to turn a gray square green on her contribution graph. This was humbling and inspiring to hear as a recent graduate just about to enter the developer industry. That’s when I decided to laser cut @kytrinyx’s contribution graphs from 2013 and 2014 to remind myself of the effort one has to take to reach their goals. What started as something cool to have on my desk is now my source of inspiration as I look ahead to building my skills as a developer.
I worked with my school’s lab manager to outline the steps for the laser-cut contribution graph I wanted to create. These are the steps I followed:


Once I started laser cutting more contribution graphs, including one I gave to Katrina, I set out to work on a project which allowed all GitHub users to create laser-cut contribution graphs. I consulted Ladies Storm Hackathons (LSH), a Facebook group that empowers women to collaborate and go to hackathons together. I got an overwhelming response from members who were excited to be part of the project.
But now I had to screenshot 20 different contribution graphs, adjust their sizes, and put them into one SVG file. My team suggested that I create an application to automate the process, so I set out to build an app that would let me create laser-cut contribution graphs and then place an order for business cards.
I started out by reaching out to the GitHub Ecosystem team, and Katrina suggested I look at Puppeteer, a headless Chrome tool that renders and screenshots pages without having to pull up the browser itself. I found a Puppeteer sample on Glitch, which I used as the basis of my application. I dove into testing different methods within Puppeteer and was able to grab screenshots of contribution graphs from GitHub usernames. The few lines of code below show the two core methods that powered the application. It navigated to my profile page and took a screenshot based on the clip parameters I specified:
await page.goto('https://github.com/ani6gup');
await page.screenshot({path: __dirname+'/public/puppeteer.png', clip: {x: 320, y:630, width:660, height:100}});
However, the clip parameters were too specific. Each user’s contribution graph is placed at a different pixel based on a user’s descriptions and pinned repositories. In short, the application only worked perfectly with my profile.
I pair programmed with John Crepezzi, who introduced me to Ruby and various gems and packages such as Nokogiri, a parser of many file types, and Octokit.rb, a simple way to connect with the GitHub API. Nokogiri parsed the profile page into one HTML file that’s used to grab and filter the GitHub contribution graph into its own variable (and later converts it to an SVG file):
doc = Nokogiri::HTML.parse(contents)
doc.css('.js-calendar-graph-svg > g').first['transform'] = nil
graph = doc.css(".js-calendar-graph-svg").first
For the front and back side of the business cards, the app provides SVG templates and information from the GitHub profile page are used to fill in the name and handle. Octokit collects the profile information based on the username, and it only requires one line to connect to the API: user = Octokit.user(login). The end product is an application which requires only a username to create three SVG files and place them into a folder.
By automating this process, I was able to print out 28 business cards at one time. The 28 in the photo below are a combination of people who have helped me, community members from LSH, and my GitHub Team.

This project showed me how communities can come together to expand on an individual’s idea to create something larger. Working with contribution graphs helped me find common ground with other GitHub community members. I learned about the projects they worked on and how they came to release, maintain, and make their projects thrive on GitHub. In the past, I was intimidated by profiles with green-filled graphs, but I realized that each person has their own story to tell, no matter what their graph looks like. And there are always opportunities to contribute more.
If you’re interested in expanding the projects you contribute to on GitHub and seeing more of those green squares, here are some resources that have helped me:
If you would like laser cut your own business card or any design you had in mind, find a local makerspace to build things and become a part of a maker community.
So you’ve given an assignment to your students in GitHub Classroom, either individually or in groups. But have you given a thought to how your students will work in a way that you can give them useful and instructive feedback?
One approach is linear: students make one commit a time on a single, master branch. In GitHub, teachers can give feedback on a sequential history by commenting on individual commits: view a diff, hover over any line, then click + to start commenting.

For students and teachers alike, this is a straightforward approach, but it’s a little limited. It doesn’t mirror the workflow software development teams use outside the classroom. And what if we want to work collaboratively, in a way that fits with the branch, commit, and merge tools that Git gives us? Then that’s where pull requests come in.
Pull requests build on the branching model of Git. A pull request is GitHub’s way of organizing the merging of two branches, whether it’s within a repository or in between forks. Pull requests make space for collaboration and conversation during the development process. In this post, we’ll walk through setting up a pull request workflow for submitting student exercises and leaving feedback.
By starting with pull requests, even for individual assignments, students can develop the skills and collaboration mindset that will help them when it’s time to work with others on a team. Pull requests allow students to experiment and document their processes and let educators give feedback on their progress. It works a bit like this:
Compared to comments on commits, a pull request is a great place for discussion. Authors and reviewers can comment on specific lines, leave Markdown-formatted messages, or give emoji reactions 👍⭐. The student can even push new commits to the to-be-merged branch, amending the original pull request.
When the student and teacher are happy with the result, they can press the big green Merge pull request button, bringing the changes into the master branch (or another development branch). After a successful merge, you can tidy up by deleting the dangling branch with a one click.
For group assignments, pull requests become an especially important tool for coordinating the work of many. In a collaborative workflow, pull requests open up new ways for educators to understand their students’ development. It works like this:
As in individual assignments, pull requests give teachers the chance to peek into their students’ process. The repository’s own Insights tab can give a big-picture view of the students’ work, such as the number of open and merged PRs, frequency of commits, or who has contributed to the repository. A closer look at the pull requests themselves can show the team dynamic: how quickly students respond to PRs, what they say in comments to each other, and how they resolve conflicts.

Groups’ pull requests become a great place for teachers to give feedback, continuing the students’ conversations. Want to bring something to a specific student’s attention? An @mention—the @ symbol followed by a username—notifies the student directly. You can even comment on merged and closed pull requests, just like you would an open one.
Whether your students are working individually or in groups, pull requests are a great way for them to sharpen their workflow and for educators to guide their students. To learn more about using pull requests to work collaboratively, check out the Campus Advisors training module 3—it goes in depth on pull requests, resolving conflicts, and more—or scope out the GitHub Glossary to refresh your collaboration vocabulary. If you’re having any trouble wrapping your head around all this, check out how other teachers are learning about pull requests in the GitHub Education Community.
If so, chances are you have a pretty lengthy commit history by now. Here’s a workflow, inspired by Dr. Diosino, that gives students a clean commit history so they won’t be distracted by your past activity. Here’s how to do it:

This weekend, the GitHub Education Team will be hosting an evening meetup for Computer Science teachers in Manchester, New Hampshire at the Consortium for Computer Sciences in Colleges. Join GitHub staff and educators from the Northeast region at The Manchester Makerspace on Saturday, April 21 at 6 pm. If you’re interested in integrating Git or GitHub into your classroom, we’ll be providing an introductory presentation and answering any questions you might have. Afterwards, we’ll socialize and enjoy dinner and refreshments.
We hope to see you there!
Date: Saturday, April 21 Time: 6-9 pm ET Address: Manchester Makerspace, 36 Old Granite St, Manchester, New Hampshire 03101
Thousands of teachers use GitHub to host their courses, distribute assignments, and get insight into student progress. Many teachers open source their materials, so other teachers can use them. Between Massive Open Online Courses (MOOCs) and custom lessons from individual teachers, there’s plenty of materials for new teachers to adapt and reuse in their classrooms.
After seeing the growth of educational repositories on GitHub, we put together a list of some of the most popular courses. Courses were selected based on forks (repository copies) and stars (bookmarks that indicate interest). You’ll also find documentation for each of the repositories to guide you through the course materials.
If we missed a course, or if you’d like yours included in a more extensive list, let us know in the GitHub Education Community.
1. Ada Developers Academy’s Jump Start Curriculum (223 stars)
ADA’s Jump Start Curriculum helps prospective students become familiar with the tools, concepts, and vocabulary they’ll need to be successful in the larger program. Each lesson begins with stating learning goals, so students can be sure they’re retaining what they need to prior to entering the program.
2. React From Zero (207 stars)
React From Zero is a straightforward introduction to React that is broken into 17 parts. Each part of the tutorial is in the code for that lesson, using comments to explain concepts in React and examples right in the editor. Each lesson also links to a preview of how the code renders in a browser, so you can follow along and immediately see the outcome of code while you’re learning.
3. Hear Me Code’s Python Lessons (199 stars)
Hear Me Code, based in Washington, D.C., is an organization that offers free, beginner-friendly classes to women. This repository has a “Start Here” guide for those who’ve never installed or run Python before. The lessons are broken into 16 sections, each covering a different concept. Hear Me Code’s slides are also hosted on GitHub, so it’s easy for you to follow this curriculum on your own.
4. Ada Developers Academy’s Textbook Curriculum (154 stars)
Ada Developers Academy is a tuition-free program for women and gender-diverse people to learn software development. Their first repository on this list is their textbook curriculum, which anyone can use. It touches on everything from Git and agile workflows to Ruby, Rails, databases, JavaScript, and Backbone.js.
This repository is an 11-week prep course for programming competitions, but it can be used to practice algorithm challenges for interviews or improve algorithmic thinking. Prior programming knowledge and familiarity with data structures will help students who want to get started with this advanced course.
1. Stanford TensorFlow Tutorials (2,452 forks)
These tutorials go along with Stanford’s TensorFlow for Deep Learning Research course. The syllabus, slides, and lecture notes are all available on the website, and each week’s assignments and examples are available in this repository.
2. Deep Learning Specialization on Coursera (1,133 forks)
This student-created repository includes all work from Coursera’s Deep Learning Specialization programming assignments. While this repository itself is not a curriculum, it’s a helpful guide for self-teaching and reading more about the concepts and solutions from this deep learning series of courses.
3. Creative Applications of Deep Learning with Tensorflow (591 forks)
This repository is comprised of assignments and lecture transcripts for Kadenze Academy’s Creative Applications of Deep Learning with TensorFlow curriculum. There are a total of five courses, and the repository also contains extensive documentation on setup and getting started with the tools students will need.
4. Practical RL: A course in reinforcement learning in the wild (401 forks)
This course is taught on-campus in Russian at the Higher School of Economics, but its online version is available to both English and Russian speakers. The entire course is nine weeks long, and the repository also contains bonus materials for students to explore after completing the curriculum.
5. Data Science Coursera (152 forks)
Michael Galarnyk, a Data Science M.A. student, decided to document his journey through Johns Hopkins’ Coursera Data Science curriculum as a supplement to his program at UC San Diego. Along with a directory for each course and its assignments, there’s also a link to a blog post reviewing each course week-by-week, so prospective students can get an idea of what to expect each week.
For teachers who want to explore more courses, we posted a more extensive list in the GitHub Education Community. You’ll find tips, tricks, and scripts from teachers around the world who are passionate about computer science education.