SlideShare a Scribd company logo
Introducing CS
students to
open source
ELLEN SPERTUS
MILLS COLLEGE
OCTOBER 19, 2020
My open source
projects
Introducing CS students to open source
Introducing CS students to open source
Skills and Tools
Command-line usage
Git and GitHub
Canonical
repository
Class
repository
Individual
repository
Local
repository
Clone Push
Pull
Fork
Pull
request
Fork
Pull
request
Communication
communication and community
posting complete and useful information
respectful communication
Imposter
syndrome
https://stackoverflow.blog/2019/10/29/my-most-embarrassing-mistakes-as-a-programmer-so-far/
Choosing a
good
project
Connections
Active and
friendly
developer
community
Selecting an issue
Look at labels, such
as “good first issue”
or “beginner
friendly”.
Don't choose high-
priority issues.
Some issues are
invalid.
Discuss with
maintainers before
starting.
Claim the issue if
you want to work
on it.
Be prepared to
start over with a
new issue.
Needing to
start over
Useful techniques
teams of 2-3
students per issue
weekly meetings
of 1-2 hours
Slack server Help drafting
messages
Getting a handle on large codebases
Projects
2012
2014
Trevor Adams
Most homework assignments in CS classes either start from scratch or build
on top of straightforward code and require relatively simple interactions with
an existing API. In contrast, App Inventor was an ongoing project with
• many contributors
• a sizable codebase
• elements that were deprecated
• elements that were in progress, and
• elements that hooked into other codebases.
It was the first time I really had to understand and work with a large amount
of code written by someone other than myself, figuring which parts I needed
to deal with and how they worked, and just as importantly, figuring out which
parts I could safely ignore.
These are skills that are crucial for working on real software development
projects, and it made me a lot more comfortable when I had my first industry
experience and was faced with the same situation. Knowing that I could
understand and successfully modify real, deployed code gave me a lot of
confidence in myself as a programmer.
2012
2014
Colin Lockard
University of Washington
PhD candidate
Working on App Inventor was also my first experience using a real build system,
with complex dependencies that didn't always compile correctly. In fact, if I recall
correctly, my first week or so on that project was largely spent on Stack Overflow
trying to resolve some issue related to competing C compilers. Not the most
exciting work, but very educational. When I later went off to NASA for an
internship, I arrived to find a group of other interns struggling with build problems
and I felt like a superhero when I was able to immediately help them make
progress.
2014
2016
Kate Manning
Emily Kager
2019
2020: Production Java
Conclusions
Benefits
Working with production codebases and toolsWorking
Learning how to communicate online in professional
settingsLearning
Solving real-world problems with actual usersSolving
Feeling like real developersFeeling
Having support throughout the processHaving
Challenges
Faculty time
requirements
Students who
feel like they
don't belong on
a team
Students who
need more
structure
Unpleasant
surprises
Key points to
communicate
to students
Participating in open source makes you part of a
large and important movement.
Even a small contribution is a big deal – and may
take all semester.
You can still be successful even if your PR can't
be merged.
Most people will be helpful and welcoming.
You're not on your own.
Questions and
comments?
ellen.spertus@gmail.com

More Related Content

What's hot (19)

PDF
[EN] Great software development quotes
Eudris Cabrera
 
PPTX
Three Developer Abilities They Dont Teach In College
Jacinto Limjap
 
PDF
My Career Journey
Ryan Burgess
 
PDF
redirectGiraffe Presentation 2
Myles Pollie
 
PPTX
The Art Of Documentation for Open Source Projects
Ben Hall
 
PPTX
Case Study: xAPI for vets and pets
Megan Bowe
 
PDF
inquestion
Samuel Giles
 
PDF
SAMR
brandonmorton
 
PPT
Integrating Technology2013(revised)
Randy Backman
 
PPTX
Life of a Remote Developer - Productivity tips (MSBuild 2020)
Davide Benvegnù
 
ODP
From TrainedMonkey to Google SoC mentor – How to become an OOo developer
Alexandro Colorado
 
PPTX
Building a reputation in IT
YitzikCasapu
 
PDF
Things I wished I knew while doing my tech bachelor / undergraduate
Geshan Manandhar
 
PPTX
Digital content leading practice _webconference
Colleen Hodgins
 
PDF
Oracle Code Brussels 2017 - The DevOps disaster
Bert Jan Schrijver
 
PDF
Digital Ocean Amsterdam meetup March 2017 - The DevOps disaster
Bert Jan Schrijver
 
PDF
Sacrificing the golden calf of "coding"
Christian Heilmann
 
PDF
JavaOne 2016 - The DevOps Disaster
Bert Jan Schrijver
 
PDF
How to Lose a Dev In 3 Ways
Jamie Wittenberg
 
[EN] Great software development quotes
Eudris Cabrera
 
Three Developer Abilities They Dont Teach In College
Jacinto Limjap
 
My Career Journey
Ryan Burgess
 
redirectGiraffe Presentation 2
Myles Pollie
 
The Art Of Documentation for Open Source Projects
Ben Hall
 
Case Study: xAPI for vets and pets
Megan Bowe
 
inquestion
Samuel Giles
 
Integrating Technology2013(revised)
Randy Backman
 
Life of a Remote Developer - Productivity tips (MSBuild 2020)
Davide Benvegnù
 
From TrainedMonkey to Google SoC mentor – How to become an OOo developer
Alexandro Colorado
 
Building a reputation in IT
YitzikCasapu
 
Things I wished I knew while doing my tech bachelor / undergraduate
Geshan Manandhar
 
Digital content leading practice _webconference
Colleen Hodgins
 
Oracle Code Brussels 2017 - The DevOps disaster
Bert Jan Schrijver
 
Digital Ocean Amsterdam meetup March 2017 - The DevOps disaster
Bert Jan Schrijver
 
Sacrificing the golden calf of "coding"
Christian Heilmann
 
JavaOne 2016 - The DevOps Disaster
Bert Jan Schrijver
 
How to Lose a Dev In 3 Ways
Jamie Wittenberg
 

Similar to Introducing CS students to open source (20)

PDF
What schools should be teaching IT students
Andy Lester
 
PPT
How to engage students in real open source projects
scottw
 
ODP
How To Engage Students In Real Open Source Projects
here_and_there
 
PDF
Teaching open source 2016
Craig Gardner
 
PPT
What We've Learned From Building Basie
Greg Wilson
 
PDF
Open source 101 for students
Sage Sharp
 
ODP
Student Pipeline to Open Source Communities using HFOSS
All Things Open
 
ODP
Higher Education in the Open Source Ecosystem
Deborah Bryant
 
KEY
Open Source Compliance at Twitter
Chris Aniszczyk
 
PDF
How To Be A Real Developer In Two Easy Steps
northofnormal
 
PDF
OPS_Unit-2--Open Source Demystifying.pdf
SonaShaiju1
 
PDF
The Times They Are a-Changin’: A Data-Driven Portrait of New Trends in How We...
Heather Miller
 
PDF
Organization strategies to increase development productivity
Aaron Grant
 
PPTX
Creating and Maintaining an Open Source Library
Nicholas Schweitzer
 
PDF
Open Source in Real Life
Kenneth Geisshirt
 
PDF
How to Run a Successful Open Source Java EE Project
philipdurbin
 
PDF
How to Get a Software Job w/o Experience
Charles Anderson
 
PDF
Sustaining Open Source Software
Stephen Walli
 
PPT
Open source software by Tushar Joshi
Tushar Joshi
 
PPTX
Growing Developer Community One Pull Request At a Time
Alex Bulankou
 
What schools should be teaching IT students
Andy Lester
 
How to engage students in real open source projects
scottw
 
How To Engage Students In Real Open Source Projects
here_and_there
 
Teaching open source 2016
Craig Gardner
 
What We've Learned From Building Basie
Greg Wilson
 
Open source 101 for students
Sage Sharp
 
Student Pipeline to Open Source Communities using HFOSS
All Things Open
 
Higher Education in the Open Source Ecosystem
Deborah Bryant
 
Open Source Compliance at Twitter
Chris Aniszczyk
 
How To Be A Real Developer In Two Easy Steps
northofnormal
 
OPS_Unit-2--Open Source Demystifying.pdf
SonaShaiju1
 
The Times They Are a-Changin’: A Data-Driven Portrait of New Trends in How We...
Heather Miller
 
Organization strategies to increase development productivity
Aaron Grant
 
Creating and Maintaining an Open Source Library
Nicholas Schweitzer
 
Open Source in Real Life
Kenneth Geisshirt
 
How to Run a Successful Open Source Java EE Project
philipdurbin
 
How to Get a Software Job w/o Experience
Charles Anderson
 
Sustaining Open Source Software
Stephen Walli
 
Open source software by Tushar Joshi
Tushar Joshi
 
Growing Developer Community One Pull Request At a Time
Alex Bulankou
 
Ad

More from All Things Open (20)

PDF
Agentic AI for Developers and Data Scientists Build an AI Agent in 10 Lines o...
All Things Open
 
PPTX
Big Data on a Small Budget: Scalable Data Visualization for the Rest of Us - ...
All Things Open
 
PDF
AI 3-in-1: Agents, RAG, and Local Models - Brent Laster
All Things Open
 
PDF
Let's Create a GitHub Copilot Extension! - Nick Taylor, Pomerium
All Things Open
 
PDF
Leveraging Pre-Trained Transformer Models for Protein Function Prediction - T...
All Things Open
 
PDF
Gen AI: AI Agents - Making LLMs work together in an organized way - Brent Las...
All Things Open
 
PDF
You Don't Need an AI Strategy, But You Do Need to Be Strategic About AI - Jes...
All Things Open
 
PPTX
DON’T PANIC: AI IS COMING – The Hitchhiker’s Guide to AI - Mark Hinkle, Perip...
All Things Open
 
PDF
Fine-Tuning Large Language Models with Declarative ML Orchestration - Shivay ...
All Things Open
 
PDF
Leveraging Knowledge Graphs for RAG: A Smarter Approach to Contextual AI Appl...
All Things Open
 
PPTX
Artificial Intelligence Needs Community Intelligence - Sriram Raghavan, IBM R...
All Things Open
 
PDF
Don't just talk to AI, do more with AI: how to improve productivity with AI a...
All Things Open
 
PPTX
Open-Source GenAI vs. Enterprise GenAI: Navigating the Future of AI Innovatio...
All Things Open
 
PDF
The Death of the Browser - Rachel-Lee Nabors, AgentQL
All Things Open
 
PDF
Making Operating System updates fast, easy, and safe
All Things Open
 
PDF
Reshaping the landscape of belonging to transform community
All Things Open
 
PDF
The Unseen, Underappreciated Security Work Your Maintainers May (or may not) ...
All Things Open
 
PDF
Integrating Diversity, Equity, and Inclusion into Product Design
All Things Open
 
PDF
The Open Source Ecosystem for eBPF in Kubernetes
All Things Open
 
PDF
Open Source Privacy-Preserving Metrics - Sarah Gran & Brandon Pitman
All Things Open
 
Agentic AI for Developers and Data Scientists Build an AI Agent in 10 Lines o...
All Things Open
 
Big Data on a Small Budget: Scalable Data Visualization for the Rest of Us - ...
All Things Open
 
AI 3-in-1: Agents, RAG, and Local Models - Brent Laster
All Things Open
 
Let's Create a GitHub Copilot Extension! - Nick Taylor, Pomerium
All Things Open
 
Leveraging Pre-Trained Transformer Models for Protein Function Prediction - T...
All Things Open
 
Gen AI: AI Agents - Making LLMs work together in an organized way - Brent Las...
All Things Open
 
You Don't Need an AI Strategy, But You Do Need to Be Strategic About AI - Jes...
All Things Open
 
DON’T PANIC: AI IS COMING – The Hitchhiker’s Guide to AI - Mark Hinkle, Perip...
All Things Open
 
Fine-Tuning Large Language Models with Declarative ML Orchestration - Shivay ...
All Things Open
 
Leveraging Knowledge Graphs for RAG: A Smarter Approach to Contextual AI Appl...
All Things Open
 
Artificial Intelligence Needs Community Intelligence - Sriram Raghavan, IBM R...
All Things Open
 
Don't just talk to AI, do more with AI: how to improve productivity with AI a...
All Things Open
 
Open-Source GenAI vs. Enterprise GenAI: Navigating the Future of AI Innovatio...
All Things Open
 
The Death of the Browser - Rachel-Lee Nabors, AgentQL
All Things Open
 
Making Operating System updates fast, easy, and safe
All Things Open
 
Reshaping the landscape of belonging to transform community
All Things Open
 
The Unseen, Underappreciated Security Work Your Maintainers May (or may not) ...
All Things Open
 
Integrating Diversity, Equity, and Inclusion into Product Design
All Things Open
 
The Open Source Ecosystem for eBPF in Kubernetes
All Things Open
 
Open Source Privacy-Preserving Metrics - Sarah Gran & Brandon Pitman
All Things Open
 
Ad

Recently uploaded (20)

PPTX
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PDF
Python basic programing language for automation
DanialHabibi2
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
PDF
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
Blockchain Transactions Explained For Everyone
CIFDAQ
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
PDF
July Patch Tuesday
Ivanti
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PDF
Windsurf Meetup Ottawa 2025-07-12 - Planning Mode at Reliza.pdf
Pavel Shukhman
 
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
Python basic programing language for automation
DanialHabibi2
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
Blockchain Transactions Explained For Everyone
CIFDAQ
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
July Patch Tuesday
Ivanti
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
Windsurf Meetup Ottawa 2025-07-12 - Planning Mode at Reliza.pdf
Pavel Shukhman
 

Introducing CS students to open source

Editor's Notes

  • #4: I teach at Mills College a minority-serving women's college (with coed grad programs) in the San Francisco Bay Area. Our students, like me, tend to be idealistic and want to make the world a better place. This is one of the reasons open source appeals to them.
  • #5: Unique graduate program for students with a bachelor's degree in another field who want to transition into CS. Like all of Mills' Many of our classes are dual-level, and I need to provide additional material to graduate students. In programming project classes, I've been having the grad students contribute to open source projects.
  • #6: I'll now say a little about skills and tools that students need.
  • #7: It’s rare for students to have experience with the command line, so I have them work through tutorials. I have Windows users install Git for Windows, which includes Git BASH.
  • #8: Of course, students need to be able to use git and GitHub. The workflow I teach is a little different from the standard one.
  • #9: Students may be reluctant to communicate with strangers online, especially if they're concerned that they might face racism or sexism. I help them [CLICK] make their first post to Stack Overflow, [CLICK] communicate with developers on Discord, [CLICK] post to GitHub, and [CLICK] write proposals for complex changes. I solicited students’ experience when writing this talk. One said: One element of the class that I appreciated was a consideration of [CLICK] communication and community. As you encouraged me to write a StackOverflow post on my build problems, you also stressed the importance of good etiquette in [CLICK] posting complete and useful information to make things as easy as possible for any friendly person who would take time out of their day to answer. We also discussed the importance of [CLICK] respectful communication in open source projects. I try to keep these lessons in mind today when I communicate with my collaborators. "
  • #10: The impostor syndrome is real and always present. You need to encourage students to have a growth mindset. It's not enough to mention it once. Every day, you should communicate to students that you make mistakes and that everyone feels overwhelmed a lot of the time. It doesn’t mean they don’t belong in the field; it means they’re working on hard problems.
  • #11: Tell students about your mistakes. I share with them an article that I wrote about mine. In the picture on the right, I’m wearing a t-shirt that says: “If people learn from their mistakes, I must have a Master’s Degree by now” and point out that I have a PhD. I’ve made even more mistakes! Throughout the semester, admit your mistakes, and reward students for finding and reporting them. A lot of professors
  • #12: At first, I had students work on App Inventor, because I helped create it and knew that my old colleagues would answer their questions and review their PRs. Now I let students choose projects. They should make sure there have been recent updates to the projects. If no code has been pushed in years, their changes are unlikely to be incorporated. I tell them to look for an active and friendly developer community. Often these are on Discord, and students can see how people are treated. They should look for a project that is welcoming to newcomers, as shown on their forums or contributor guidelines. Specifically, they should look whether pull requests get reviewed promptly. If not, their changes might languish.
  • #13: Choosing a project is usually easier than selecting an issue. I advise them to [CLICK} look at labels, such as “good first issue” or “beginner friendly” Don’t choose high-priority issues, which are likely to get fixed quickly by a more experienced developer. They should know that some issues they see, especially feature requests, made be considered invalid by the maintainers. They should discuss issues with maintainers to make sure they want someone working on the issue and Explicitly claim the issue. Above all else, they should be prepared to start over with a new issue if theirs gets fixed by someone else, made obsolete, or proves too difficult.
  • #15: Useful techniques for running the class: Have all of the students work on the same project, but have teams of 2-3 students per issue Have weekly meetings to make sure students stay on track and help them with anything they get stuck on Maintain a Slack server where students can ask you and each other questions and share information Always be willing to help students draft messages
  • #16: I sometimes find it useful to create UML static class diagrams. I’ve had students do this, although I’m not sure it’s been helpful. Have them step through the code in a debugger.
  • #17: Here are some of the projects students have worked on.
  • #18: In 2020, Kate Feeney and Trevor Adams made contributions to App Inventor. Kate went on to do the Google Summer of Code.
  • #19: Trevor wrote about the experience…
  • #20: I had students work on App Inventor again in 2014. Here's what Colin Lockard, now finishing his PhD as University of Washington, wrote.
  • #21: In 2016, Kate Manning and Emily Kager added an extension to App Inventor. Both went on to work for [CLICK] Mozilla, Kate through Outreachy, Emily as an intern and then full-time employee.
  • #22: In 2019, students choose to contribute to an app some of them use, Habitica.
  • #23: This fall I’m teaching a Java development course. This is my first time supervising open source in a non-Android environment. I wasn’t able to find many active projects except for [CLICK] Minecraft, which students are thrilled to work on. They chose to contribute to [CLICK] EssentialsX, one of the most popular plugins.
  • #25: support: both technical and psychological
  • #26: There may be unpleasant surprises, even more than with regular assignments that you create. This requires a lot of faculty time. I’ve worked with 2-8 students at a time. I don’t know if it can be scaled to large courses. There have been problems with students who don’t feel like they belong on a team with other students because of their own demographic differences. Even if the other teammates don’t discriminate (which can be hard for an outside professor to determine), students’ reasonable fear of discrimination can get in the way. Some students, even graduate students, need more structure and drop the course or avoid doing the work.