Why version control is required for Comp 20 at Tufts University

Ming Chow of Tufts gives advice on teaching Git and GitHub

Students don’t leave Ming Chow’s course until they are prepared to hold their own on an engineering team. Full stop.

What’s required for those rigorous engineering roles? “Experience making tangible things, mastery of how the web works, and communication,” Ming affirms.

In 2016 he received both the School of Engineering Teacher of the Year and Excellence in Technology Education awards at Tufts, success he reached using GitHub:

I’ve used Git and GitHub for well over five years now. When you take a course with me, it is simply expected that you’re going to learn Git and GitHub.

Ming was inspired to put version control front-and-center in his curriculum from a colleague, Norman Ramsey, who posted the idea to Stack Overflow. “Norman is a man of many great ideas, and this was one of them. I took his idea and executed it.”

To collaborate, you must communicate

It’s rare that developers build something entirely on their own: whether it’s taking over legacy code, reading documentation or submitting bug reports, we’re always in dialogue with others.

The benefit of version control is that it takes snapshots of progress over time, and small commits with clear progress markers give context to your work. Training students to make commit messages that are clear and frequent pays off in the future when other developers are able chip in to help.

Just to make sure that students master collaboration, Ming designs assignments and group projects so students must rely on one another to distribute the workload. He also asks students to give context to their work with GitHub’s documentation features:

In every assignment and every lab, students have to write a README. And a lot of them ask, “Why the heck do we have to write that?” Well, the difference between a good engineer and a great engineer boils down to writing skill and communication. So that’s the whole point of having a README for every project.

Priming collaboration: GitHub users are invited to create a README for every repository.

Collaboration matters because the web is relationships

To demonstrate how web technologies are interrelated, Ming has students evaluate and use third-party tools like APIs, Heroku, and GitHub to build their projects.

As part of that process, students become wise about which APIs to rely on:

One of the nice things about this course is it reveals the ugliness of web development, especially if you’re using other people’s platforms and services. For instance, Instagram recently changed its policy on rate limits, which students had to adjust for in their projects. When you’re dealing with APIs, you’re at the mercy of that third party. In any job, you’ll need to learn how to deal with that kind of risk.

All that said, Ming recommends the third-party tool Heroku for student projects because students can use Git to push changes to a live product.


Screenshot from a COMP 20 project hosted on Heroku. With these end-of-semester projects, students demonstrate their ability to work in teams, apply everything they’ve learned in the class, and have fun.


Screenshot of another COMP 20 project.

Last, Ming points to GitHub itself to show the moving parts of the web in action:

Git and the web are tightly integrated. One of the main points of using GitHub is to show it’s all based on HTTP and HTTPS. That also reinforces the learning of how the web works, as well.

Why is mastery of the fundamental pieces of the web important? Once students master the web conceptually, they will be able to integrate new technologies into this framework, building upon their understanding in the future.

Careers are the sum of our contributions

At the end of the semester, Ming celebrates the end of the course with perhaps one of the best subject lines of all time:

gift image

Ming frames student work as something that’s valuable and in moving a repo to their stewardship, he’s giving students the gift of a portfolio. In the future, students can point to this project as proof of how they communicate with other developers.

As their last assignment, he asks students to frame their repository with one last README: a self-assessments about what they’ve learned in the course. From a student:

The most important thing I learned has been the importance of communication in teamwork. For example, dealing with merge conflicts on GitHub was a big problem in my group, and helped us learn how to discuss our changes with each other, even as we were working on separate parts of the project. Another time we were struggling with making our database queries, and even those group members not working on the server side had to learn about it and help.

A duty to train future leaders

Git and GitHub reinforce the ability to communicate with others around real-life projects, which is why they are required for COMP 20.

Ming believes that teaching computer science is not simply about ones and zeroes but about leadership. The technology of the future relies on the habits he’s building in the classroom.


This is a post in our “Teacher Spotlight*”* series, where we share the different ways teachers use GitHub in their classrooms. Check out the other posts:

Join this week’s discussion in the community forum: How do you introduce Git in your course?


Announcing updates to the GitHub Developer Program

GitHub Developer Program Updates

For over three years, the GitHub Developer Program has been a launchpad for developers—from testing their newest applications to growing their biggest businesses. Now, we’re excited to build on what’s made the program successful for members and make it even more accessible.

Welcome, all developers

We’re opening the program up to all developers, even those who don’t have paid GitHub accounts. That means you can join the program no matter which stage of development you’re in.

New levels and benefits

We’re also introducing participation levels that come with existing program perks from us and our partners, like development licenses for GitHub Enterprise, and a new category of benefits that help you build and scale even faster. 17,000 developers around the world are already aboard—if you’re kicking around ideas for applications that integrate with GitHub, now’s the time to get started!

Here’s how it works: Depending on the size of your user base, you’ll be placed into one of three levels. For each group, we’ve made a set of benefits, resources, and tools available to help you advance to the next stage of development. If you’re already a member of the GitHub Developer Program, you’ll get an email with information about your level and available benefits.

We’re so excited to see the applications you’re building grow, and cheers to the thousands that have already seen success through the GitHub Developer Program: CircleCI, SRC:CLR, and GitPrime just to name a few.

Learn more


Private emails, now more private

GitHub has supported using an alternate “noreply” email address to author web-based commits for a while now. Starting today, there’s another way to ensure you don’t inadvertently publish your email address when pushing commits to GitHub via the command line.

Git uses your email address to associate your name to any commits you author. Once you push your commits to a public repository on GitHub, the authorship metadata is published as well.

If you’d like to ensure you don’t accidentally publish your email address, simply check the “Keep my email address private” and “Block command line pushes that expose my email” options in your email settings.

email settings page with the block command line pushes that expose my email checkbox

You’ll also want to configure Git to use your email. And don’t worry about your contribution graph as all commits will still be associated with your account.

This ensures that all commits will use your alternate “noreply” email address, and we’ll reject any pushes that don’t:

terminal showing the error message seen when a push is blocked by this setting

For those who already have a private email address, check your email settings to ensure this feature is enabled if you’d like to use it. New private emails will have this enabled by default.

For more information on keeping your email address private see the help docs.

Stay safe!


Ninth anniversary sale: 20% off in the Shop and 25% off Satellite tickets

Use GITHUBTURNS9 for 20 percent off all items in the GitHub Shop

We’re celebrating almost a decade of code, collaboration, and octocats! Over the last nine years, our community has grown to almost 20 million users, 57 million repositories, and 100 million pull requests. You’ve shared so much with us, and it’s been a pleasure to help you build software and learn from each other.

As a small thank you for nine years, we’re having a sale. Use the code GITHUBTURNS9 to get 25% off admission to GitHub Satellite and 20% off all items in the GitHub Shop this week, April 10-16.


Celebrating nine years of GitHub with an anniversary sale

Use GITHUBTURNS9 for 20 percent off all items in the GitHub Shop

We’re celebrating almost a decade of code, collaboration, and octocats! Over the last nine years, our community has grown to almost 20 million users, 57 million repositories, and 100 million pull requests. You’ve shared so much with us, and it’s been a pleasure to help you build software and learn from each other.

As a small thank you for nine years, we’re having a sale. Use the code GITHUBTURNS9 to get 25% off admission to GitHub Satellite and 20% off all items in the GitHub Shop this week, April 10-16.


GitHub Satellite scholarships and community partners

GitHub Satellite, Printworks London, May 22-23

If you haven’t grabbed your GitHub Satellite ticket yet, we’re making it easier to get there. A select number of free tickets are now available through scholarships and community partners.

We’re excited to make the two-day conference in London accessible to more people and enhance the experience for everyone who attends. Learn more about free tickets through one of the following channels.

Scholarship applications

We’re welcoming applications for scholarships from the Travis Foundation’s Diversity Tickets, which makes it easier for events to reach a more diverse audience. Applications close on Friday, April 14th, so apply now for a scholarship and spread the word!

Community partners

We’re also partnering with UK-based organizations that support underrepresented communities to distribute tickets to their members:

  • codebar is a non-profit initiative that facilitates the growth of a diverse tech community by running regular programming workshops
  • is an organization that aims to create a safe space for black women to learn and explore technology
  • Code Your Future is a non-profit organization supporting refugees with the dream of becoming developers
  • Nuanced Dinners is a monthly community event for underrepresented groups in tech

If you aren’t eligible for a free ticket, get 25% off your ticket with code GITHUBTURNS9 until April 16th.

We can’t wait to see you at Satellite!


GitHub Issues and user testing as authentic assessment

Alexey Zagalsky quote on learning process

A course organized around users, not exams

In his Startup Programming course at the University of Victoria, Alexey Zagalsky asks students to design products based on user needs.

Working together in teams of four to six, students deliver pieces of the project at key milestones:

He ties the course to the software industry by inviting experienced mentors from local startups to evaluate student work. Alexey says:

While the end-products are terrific, the larger goal is understanding the process of collaborative software development. Students learn how to listen to users and incorporate their feedback in a thoughtful way.

User testing as assessment

After students ship a working prototype, the next milestone requires user testing with their target audience. And of all the challenges over the semester, students wrestle the most with addressing user feedback:

The most frequent point of failure is not understanding their users. And they wouldn’t see where they’ve failed until they try to get people to use their product.

But being able to listen to feedback, and implement it as part of the design process, is quite important. First, to learn, but also to get a job, because it’s not about writing code but actually understanding what needs to be built and how. One student now works at Amazon. Two or three work at Microsoft. One has gone on to become a UX designer. So many students really benefitted from this approach.”

Feedback through GitHub issues

Alexey admits:

You’d be surprised how often students get stuck and never ask for help

So occasionally he pops into student repositories to see what’s going on, test the code himself, and spot mistakes before it’s too late.

If he spots a bug, he’ll open an issue, outline what’s amiss and upload screenshots of the behavior.

Alexey finds a bug in a student project
From the fall 2016 student project DayTomato.

Next, he works with the team to think about potential solutions:

One team wasn’t sure which metrics they should track using Mixpanel. I suggested they track certain metrics at the prototyping, release, and iteration phases of their project. I gave them some perspective on how to prioritize and implement.

Alexey comments on a student project
From another student group, who made a borrowing and lending application called Bümerang.

Iteration for intrinsic motivation

In an Agile classroom, the goal is not the right answer to the problem, but knowing which problem to take on first, and how to solve it in the right increments.

This course isn’t about assessing a final product and saying, ‘You did that wrong.’ Our in-progress ‘checks’ show the students we care about their work; it’s not just some assignment they need to submit for a grade. The way we care makes them more motivated in turn.”

screenshot of presentation on process

Another student project, SmirkSpace, reflecting on its user feedback for Milestone 3.

A collaborative classroom practice

Alexey’s research focuses on how to use industry tools to build software together, to help his students develop the social ties, trust and curiosity to sustain a successful software career.

So he uses GitHub to enable discovery, design, and collaboration:

It’s about changing the way people work: students and educators, students among themselves, and education’s relationship to industry.

I am working from the hypothesis that software built collaboratively, with many voices and opinions, will improve the collective good of future software, period.

How to implement this classroom practice

Alexey documents all of his course designs and publishes the results of his research on student experiences with GitHub, Slack, Stack Overflow and other real-world tools.

Here’s a recent talk on his course design that discusses the benefits (and drawbacks) of using social tools in the classroom:

Student reflections on tools ecosystem

This is a post in our “Teacher Spotlight” series, where we share the different ways teachers use GitHub in their classrooms. Check out the other posts:

Join this week’s discussion in the community forum: How do you use issues in your class?


GitHub Satellite 2017 tickets on sale

GitHub Satellite at Printworks London May 22-23

General admission tickets for GitHub Satellite 2017 are now on sale. Join us at Printworks in London May 22-23 for the regional extension of our flagship product and user conference, GitHub Universe.

This year, Satellite is inspired by the way teams work. You’ll learn how to bring together the people and tools you need to build great software. Find out what we’ve been working on, and hear how other teams use the GitHub ecosystem to customize the way they work.

You’ll also experience digital art installations and eat delicious food while exchanging experiences with developers from all over the world.

Confirmed Speakers

  • Chris Wanstrath, Founder & CEO at GitHub
  • Kir Shatrov, Developer Infrastructure Engineer at Shopify
  • Lauri Apple, Open Source Evangelist/Agile Project Manager at Zalando
  • Jacob Tomlinson, Lead Engineer at the Met Office Informatics Lab
  • Phil Haack, Director of Engineering for Client Apps at GitHub

Workshops cost €99 and will take place on Tuesday, May 23. Take away hands-on experience, and advance your Git and GitHub Skills with our Training Team in the following workshops: GitHub and the Internet of Things: Automate IoT Hardware, Electron: Start to Finish, Creating an InnerSource Culture, and Build a ChatBot. Space is limited.

Dark Matter
An evening event on Tuesday, May 23, Dark Matter is part mini-conference and part after-party dedicated to the intersection between technology and other domains. Your Satellite conference ticket gets you free entry to Dark Matter.

Event sponsorships are all about engaging attendees in memorable ways: art installations, lounges, delectable food, and entertaining auxiliary events are just a few examples. Get in touch for more information.

General Admission tickets cost €349 and include entry to the After Party (May 22) and Dark Matter (May 23). Workshops are not included in the general admission ticket.

Get Tickets

See you in London!

Thank you to our sponsors


Welcoming CodePlex projects to GitHub

Welcome CodePlex projects

Earlier today, Microsoft announced the shutdown plans for CodePlex. We’re working with the CodePlex team to streamline the experience of importing projects to GitHub for CodePlex users.

Microsoft has made significant contributions to open source on GitHub over the years. With more than 16,000 open source contributors, these contributions continue to positively impact both the Microsoft ecosystem and the open source community.

We welcome CodePlex projects to their new GitHub home!


Disabling projects

Not every team manages their work on GitHub in the same way. Now you can disable repository and organization-wide Projects if you’re not using them.

Disable GitHub Projects

Users with admin privileges on a repository can disable Projects by navigating to that repository’s settings and unchecking the “Projects” box. Similarly, organization owners can disable Projects by navigating to an organization’s settings and clicking “Projects” in the sidebar. On this page, unchecking the “Enable Projects for the organization” box will disable organization-wide Projects, and unchecking the “Enable Projects for all repositories” box will disable Projects for all repositories in the organization.

Disabling Projects hides the Projects tab from the repository and organization navigation, removes Projects from Issue and Pull Request sidebars, and hides Project-related events from Issue timelines. Disabled Projects are also inaccessible via API requests.

Projects can be re-enabled at any time, at which point all previously-disabled projects will be restored exactly as you left them.

Check out the help documentation and the Projects API page to learn more.