SlideShare a Scribd company logo
1 of 27
Introducing CS
students to
open source
ELLEN SPERTUS
MILLS COLLEGE
OCTOBER 19, 2020
My open source
projects
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

[EN] Great software development quotes
[EN] Great software development quotes[EN] Great software development quotes
[EN] Great software development quotesEudris Cabrera
 
Three Developer Abilities They Dont Teach In College
Three Developer  Abilities They Dont Teach In CollegeThree Developer  Abilities They Dont Teach In College
Three Developer Abilities They Dont Teach In CollegeJacinto Limjap
 
redirectGiraffe Presentation 2
redirectGiraffe Presentation 2redirectGiraffe Presentation 2
redirectGiraffe Presentation 2Myles Pollie
 
The Art Of Documentation for Open Source Projects
The Art Of Documentation for Open Source ProjectsThe Art Of Documentation for Open Source Projects
The Art Of Documentation for Open Source ProjectsBen Hall
 
Case Study: xAPI for vets and pets
Case Study: xAPI for vets and petsCase Study: xAPI for vets and pets
Case Study: xAPI for vets and petsMegan Bowe
 
Integrating Technology2013(revised)
Integrating Technology2013(revised)Integrating Technology2013(revised)
Integrating Technology2013(revised)Randy Backman
 
Life of a Remote Developer - Productivity tips (MSBuild 2020)
Life of a Remote Developer - Productivity tips (MSBuild 2020)Life of a Remote Developer - Productivity tips (MSBuild 2020)
Life of a Remote Developer - Productivity tips (MSBuild 2020)Davide Benvegnù
 
From TrainedMonkey to Google SoC mentor – How to become an OOo developer
From TrainedMonkey to Google SoC mentor – How to become an OOo developerFrom TrainedMonkey to Google SoC mentor – How to become an OOo developer
From TrainedMonkey to Google SoC mentor – How to become an OOo developerAlexandro Colorado
 
Building a reputation in IT
Building a reputation in ITBuilding a reputation in IT
Building a reputation in ITYitzikCasapu
 
Things I wished I knew while doing my tech bachelor / undergraduate
Things I wished I knew while doing my tech bachelor / undergraduateThings I wished I knew while doing my tech bachelor / undergraduate
Things I wished I knew while doing my tech bachelor / undergraduateGeshan Manandhar
 
Digital content leading practice _webconference
Digital content leading practice _webconferenceDigital content leading practice _webconference
Digital content leading practice _webconferenceColleen Hodgins
 
Oracle Code Brussels 2017 - The DevOps disaster
Oracle Code Brussels 2017 - The DevOps disasterOracle Code Brussels 2017 - The DevOps disaster
Oracle Code Brussels 2017 - The DevOps disasterBert Jan Schrijver
 
Digital Ocean Amsterdam meetup March 2017 - The DevOps disaster
Digital Ocean Amsterdam meetup March 2017 - The DevOps disasterDigital Ocean Amsterdam meetup March 2017 - The DevOps disaster
Digital Ocean Amsterdam meetup March 2017 - The DevOps disasterBert Jan Schrijver
 
Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"Christian Heilmann
 
JavaOne 2016 - The DevOps Disaster
JavaOne 2016 -  The DevOps DisasterJavaOne 2016 -  The DevOps Disaster
JavaOne 2016 - The DevOps DisasterBert Jan Schrijver
 
How to Lose a Dev In 3 Ways
How to Lose a Dev In 3 WaysHow to Lose a Dev In 3 Ways
How to Lose a Dev In 3 WaysJamie Wittenberg
 

What's hot (19)

[EN] Great software development quotes
[EN] Great software development quotes[EN] Great software development quotes
[EN] Great software development quotes
 
Three Developer Abilities They Dont Teach In College
Three Developer  Abilities They Dont Teach In CollegeThree Developer  Abilities They Dont Teach In College
Three Developer Abilities They Dont Teach In College
 
My Career Journey
My Career JourneyMy Career Journey
My Career Journey
 
redirectGiraffe Presentation 2
redirectGiraffe Presentation 2redirectGiraffe Presentation 2
redirectGiraffe Presentation 2
 
The Art Of Documentation for Open Source Projects
The Art Of Documentation for Open Source ProjectsThe Art Of Documentation for Open Source Projects
The Art Of Documentation for Open Source Projects
 
Case Study: xAPI for vets and pets
Case Study: xAPI for vets and petsCase Study: xAPI for vets and pets
Case Study: xAPI for vets and pets
 
inquestion
inquestioninquestion
inquestion
 
SAMR
SAMRSAMR
SAMR
 
Integrating Technology2013(revised)
Integrating Technology2013(revised)Integrating Technology2013(revised)
Integrating Technology2013(revised)
 
Life of a Remote Developer - Productivity tips (MSBuild 2020)
Life of a Remote Developer - Productivity tips (MSBuild 2020)Life of a Remote Developer - Productivity tips (MSBuild 2020)
Life of a Remote Developer - Productivity tips (MSBuild 2020)
 
From TrainedMonkey to Google SoC mentor – How to become an OOo developer
From TrainedMonkey to Google SoC mentor – How to become an OOo developerFrom TrainedMonkey to Google SoC mentor – How to become an OOo developer
From TrainedMonkey to Google SoC mentor – How to become an OOo developer
 
Building a reputation in IT
Building a reputation in ITBuilding a reputation in IT
Building a reputation in IT
 
Things I wished I knew while doing my tech bachelor / undergraduate
Things I wished I knew while doing my tech bachelor / undergraduateThings I wished I knew while doing my tech bachelor / undergraduate
Things I wished I knew while doing my tech bachelor / undergraduate
 
Digital content leading practice _webconference
Digital content leading practice _webconferenceDigital content leading practice _webconference
Digital content leading practice _webconference
 
Oracle Code Brussels 2017 - The DevOps disaster
Oracle Code Brussels 2017 - The DevOps disasterOracle Code Brussels 2017 - The DevOps disaster
Oracle Code Brussels 2017 - The DevOps disaster
 
Digital Ocean Amsterdam meetup March 2017 - The DevOps disaster
Digital Ocean Amsterdam meetup March 2017 - The DevOps disasterDigital Ocean Amsterdam meetup March 2017 - The DevOps disaster
Digital Ocean Amsterdam meetup March 2017 - The DevOps disaster
 
Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"
 
JavaOne 2016 - The DevOps Disaster
JavaOne 2016 -  The DevOps DisasterJavaOne 2016 -  The DevOps Disaster
JavaOne 2016 - The DevOps Disaster
 
How to Lose a Dev In 3 Ways
How to Lose a Dev In 3 WaysHow to Lose a Dev In 3 Ways
How to Lose a Dev In 3 Ways
 

Similar to Introducing CS students to open source

How to become a software developer
How to become a software developerHow to become a software developer
How to become a software developerEyob Lube
 
Career Hacks for Developers
Career Hacks for DevelopersCareer Hacks for Developers
Career Hacks for DevelopersBarElin
 
How to find a Java developer for a successful project
How to find a Java developer for a successful projectHow to find a Java developer for a successful project
How to find a Java developer for a successful projectriyak40
 
Organization strategies to increase development productivity
Organization strategies to increase development productivityOrganization strategies to increase development productivity
Organization strategies to increase development productivityAaron Grant
 
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...GreeceJS
 
Week 6 assignment 2 critical thinking questions EDU 655
Week 6 assignment 2 critical thinking questions EDU 655 Week 6 assignment 2 critical thinking questions EDU 655
Week 6 assignment 2 critical thinking questions EDU 655 tommygee2
 
Open Source: Working in a Glass Walled Factory
Open Source: Working in a Glass Walled FactoryOpen Source: Working in a Glass Walled Factory
Open Source: Working in a Glass Walled FactoryStephen James
 
Let's get a computer science internship
Let's get a computer science internshipLet's get a computer science internship
Let's get a computer science internshipJulian Ozen
 
How To Design And Run A Training Program
How To Design And Run A Training ProgramHow To Design And Run A Training Program
How To Design And Run A Training ProgramGarth Gilmour
 
Effective Collaborative Programming3
Effective Collaborative Programming3Effective Collaborative Programming3
Effective Collaborative Programming3Xebia IT Architects
 
How To Become A Good C# Programmer
How To Become A Good C# ProgrammerHow To Become A Good C# Programmer
How To Become A Good C# ProgrammerLearnItFirst.com
 
NLJUG speaker academy 2022 - session 1
NLJUG speaker academy 2022 - session 1NLJUG speaker academy 2022 - session 1
NLJUG speaker academy 2022 - session 1Bert Jan Schrijver
 
NLJUG speaker academy 2023 - session 1
NLJUG speaker academy 2023 - session 1NLJUG speaker academy 2023 - session 1
NLJUG speaker academy 2023 - session 1Bert Jan Schrijver
 
What We've Learned From Building Basie
What We've Learned From Building BasieWhat We've Learned From Building Basie
What We've Learned From Building BasieGreg Wilson
 
Maintaining maintainers(copy)
Maintaining maintainers(copy)Maintaining maintainers(copy)
Maintaining maintainers(copy)Maggie Pint
 
Java Training Institute in Gurgaon.pptx
Java Training Institute in Gurgaon.pptxJava Training Institute in Gurgaon.pptx
Java Training Institute in Gurgaon.pptxAPTRON Gurgaon
 

Similar to Introducing CS students to open source (20)

How to become a software developer
How to become a software developerHow to become a software developer
How to become a software developer
 
Code Now
Code NowCode Now
Code Now
 
Career Hacks for Developers
Career Hacks for DevelopersCareer Hacks for Developers
Career Hacks for Developers
 
How to find a Java developer for a successful project
How to find a Java developer for a successful projectHow to find a Java developer for a successful project
How to find a Java developer for a successful project
 
Best Java Training
Best Java TrainingBest Java Training
Best Java Training
 
Organization strategies to increase development productivity
Organization strategies to increase development productivityOrganization strategies to increase development productivity
Organization strategies to increase development productivity
 
Getting your first job
Getting your first jobGetting your first job
Getting your first job
 
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
 
Week 6 assignment 2 critical thinking questions EDU 655
Week 6 assignment 2 critical thinking questions EDU 655 Week 6 assignment 2 critical thinking questions EDU 655
Week 6 assignment 2 critical thinking questions EDU 655
 
Open Source: Working in a Glass Walled Factory
Open Source: Working in a Glass Walled FactoryOpen Source: Working in a Glass Walled Factory
Open Source: Working in a Glass Walled Factory
 
Let's get a computer science internship
Let's get a computer science internshipLet's get a computer science internship
Let's get a computer science internship
 
How To Design And Run A Training Program
How To Design And Run A Training ProgramHow To Design And Run A Training Program
How To Design And Run A Training Program
 
Effective Collaborative Programming3
Effective Collaborative Programming3Effective Collaborative Programming3
Effective Collaborative Programming3
 
How To Become A Good C# Programmer
How To Become A Good C# ProgrammerHow To Become A Good C# Programmer
How To Become A Good C# Programmer
 
NLJUG speaker academy 2022 - session 1
NLJUG speaker academy 2022 - session 1NLJUG speaker academy 2022 - session 1
NLJUG speaker academy 2022 - session 1
 
NLJUG speaker academy 2023 - session 1
NLJUG speaker academy 2023 - session 1NLJUG speaker academy 2023 - session 1
NLJUG speaker academy 2023 - session 1
 
What We've Learned From Building Basie
What We've Learned From Building BasieWhat We've Learned From Building Basie
What We've Learned From Building Basie
 
Maintaining maintainers(copy)
Maintaining maintainers(copy)Maintaining maintainers(copy)
Maintaining maintainers(copy)
 
Java Training Institute in Gurgaon.pptx
Java Training Institute in Gurgaon.pptxJava Training Institute in Gurgaon.pptx
Java Training Institute in Gurgaon.pptx
 
SOP Presentation.pdf
SOP Presentation.pdfSOP Presentation.pdf
SOP Presentation.pdf
 

More from All Things Open

Building Reliability - The Realities of Observability
Building Reliability - The Realities of ObservabilityBuilding Reliability - The Realities of Observability
Building Reliability - The Realities of ObservabilityAll Things Open
 
Modern Database Best Practices
Modern Database Best PracticesModern Database Best Practices
Modern Database Best PracticesAll Things Open
 
Open Source and Public Policy
Open Source and Public PolicyOpen Source and Public Policy
Open Source and Public PolicyAll Things Open
 
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...All Things Open
 
The State of Passwordless Auth on the Web - Phil Nash
The State of Passwordless Auth on the Web - Phil NashThe State of Passwordless Auth on the Web - Phil Nash
The State of Passwordless Auth on the Web - Phil NashAll Things Open
 
Total ReDoS: The dangers of regex in JavaScript
Total ReDoS: The dangers of regex in JavaScriptTotal ReDoS: The dangers of regex in JavaScript
Total ReDoS: The dangers of regex in JavaScriptAll Things Open
 
What Does Real World Mass Adoption of Decentralized Tech Look Like?
What Does Real World Mass Adoption of Decentralized Tech Look Like?What Does Real World Mass Adoption of Decentralized Tech Look Like?
What Does Real World Mass Adoption of Decentralized Tech Look Like?All Things Open
 
How to Write & Deploy a Smart Contract
How to Write & Deploy a Smart ContractHow to Write & Deploy a Smart Contract
How to Write & Deploy a Smart ContractAll Things Open
 
Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow
 Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow
Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlowAll Things Open
 
DEI Challenges and Success
DEI Challenges and SuccessDEI Challenges and Success
DEI Challenges and SuccessAll Things Open
 
Scaling Web Applications with Background
Scaling Web Applications with BackgroundScaling Web Applications with Background
Scaling Web Applications with BackgroundAll Things Open
 
Supercharging tutorials with WebAssembly
Supercharging tutorials with WebAssemblySupercharging tutorials with WebAssembly
Supercharging tutorials with WebAssemblyAll Things Open
 
Using SQL to Find Needles in Haystacks
Using SQL to Find Needles in HaystacksUsing SQL to Find Needles in Haystacks
Using SQL to Find Needles in HaystacksAll Things Open
 
Configuration Security as a Game of Pursuit Intercept
Configuration Security as a Game of Pursuit InterceptConfiguration Security as a Game of Pursuit Intercept
Configuration Security as a Game of Pursuit InterceptAll Things Open
 
Scaling an Open Source Sponsorship Program
Scaling an Open Source Sponsorship ProgramScaling an Open Source Sponsorship Program
Scaling an Open Source Sponsorship ProgramAll Things Open
 
Build Developer Experience Teams for Open Source
Build Developer Experience Teams for Open SourceBuild Developer Experience Teams for Open Source
Build Developer Experience Teams for Open SourceAll Things Open
 
Deploying Models at Scale with Apache Beam
Deploying Models at Scale with Apache BeamDeploying Models at Scale with Apache Beam
Deploying Models at Scale with Apache BeamAll Things Open
 
Sudo – Giving access while staying in control
Sudo – Giving access while staying in controlSudo – Giving access while staying in control
Sudo – Giving access while staying in controlAll Things Open
 
Fortifying the Future: Tackling Security Challenges in AI/ML Applications
Fortifying the Future: Tackling Security Challenges in AI/ML ApplicationsFortifying the Future: Tackling Security Challenges in AI/ML Applications
Fortifying the Future: Tackling Security Challenges in AI/ML ApplicationsAll Things Open
 
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...All Things Open
 

More from All Things Open (20)

Building Reliability - The Realities of Observability
Building Reliability - The Realities of ObservabilityBuilding Reliability - The Realities of Observability
Building Reliability - The Realities of Observability
 
Modern Database Best Practices
Modern Database Best PracticesModern Database Best Practices
Modern Database Best Practices
 
Open Source and Public Policy
Open Source and Public PolicyOpen Source and Public Policy
Open Source and Public Policy
 
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...
 
The State of Passwordless Auth on the Web - Phil Nash
The State of Passwordless Auth on the Web - Phil NashThe State of Passwordless Auth on the Web - Phil Nash
The State of Passwordless Auth on the Web - Phil Nash
 
Total ReDoS: The dangers of regex in JavaScript
Total ReDoS: The dangers of regex in JavaScriptTotal ReDoS: The dangers of regex in JavaScript
Total ReDoS: The dangers of regex in JavaScript
 
What Does Real World Mass Adoption of Decentralized Tech Look Like?
What Does Real World Mass Adoption of Decentralized Tech Look Like?What Does Real World Mass Adoption of Decentralized Tech Look Like?
What Does Real World Mass Adoption of Decentralized Tech Look Like?
 
How to Write & Deploy a Smart Contract
How to Write & Deploy a Smart ContractHow to Write & Deploy a Smart Contract
How to Write & Deploy a Smart Contract
 
Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow
 Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow
Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow
 
DEI Challenges and Success
DEI Challenges and SuccessDEI Challenges and Success
DEI Challenges and Success
 
Scaling Web Applications with Background
Scaling Web Applications with BackgroundScaling Web Applications with Background
Scaling Web Applications with Background
 
Supercharging tutorials with WebAssembly
Supercharging tutorials with WebAssemblySupercharging tutorials with WebAssembly
Supercharging tutorials with WebAssembly
 
Using SQL to Find Needles in Haystacks
Using SQL to Find Needles in HaystacksUsing SQL to Find Needles in Haystacks
Using SQL to Find Needles in Haystacks
 
Configuration Security as a Game of Pursuit Intercept
Configuration Security as a Game of Pursuit InterceptConfiguration Security as a Game of Pursuit Intercept
Configuration Security as a Game of Pursuit Intercept
 
Scaling an Open Source Sponsorship Program
Scaling an Open Source Sponsorship ProgramScaling an Open Source Sponsorship Program
Scaling an Open Source Sponsorship Program
 
Build Developer Experience Teams for Open Source
Build Developer Experience Teams for Open SourceBuild Developer Experience Teams for Open Source
Build Developer Experience Teams for Open Source
 
Deploying Models at Scale with Apache Beam
Deploying Models at Scale with Apache BeamDeploying Models at Scale with Apache Beam
Deploying Models at Scale with Apache Beam
 
Sudo – Giving access while staying in control
Sudo – Giving access while staying in controlSudo – Giving access while staying in control
Sudo – Giving access while staying in control
 
Fortifying the Future: Tackling Security Challenges in AI/ML Applications
Fortifying the Future: Tackling Security Challenges in AI/ML ApplicationsFortifying the Future: Tackling Security Challenges in AI/ML Applications
Fortifying the Future: Tackling Security Challenges in AI/ML Applications
 
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...
 

Recently uploaded

Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 

Recently uploaded (20)

Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 

Introducing CS students to open source

Editor's Notes

  1. 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.
  2. 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.
  3. I'll now say a little about skills and tools that students need.
  4. 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.
  5. Of course, students need to be able to use git and GitHub. The workflow I teach is a little different from the standard one.
  6. 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. "
  7. 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.
  8. 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
  9. 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.
  10. 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.
  11. 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
  12. 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.
  13. Here are some of the projects students have worked on.
  14. In 2020, Kate Feeney and Trevor Adams made contributions to App Inventor. Kate went on to do the Google Summer of Code.
  15. Trevor wrote about the experience…
  16. I had students work on App Inventor again in 2014. Here's what Colin Lockard, now finishing his PhD as University of Washington, wrote.
  17. 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.
  18. In 2019, students choose to contribute to an app some of them use, Habitica.
  19. 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.
  20. support: both technical and psychological
  21. 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.