Open Source Studio (Spring 2026)
NOTE: The official syllabus is on UW Canvas. To meet campus accessibility guidelines, this syllabus is for public use only.
- CSS490: Open Source Studio
- Instructor: Kaylea Champion
- Contact: Your messages are important to me! I prefer, in this order:
- public messages via Discord (others might have the same question or have the answer)
- private messages via Discord
- private messages via Canvas Note: all grade-related discussion must happen via Canvas
- email only if absolutely necessary to kaylea@uw.edu
- If you need to have a discussion with me, I would be happy to meet with you via an office hours appointment. This guarantees you my full attention (but, please book at least 24 hours in advance, I might miss your booking otherwise).
- Turnaround time commitment
- If I do not respond to your message in 48 hours, please understand that this is unintentional and nudge me via a Discord DM. My inbox and message queues sometimes get flooded due to a very wide range of commitments. This is not your fault, but an unfortunate fact of life. That said, a polite and focused request will receive a faster reply; an unprofessional request might get eaten by my spam filter; a message containing information unrelated to your question might be misunderstood or misfiled.
- You can call me "Doctor Champion" or "Professor Champion"! Please note that there is another Champion in the department (Mia) and I am not her :-). I'm the one with the purple hair!
- I use she/her pronouns, and I'll do my best to use your name and pronouns correctly, but please (please!) help me get it right if I'm wrong. Your comfort -- and your name and pronouns -- matter to me!
- Textbook:
- We do not have a required textbook. You will instead engage with material from a wide range of sources. All of these sources should be free of charge providing you use the version on Canvas or the UW Library Proxy. If you have difficulty accessing any material, let me know right away via a public message on Discord.
- Course Meetings:
- Monday / Wednesday
- 1:15-3:15
- Location TBD
- Course Websites
- We will use Canvas for announcements and turning in assignments.
- We will use Discord for chat, including to ask questions and share information around the course material. (Invitation link is in the Class Setup Checklist on Canvas.)
- [FIX Course absence form]: It is important to tell me if you are not coming to class--or if you will be late--at least one hour before class begins.
- Everything else will be linked on this page.
- Got a question? Maybe it's on the UWB Open Source Studio FAQs page?
- Optional! Pitch in to the Spotify playlist for this quarter's class. Share what's fun, what's cool, what's speaking to you this quarter, what more people should know about: the [FIX Open Source Studio Spring 2026 Spotify Playlist]. Otherwise we're just going to listen to things Prof. Champion picked ;).
- Course Catalog-style Description of Topics:
- Equips students to make a meaningful contribution to a software development project using open source software as a case study. Explores innovation, development tools, culture, history, economic/business models and legal frameworks in software development organizations. Students will choose an existing organization and propose a project. Working in teams, they will acclimate themselves to the organization's rules and learn a new codebase, ultimately developing their own contributions.
Overview and Learning Objectives[edit]
This course has two threads: learning about open source software and its role in modern software development, and making use of this knowledge and building your technical skills by making a substantial contribution of your own. Software engineering often means engaging with existing projects and joining an organization. Even if you are building a new system, chances are you will use an operating system, programming languages, databases, and many platform tools that you yourself did not build -- and probably many if not all of these will be based on open source software. Contributing to open source is a way to push the forefront of technology forward, to sharpen your skills and to stand out from others, and to give back to society. However, it can also be intimidating and confusing -- working in public means facing uncertainty and persisting. This course is designed to equip you with the knowledge and experience you need to be a successful contributor in this challenging environment.
I will consider the course a complete success if every student is able to do all of these things at the end of the quarter:
- Write and speak fluently about key concepts in open source software.
- Recall, compare, and give examples of approaches to software development, software licensing, and organizational structure.
- Demonstrate an ability to critically apply ideas from the course to an existing open source project.
- Engage with the course material and compellingly present your own ideas and reflections in writing and orally.
- Learn and use engineering tools, in part because the tools themselves are important, and in part to build your ability to adopt new tools.
- Identify areas of ethical concern in open source software.
- Identify opportunities to improve security in open source software.
I also have a "stretch goal": I want your work in this class to help you, in some direct way. Maybe it's having a great answer in a job interview when it's time to convince the interviewer that you have a lot to offer. Maybe it's having a piece of work you can feel good about sharing with others. Maybe it's applying your experience to a new assignment at work. Maybe it's seeing your world in a new way that helps you solve a problem. Or maybe it's just having an answer when someone asks skeptical questions about what you got out of doing a degree in computing! This goal is hard to measure but it's my hope for you and what I'm working for every day during the quarter.
Class format and structure[edit]
In general, the organization of the course adopts a "flipped" approach where you engage with instructional materials on your own and we use synchronous meetings to answer questions, address challenges or concerns, work through solutions in a team setting, and hold semi-structured discussions. This is a 5-credit class; you should plan to spend 10 hours per week working on class work as well as 4 hours per week in class and as much as 1 hour per week in lab or office hours. If you are spending substantially more than this, you should consider setting up an office hours appointment with me to think through learning strategies to boost your efficiency. If you are spending substantially less than this, you may find you are losing out on opportunities to learn, grow, and demonstrate your skills.
The asynchronous elements of this course include:
- Readings, recorded lectures/slides, tutorials, and assignments from a variety of speakers; some of these will be created directly by me, but some of them will be excellent work produced by others.
- Development of your chosen project.
- Conversation and discussion that happens in the class Discord server over the course of the week.
I expect you to finish all readings and watch all lectures outside of our class meeting times before the class sessions on which they are assigned. Please note that this means I will not generally deliver lectures during our class meetings. Please also note that this means you are fully responsible for reading all readings and watching all recorded lecture material before you come to the associated synchronous part of class.
I expect you to check in and participate in the Discord discussion. I plan to check and respond to conversation there at least daily throughout the quarter.
The synchronous elements of the course will be two weekly class meetings and optional open lab periods. Class meetings will happen at the normal time and in the normal place, unless I communicate otherwise. I will also offer open lab periods where you can drop in and ask questions. Open lab is an experiment I'm trying for this quarter to see if it's useful: I'll try to announce when they're coming up in a weekly announcement e-mail and I'll definitely mention them on Discord. For my more focused attention, please book an office hours appointment with me. Please note that if you book your appointment less than 24 hours in advance, I may not see your booking, so do ping me on Discord to confirm. Why should students book office hours appointments?
Each session is scheduled to run for a maximum of 120 minutes; we'll take a break half way through -- it's always my goal to end a bit early to allow for informal discussion.
I will use the class meetings to do several things:
- Conduct discussion of materials you've prepared.
- Discuss and work through any questions or challenges you encounter in the materials assigned for that day.
- Discuss and/or answer questions about assignments that have come up.
- Engage with guest speakers.
- Participate in group activities.
- Conduct standup meetings for project teams.
- Allow for co-working time in your group while I circulate and answer questions.
Open lab periods will include:
- Time for you to ask your questions
- Time to work on your assignments with immediate help at hand
Attending open lab periods and office hours is optional.
Project-based Courses Generate Productive Ambiguity[edit]
I want to acknowledge that a project-based course like this one has several unknowns: you might not know what project you're going to work on, or what the response might be -- I am confident I won't be an expert in the project you pick. What I do offer you is my expertise in open source and in computing: I will support your ambition and engage with you in good faith as you seek to fulfill the learning goals of the class. This course is closer to the working world than most courses -- and that means facing unknowns and factors outside of our control. We'll face those challenges together and I think you'll find the cost is worth the reward. I also want to reassure you that many universities, elite and open enrollment, large and small, public and private, technical and liberal arts, offer courses just like this one, and students thrive in them. You can do this.
Websites and Technology Expectations[edit]
There are a number of expectations that you will be able to connect to certain websites. In order to complete this class, I expect you to be able to access and use the following web resources:
- Required
- UW's Canvas — We'll be using Canvas for posting announcements, uploading course-restricted files, turning in assignments, and distributing grades, comments, and similar. It is the student's responsibility to verify that the correct file is submitted. If you have difficulties using Canvas, please contact UW-IT or see this knowledge base article.
- UW Library Proxy — I'm going to expect that you can use the UW Libraries proxy to access material that UW subscribes to from off campus.
- Discord — Discord is a chat system that we'll be using in the course to stay in touch between class and to discuss things asynchronously. It has screensharing and voice chat as well. There is a mobile app as well as a downloadable desktop app that you may find useful but you should be able to do everything you need to while using the web interface version. If you've got a question about an assignment, this is almost certainly going to be the the fastest and best way to get my attention. One benefit of asking a question on Discord is that others in the class will be able to see our answer to you! Instructions on joining the Discord server are in the Class Setup Checklist. You'll see that there are a series of channels we've created. If you don't see an obvious place to ask your question, go ahead and ask it in the #general-discussion channel.
- Panopto — UW uses the video hosting service Panopto which I will be using to share all the lectures and recorded parts for this course.
- GitHub — Assignments for this course will involve using source control software, most likely GitHub. This means that you will need to have access to GitHub (or whatever systems used by your community of choice).
- Google Docs — I'll be using Google Docs to host a series of web forms. This includes the form you'll need to fill out to tell me that you're going to miss class. You will need to be able to access Google to use this.
- AI tools: Chat GPT, Microsoft CoPilot, and Gemini
These websites, in turn, use a range of hosting providers including Amazon Web Services, Google, and Microsoft. As a result, participation in this course requires students to access Internet resources that may not be accessible directly in some places outside of the UWB campus. Anybody taking the class must ensure that they can access all Internet resources required for this course reliably and safely. For students who are off-campus temporarily and are in a situation where direct access to these required resources is not possible, UW-IT recommends that students use the official UW VPN, called Husky OnNet VPN. UW-IT advises students to use the VPN with the “All Internet Traffic” option enabled (see the UW Libraries instructions and UW-IT’s FAQs). Doing so will route all incoming and outgoing Internet through UW servers while it is enabled.
- Optional
- wiki.communitydata.science — This website will host the public syllabus for the course.
UW does not guarantee students’ access to UW resources when students are off-campus, and students are responsible for their own compliance with all laws regarding the use of Husky OnNet and all other UW resources. You cannot successfully complete the course if you do not have sufficient access to a network and network-based services.
Having problems with the checklist? Running into terms you don't understand? I'll collect Frequently Asked Questions and Answers
Note about this Syllabus[edit]
You should expect this syllabus to be a dynamic document (not a 'contract'). Although the core expectations for this class are fixed, the details of projects, readings, and assignments will shift based on how the class goes, guest speakers that I arrange, my own readings in this area, etc. As a result, there are four important things to keep in mind:
- Although details on this syllabus will change, I will try to ensure that I never change readings more than six days before they are due. This also means that if you plan to read more than six days ahead, contact me first.
- Closely monitor your email or the announcements section on the course website on Canvas to make sure you don't miss these announcements.
Assignments[edit]
The assignments in this class are designed to give you an opportunity to try your hand at using the conceptual material taught in the class. We will do one project and have one short writing assignment reflecting on that project and course topics. Any quizzes will be short and low-stakes. There will be no exams.
Unless otherwise noted, all assignments are due at the end of the day (i.e., 11:59pm on the day they are listed as being due, Pacific time zone).
In Class: Discuss, Listen, Co-Work[edit]
Discussion[edit]
This course uses a Socratic seminar discussion style -- I will ask questions rather than providing answers. Generally speaking, there are multiple right answers, and there are definitely poorly-prepared answers versus carefully-considered ones! You should also be aware that these discussions are conducted as cold calls, described below.
Cold Calling[edit]
I call on people without asking for volunteers first. I will be doing this in each class. Modern technical work environments include very similar situations: very few lectures (except for "all hands" type meetings and short "training" activities), and a range of types of team meetings and group conversations, where you will be expected to be prepared and then participate in key moments.
Because I understand that cold calling can intimidate some students, I will be circulating a list of questions (labeled "Reading Note" in the syllabus) that we will discuss. These will be finalized at least 6 days in advance. I will only cold call to ask questions for which you have time to prepare your answers, or where the general format / structure has been announced in advance so that you can prepare. Although it is a very good idea to write out answers to these questions in advance, I will not be collecting these answers. You are welcome to work with other students to brainstorm possible answers. Although I may also ask spontaneous questions that I do not distribute ahead of time, I will never cold call when asking these questions.
I have written a computer program that will generate a random list of students each day and I will use this list to randomly cold call students in the class. To try to maintain participation balance, the program will try to ensure that everybody is cold called a similar number of times during the quarter. Although there is always some chance that you will called upon next, you will become less likely to be called upon relative to your classmates each time you are called upon.
Assessment for discussion[edit]
I have placed detailed information in the discussion section of my assessment page. This describes both the rubrics I will use to assess your case discussion and how I will compute the final grades in the course.
Standup Meetings[edit]
Once project groups are formed, you will meet in a standup format in each class. In standup, you answer three questions: what did you do since the last standup, what will you do before the next standup, and do you have any blockers? You will also echo these answers into the Discord channel. Your performance in standup will be assessed according to the rubric described in the detailed page on assessment
Out of Class: Read, Watch, and Work[edit]
Each class session will require advance preparation from you, including engagement with class materials and working on course projects. More details on the class materials are in the daily schedule, and more details on course projects are in the assignments section.
Notes on Group Work[edit]
You will be part of a group of contributors to an open source project as part of this class, first learning about potential projects, then joining a group, then identifying a scope for your contribution, and finally conducting that work and seeking to merge it with the public project. Please note that this means your work in this class will be public and made available to the project under their license.
Real-world technical roles involve collaboration and teamwork. This course is not a team project course. Instead, the work you do will be largely individual. The purpose of the group is for you to explore a new organization as a cohort, offering each other advice, support, and peer reviews as you work on the project. This is an opportunity to develop your professional skills and network. Think carefully about what kind of group member you want to be, and how you will respond to potential sources of conflict. In general, groups work well when students have motivations that align with the work of the group, varying skillsets, and display mutual respect. I will assess your work based on the evidence I see in behavioral traces: the records left behind in the tools we use for the course.
Project: Making a Meaningful Contribution to Open Source[edit]
The open source contribution project is broken up into multiple tasks, each building on the previous. You will begin by reflecting on your own skills and interests, then explore potential projects where you might contribute. You'll share what you find and consider what others have found as possible projects, and then vote for a project you'd like to contribute to. I will form you into groups -- where possible, you and your groupmates will all contribute to the same project, but in some cases your group may organize around a theme of contribution type or language if student interests diverge too far. In your group, you'll develop and propose a Statement of Work to me -- a scope for your group's effort, describing what each person will contribute. You'll then develop your contribution and refine it, conducting first your own self-review and then a review for a peer, before finalizing your contribution and submitting it to the community. We'll close the quarter by showing our work projects to one another, and reflecting on our experience.
The "Open Source Project Rubric" section of the detailed page on assessment gives the rubric I will use to evaluate your work.
Extra Credit: Team Bonding Activity[edit]
Many classes include a necessity for students to meet outside of class, and you may find that in order to complete work your group likewise needs to arrange to meet up. But outside-of-work events are also a common way for organizational work teams to develop social relationships -- and research has found this to be valuable if everyone's needs and perspectives are respected. If your group meets up outside class for non-work purposes, take a selfie and send it to me for a little extra credit (available only once and in the first 3 weeks of the quarter). Only one group member needs to send this to me.
Open Source Project Prep Task #1[edit]
- Task
- Skills and Priorities Inventory
- Due
- Friday, April 3, 11:59 p.m. Pacific time
- Deliverables
- You are done with task 1 if you have filled out the Skills and Priorities Assignment [Google Forms Link is posted to Canvas]
- Turn In
- via a Google Form
Open Source Project Prep Task #2[edit]
- Task
- Community Field Trip and Evaluation
- Due
- Friday, April 10, 11:59 p.m. Pacific time
- Deliverables
- You are done with task 2 if you have evaluated 2 open source projects according to the field trip and evaluation form; it is a Google Form you can return to and edit your responses. You should then anticipate sharing the results of your field trip in class.
- Turn In
- The filled-in evaluation form via Google Forms; no Canvas turn-in.
Steps
- Visit at least 2 communities you would be interested in contributing to.
- Evaluate the community according to the criteria in the form.
- Please note that this assignment is not private: the results of your evaluation will be shared with other students in the class to help them in project selection and group formation.
- Tips
- Allow some time for this! The point value for the assignment is relatively high....
- You are investing in your future success in the class: spending time now to find a good project will pay off later in your satisfaction and success.
- Sources for projects to evaluate:
- GitHub's help wanted: https://github.com/topics/help-wanted
- An external site for browsing the above: https://github-help-wanted.com/
- Social good projects: https://meaningfulcode.org/
- Humanitarian projects: https://hfoss.etica.ai/
Open Source Project Prep Task #3[edit]
Groups in this course are affinity-based. If several people want to contribute to the same codebase, each with their own tasks, I'll place them in the same group. Beyond that, I will try to form groups that make sense, grouping students together based on the kind of project, the language in use, other overarching traits, or student preference.
- Task
- Set up work environment and group chat
- Due
- Wednesday, April 15, 11:59 p.m.
- Deliverables
- You are done with task 3 if you have set up your contribution environment for the project.
- Turn in
- A screenshot of your development environment
Steps
- Meet your group members!
- Join the Discord channel for your group (hosted in the class server).
- Make sure you can install the project you are proposing to contribute to: you must be able to test changes before you try to submit them to the project. To avoid disrupting your other uses of your computer, I recommend using the Docker image from the CSS Remote Linux Lab: https://csswiki.uwb.edu/css-linux-lab-docker-image/ -- use the run as administrator options, and use the 'permanent' option when launching docker rather than the 'temporary' one, so you don't lose work. You might also explore deploying the project using GitHub's codespaces feature. If you are not able to set up a development environment for yourself, you will likely need to move to a different project.
- Tips
- If you are running into issues, contact Dr. Champion right away -- you may need to move to a different group.
- The exact path your project takes will be different from other groups at this point. Use your group chat and standups to talk about challenges you are facing!
- Different projects will have different standards for AI usage and you must follow their rules. For course purposes, feel free to use AI tools as a tutor. However, please note that the code produced via AI may be far below the quality expected by the project. If the project you contribute to allows for AI contribution, you should always plan to revise any AI output to fit project requirements and needs.
Open Source Project Prep Task #4[edit]
- Task
- Analyze the structure of the project or projects and produce a cribsheet / quick reference card
- Due
- Friday, April 17, 11:59 p.m. Pacific time
- Deliverables
- You are done with Task 4 if everyone in your group has added at least one item to a cribsheet and it's pinned to the top of your channel.
- Turn in
- No need to turn in something for this; Dr. Champion should be able to grade your work right out of Discord.
Steps
- Use Discord to discuss the project and identify important links and reminders. Topics might include:
- Identify important links for your project (front-facing website, developer-facing website, important documents if not linked from the GitHub site, communication channels the project uses)
- Identify overall genre and architecture for the project, key files, tips, reminders. (Examples: "React front-end, postgres database -- great tutorial on YouTube here:", "JavaScript bot, make sure to update both commands.yml and commands.js if you add new commands", "Python library; unit tests are required for everything and go in the command-specific file in the test/ dir", "Does a Hackathon every other Friday (next one is on....xx/xx)"
- Share your observations about the project in the chat
- As a group, compile your observations into a single message for reference and pin it.
- Tips
- This is mostly to help you in the future...don't cheese it.
Open Source Project Statement of Work (Task 5)[edit]
- Task
- Identify areas where you can contribute and prepare a group Statement of Work
- Due
- Friday, April 24, 11:59 p.m. Pacific time.
- Deliverables
- You are done with this task if everyone's roles in the project are described and the scope of work explained.
- Turn in
- your Statement of Work document for your group, via Canvas (1 per group), as a link to a Google doc where I have edit rights
Steps
- Review the Statement of Work template
- Identify work you personally would like to do in the project (sizing will vary here based on your interest and goals: 2 substantial bugs, a new feature of some significance, or other revisions on the scale of about 40 hours of work over a 5 week period -- 2 weeks for the first draft or progress report, 1 week for a second draft / self review, 1 week where you will work on a peer review but can also be improving your own work, and 1 week for final touches after receiving a peer review)
- Comment on the issue or communicate with the maintainer about your interest in this work. This will make it less likely that someone else will do the work before you have a chance (although this could still happen). Be polite and sincere!
- Estimate how long you think each phase will require: planning / analyzing the work, implementing the work, testing the work, refining the work in response to feedback
- Identify when you will complete each of these phases for each task
- Identify fall-back positions in the terms and conditions (if you're not able to fix the bug, what will you do instead to demonstrate what you've learned? If you do less than the work outlined, what grade do you think is fair? See rubric for this assignment.)
- Contribute to the group document with your areas of work.
- Expect to negotiate the scope of your contribution with Dr. Champion and to engage in a dialogue the maintainer; you should expect this to be a good-faith discussion.
Open Source Project Rough Draft -- Task 6[edit]
- Task
- Finish up a first draft or first milestone of your project
- Due
- Friday, May 8, 11:59 p.m. Pacific time
- Deliverables
- in accordance with the Statement of Work
- Turn in
Open Source Project Code Review (Self) -- Task 7[edit]
- Task
- Review your work before you ask others to review it
- Due
- Friday, May 15, 11:59 p.m. Pacific time
- Deliverables
- You are done with this task if you have asked an LLM to review your work and made recommended changes that you think make sense.
- Turn in
- the history of your conversation with the LLM, and a link to a code commit.
Alternative for conscientious objectors: The use of LLMs is not a necessary learning goal for this course. Therefore, LLM use is not required. Students who object to LLM use may do this assignment by using static analyzers and code profiling tools.
Open Source Project Second Draft -- Task 8[edit]
- Task
- Complete the second draft or milestone
- Due
- Friday, May 15, 11:59 p.m. Pacific time
- Deliverables
- Turn in
Open Source Project Code Review (Individual) -- Task 9[edit]
- Task
- Seek peer review of your work and conduct a review of someone else's work
- Due
- Friday, May 22, 11:59 p.m. Pacific time
- Deliverables
- You are done with this task if you have arranged for a peer review with a colleague and done a review of someone else's code.
- Turn in
- your review text.
- Steps
- Request a peer review via Discord, including a link to your repository.
- Come to an agreement as to who will review whom.
- Conduct a review of a peer's work and send it to them.
- Share the text on Canvas.
Open Source Project Post-Review Revision -- Task 10A[edit]
- Task
- Respond to peer review of your work
- Due
- Friday, May 29, 11:59 p.m.
- Deliverables
- You are done with this task if you have revised your code in response to a peer review.
- Turn in
- a link to the commit / commits associated with the peer review.
Open Source Project Contribution -- Task 10B[edit]
- Task
- Make the contribution described in the statement of work.
- Due
- Friday, May 29, 11:59 p.m. Pacific Time
- Deliverables
- You are done with this task if you have completed your portion of the statement of work. This task must be submitted on time but can be revised / resubmitted to meet community standards (within reason; talk to Dr. Champion if issues arise).
- Turn in
- A link to your pull request to the main source tree of the project (or whatever the community requires).
Demo + Presentation of Work -- Task 11[edit]
You will share your (or your group's) efforts with the class as part of a final celebration of our work in the class.
Task: Present your / the group's work to the class.
- Due
- Wednesday, June 3rd, in class
- Deliverables
- 1 - A virtual poster describing your individual work OR a group poster describing the group's work as a whole.
- 2 - The oral presentation of your work (Time allocation
- 5 minutes per person with up to 3 minutes for questions; if you present individually, you have 5 minutes total, if a group presents as a group, multiply time by quantity, the division of time should be reasonable and fair but does not need to be identical).
- Turn In
- A PDF of your poster.
Steps
- You can lay out the poster using any tool you like; Miro or Canva should work well.
- Plan to project your poster and zoom in on elements as you talk
- Include the following elements:
- What is the project?
- Who is in your group?
- What work did you do?
- Observations. Potential topics include:
- What did you learn
- What feedback did you get from the community
- What advice would you give to other students or new contributors
- Screenshots, visuals and other evidence
- In class, you will show your poster and talk about your work.
- Tips
- Don't make a printout, but for future optional activities, I recommend using a standard horizontal layout (e.g., 20x30) so that it can be printed.
Reflection on the Project -- Task 12[edit]
See the brief reflection rubric for details on my expectations in terms of the content of the reflection. A successful essay will do the following things:
- Use content and concepts from the course.
- Use evidence from your experience, your project, and the projects of others. Mention project names, commit IDs, line numbers, dates & times as appropriate.
- Cite your sources; these sources must be real, they must provide support for the statements associated with the citation, and they must be viewable by me. Note that AI tools are notorious for fabricating these and use of AI tools for this assignment is forbidden.
- Be 1200-1500 words. Note that there is a penalty for going over length and that references don't count in length limits; I'm not interested in nitpicking, but essays over 1600 words are particularly unfair to others. Essays under length won't receive a special penalty but are very unlikely to achieve the depth I am looking for.
- Do not use AI tools.
If you are not sure what to write, think about what happened in the project and choose some of these prompts as jumping off points (do not treat the following as questions to answer in order!). What kind of work did you end up doing, and how well did you do? Was the project easy or hard, which parts, how, and why? How did the analysis go, and what did you learn? Walk through each topic we covered. How did course concepts apply (or fail to apply) to the situations you faced in developing your project? Did anything surprise you or change your mind during the project? Did you experience any failures or problems? How did you solve them? Based on your experience, what is your advice for the students who take this course next? What did you learn about yourself and the ways you prefer to work? What did you learn from the presentations done by your fellow students? Did anything surprise you in the work from other groups?
Do not write in a long single paragraph or send me a list of bullets; instead, write a standard essay with an introduction, key points, and conclusion. Choose and use a formatting standard and stick to it (APA, Chicago, ACM, etc.). Use correct citation formatting for both your inline citations and your References section. Your essay should make liberal use of many kinds of evidence, including several course readings, lectures, and videos, as well as several commit IDs or other URLs with your specific experience. Do not use AI tools. Do use examples and evidence. This should be an essay that only you could write, because it's about specific events in your experience of the course.
- Turn in
- a well-formatted essay via Canvas
- Due
- Friday, June 12 at 11:59 p.m.
Grading[edit]
I will follow the very detailed grading rubric described on my assessment page. Please read it carefully. I will assign grades for each of the following items on the UW 4.0 grade scale according to the weights below:
- In-class activities, including discussion: 40%
- Project Prep (Tasks 1-4) : 15%
- Project Work (Tasks 5-10): 35%
- Presentation (Task 11): 5%
- Reflection (Task 12): 5%
Impact of Missing Class If you must miss class or be late, file the class absence form to alert me. Not filing this form ('no call, no show') will impact your in-class activities grade. Advance notice lets you avoid a penalty, but it does not serve as a makeup. There is no direct way to make up for missing in-class activities. Instead, you can expect to be called upon more often in subsequent classes to balance out your participation. Please note that if you miss too many classes, it will eventually become impossible to receive full credit for the in-class activities portion of the grade as I will not be cold calling the same person an excessive number of times in a single class session.
Standup participation is equivalent to answering one question in class. If you miss standup, it is still a good idea to update your groupmates on what you're doing, but you will not receive credit. Instead, the self-balancing approach I use to randomize who answers questions will mean that you are more likely to be called on in subsequent classes.
Grade Questions Everyone makes mistakes and I want to fix mine as quickly as possible. If you have questions about a grade, book a private timeslot on my calendar within 1 week of the grade being released. In a grade consultation session, I will ask you to take the lead: show me in specific detail how your work fulfills the rubric for the assignment type overall, how you fulfilled the criteria for the specific assignment, and how your work meets the learning goals of the course.
Mapping Percentage to the 4.0 Scale Instructors have discretion in how we make use of the 4.0 grading scale; we select the weight for each element of the course, the number of points available, and we decide how best to map a percentage of those points into the 4.0 system. This mapping, and the evenness of spacing within the mapping, may vary from class to class, and it may be quite different from what you are accustomed to seeing elsewhere at UWB (or feel unnatural, if you grew up as I did, receiving letter grades!). For this quarter of this class, I will map an overall 97.0% to a 4.0 and a 60.0% to a 0.7, with even spacing in between. This means to receive a 2.0 for the course, you need a 74.6% in the class. Doing the bare minimum is a high-risk approach (what if life gets busy or messy later in the quarter?), and I don't recommend it. Instead, come to class prepared and do all the work on schedule.
Late Policy Assignments are due on the posted date at 11:59 p.m. Pacific time. You may choose one extension-eligible assignment for which you want to use one 48-hour extension, no questions asked: Tasks 1-6 and 8-10 are all extension eligible, Tasks 7, 11, and 12 are not. Use Canvas to make your request so that it is private and trackable. I suggest not using your extension unless you cannot avoid it (you might need it later!). The default lateness penalty is 20% per 48-hr period, however some assignments may have their own rubric for any lateness. In addition, when the assignment is slated for in-class discussion, a specialized late assignment policy applies; turning in the assignment after an in-class discussion of the assignment increases the penalty to 50%. Note that assignments in this class tend to build upon one another; being late with an assignment means less time to do the next stage. Do not expect your groupmates to do extra work to accommodate your need for an extension.
No extension is possible for the Presentation and Peer Review assignments as those involve coordinating multiple people and have very tight timing. No extension is possible for the Reflection assignment because it sits at the very end of the quarter and I must submit grades on time.
If you experience a severe or extraordinary interruption to your ability to complete class work in a timely manner, I expect to follow the UWB policy around incompletes and to work with you, the advising office, and the disability services office as required to navigate your difficult situation.
Schedule[edit]
Preparation Phase[edit]
Mar 30 (Monday): Introduction to the Course, Open Source, and the Studio Concept[edit]
April 1 (Wednesday) Types of Open Source and Contributor Motivations[edit]
Before Class:
- First: Read the Reading Note
- Read: Chapter 1 from the book Producing Open Source Software: How to Run a Successful Free Software Project by Karl Fogel 2023, 2nd ed. https://producingoss.com/en/introduction.html
- Read pages 1-6 and 19-24 the Linux Foundation's 2024 Global Spotlight survey results
- Read pages 1-10 and page 28 from: The Mozilla Archetypes. https://blog.mozilla.org/wp-content/uploads/2018/05MZOTS_OS_Archetypes_report_ext_scr.pdf
In-Class Goals
- Discussion of Reading Note
- Check-in on assignments and tasks
April 3 (Friday)[edit]
Prep Task 1 (the Skills and Priorities Inventory) and Class Checklist DUE, 11:59 p.m. Seattle time.
April 6 (Monday) History and Culture of Open Source[edit]
Before Class
- Start with my Reading Note as a guide to preparing
- Read as background: https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar
- Read for yourself from The Cathedral and the Bazaar by Eric S. Raymond https://firstmonday.org/ojs/index.php/fm/article/download/578/499%3Finline%3D1#d9 -- just three sections: The first section, titled the same as the 10k-word essay, "The Cathedral and the Bazaar", then "Necessary Preconditions for the Bazaar Style" and "The Social Context of Open-Source Software". The rest of the work is classic but optional.
- Read Yuxia Zhang, Mian Qin, Klaas-Jan Stol, Minghui Zhou, and Hui Liu. 2024. How Are Paid and Volunteer Open Source Developers Different? A Study of the Rust Project. In Proceedings of the IEEE/ACM 46th International Conference on Software Engineering (ICSE '24). Association for Computing Machinery, New York, NY, USA, Article 195, 1–13. https://doi.org/10.1145/3597503.3639197
- Read the "Capture less than you create" David Heinemeier Hansson (creater of Ruby on Rails) blog post: https://world.hey.com/dhh/capture-less-than-you-create-c30e462e
In Class Goals
- Discuss Reading Note
- Get Started with Prep Task 2
April 8 (Wednesday) Community Health and Governance[edit]
Before class
- Read the Reading Note
- Read the first two sections of Chapter 4 of Producing Open Source Software by Karl Fogel (Forkability and Benevolent Dictators)
- Read the biography of Guido van Rossum on Wikipedia and this article about his resignation
- Learn about The Mozilla Foundation both via Wikipedia and their own site
- Learn about The Apache Foundation both via Wikipedia and their own site
In-Class Goals
- Discuss the Reading Note
- Continue work on Prep Task 2
- Complete Exit Ticket Reflection
April 10 (Friday)[edit]
Prep Task 2 (the Community Field Trip and Evaluation) DUE, 11:59 p.m. Seattle time.
April 13 (Monday) How does one join a new organization?[edit]
Before Class
- Read the Reading Note
- Read "Orienting yourself to a new project" from https://opensource.guide
- Read this research article: A. K. Turzo, S. Sultana and A. Bosu, "From First Patch to Long-Term Contributor: Evaluating Onboarding Recommendations for OSS Newcomers," in IEEE Transactions on Software Engineering, vol. 51, no. 4, pp. 1303-1318, April 2025, doi: 10.1109/TSE.2025.3550881.
- Explore Red Hat via their homepage and article on Wikipedia
- Explore Debian via their homepage and article on Wikipedia
In Class Goals
- Discuss the Reading Note
- Discuss the results of your community field trips
April 15 (Wednesday) How do we read someone else's code?[edit]
Project Choice Due (before class) Groups Announced Prep Task 3 (Group formation) DUE, 11:59 p.m. Seattle time.
April 17 (Friday)[edit]
Prep Task 4 (Crib sheet) DUE, 11:59 p.m. Seattle time.
Production Phase[edit]
April 20 (Monday) Innovation[edit]
April 22 (Wednesday) Economics and Business Models[edit]
April 24 (Friday)[edit]
Prep Task 5 (Statement of Work) DUE, 11:59 p.m. Seattle time.
April 27 (Monday) Copyright and Licensing[edit]
April 29 (Wednesday) Regulations[edit]
May 4 (Monday) Security Part 1[edit]
May 6 (Wednesday) Security Part 2[edit]
May 8 (Friday)[edit]
First Draft Complete -- Submit Checkpoint against SOW
May 11 (Monday) Open Source and AI[edit]
May 13 (Wednesday)[edit]
May 15 (Friday)[edit]
Second draft and Self-Review Complete
May 18 (Monday) Organizational Landscapes[edit]
May 20 (Wednesday)[edit]
May 22 (Friday)[edit]
Peer Review Complete
May 25 (Monday) -- No Class: Memorial Day[edit]
May 27 (Wednesday)[edit]
May 29 (Friday)[edit]
Contributions complete and pull request submitted
Reflection and Consolidation Phase[edit]
June 1 (Monday) Research Spotlight[edit]
June 3 (Wednesday) Demo + Presentation Day![edit]
June 8 (Monday) -- No Class[edit]
This is the time assigned for our final exam; however, we will not have a final exam. Instead, I recommend you take advantage of the time to work on your reflective essay.
June 12 (Friday)[edit]
Reflection Due
Administrative Notes[edit]
UW Bothell STEM has a set of standard policies for undergraduates. In the case that one of the statements in this syllabus contradicts school or UW policy, of course school and UW policy prevail. If you see contradictions or issues with clarity, I hope you will share them with me ASAP so that I may resolve them for everyone's benefit.
Teaching and learning after periods of disruption[edit]
Global events have a tremendous impact on all of us. Many of you missed key portions of the K-12 experience due to the pandemic or have experienced substantial stress due to circumstances beyond your control. We may be struggling to recover our own mental and physical health. Many of us are developing a sense of a "new normal".
As your instructor and colleague, I commit to do my best to approach the course in an adaptive, generous, and empathetic way. I ask that you try to extend a similar attitude towards everyone in the course. When you have questions, feedback, or concerns, please try to share them in an appropriate way. If you require accommodations of any kind at any time, please contact me.
Your Presence in Class[edit]
As detailed in section on case studies and discussion and in my detailed page on assessment, your homework in the class is to prepare for discussion as well as to work on projects. Case discussion and team standup are an important ways that I will assess your learning. Obviously, you must be in class in order to participate. If you need to miss class for any reason or need to be late or leave early, please fill out the course absence form so that I know you are not coming and do not include you in my cold call list. In the event of an absence, you are responsible for obtaining class notes, handouts, assignments, etc.
Devices in Class[edit]
I ask you to stay focused and avoid distractions for yourself and your peers in the classroom. Spending class time gaming and shopping is a waste of your precious dollars and your precious minutes here --- live, face-to-face opportunities to learn are getting harder to find and they mean so much when we engage with them. That said, you are an adult, and I myself cannot imagine taking a class without being able to take notes on a device and look up topics as they come up. Learning to be present and to control our attention is part of being a modern adult. I promise not to spend class time goofing off online and I think you owe it to yourself to promise the same.
Office Hours[edit]
The best way to get in touch with me about issues in class will in the Discord server via asychronous messages sent to one of the text channels. This is preferable because any questions you have can be answered in a way that is visible to others in the class.
My available hours are visible in this calendar scheduling site. If my planned availability does not work for you, please contact me in the Discord server or over email to arrange a meeting at another time.
Religious Accommodations[edit]
Washington state law requires that UW develop a policy for accommodation of student absences or significant hardship due to reasons of faith or conscience, or for organized religious activities. The UW’s policy, including more information about how to request an accommodation, is available at Religious Accommodations Policy. Accommodations must be requested within the first two weeks of this course using the Religious Accommodations Request form.
Student Conduct[edit]
The University of Washington Student Conduct Code (WAC 478-121) defines prohibited academic and behavioral conduct and describes how the University holds students accountable as they pursue their academic goals. Allegations of misconduct by students may be referred to the appropriate campus office for investigation and resolution. More information can be found online at https://www.washington.edu/studentconduct/
Safety[edit]
Call SafeCampus at 425-352-5359 anytime–no matter where you work or study–to anonymously discuss safety and well-being concerns for yourself or others. SafeCampus’s team of caring professionals will provide individualized support, while discussing short- and long-term solutions and connecting you with additional resources when requested.
Use of AI Tools[edit]
In this course, students are permitted to use AI-based tools (such as UW’s version of Copilot) on some assignments. The instructions for each assignment will include information about whether and how you may use AI-based tools to complete the assignment. All sources, including AI tools, must be properly cited. Use of AI in ways that are inconsistent with the parameters above will be considered academic misconduct and subject to investigation.
Please note that AI results can be biased and inaccurate. It is your responsibility to ensure that the information you use from AI is accurate. Additionally, pay attention to the privacy of your data. Many AI tools will incorporate and use any content you share, so be careful not to unintentionally share copyrighted materials, original work, or personal information.
Learning how to thoughtfully and strategically use AI-based tools may help you develop your skills, refine your work, and prepare you for your future career. If you have any questions about citation or about what constitutes academic integrity in this course or at the University of Washington, please feel free to contact me to discuss your concerns.
Please note that I do not consider grammar/spellchecking to be a prohibited use of AI, even when other uses for AI are not allowed.
Adapted from: UW sample syllabus statements.
Academic Dishonesty[edit]
This includes: cheating on assignments, plagiarizing (misrepresenting work by another author as your own, paraphrasing or quoting sources without acknowledging the original author, or using information from the internet -- including from AI tools -- without proper citation), and submitting the same or similar paper to meet the requirements of more than one course without instructor approval. Please note that fabricated citations are a form of academic dishonesty. Academic dishonesty in any part of this course is grounds for failure and further disciplinary action. The first incident of plagiarism will result in the student’s receiving a zero on the plagiarized assignment. The second incident of plagiarism will result in the student’s receiving a zero in the class.
Disability Resources[edit]
If you have already established accommodations with Disability Resources for Students (DRS), please communicate your approved accommodations through their processes at your earliest convenience so we can discuss your needs in this course.
If you have not yet established services through DRS, but have a temporary health condition or permanent disability that requires accommodations (conditions include but not limited to; mental health, attention-related, learning, vision, hearing, physical or health impacts), you are welcome to contact DRS at 425-352-5426 or uwbdrs@uw.edu or disability.uw.edu. DRS offers resources and coordinates reasonable accommodations for students with disabilities and/or temporary health conditions. Reasonable accommodations are established through an interactive process between you, your instructor(s) and DRS. It is the policy and practice of the University of Washington to create inclusive and accessible learning environments consistent with federal and state law.
Mental Health[edit]
Your mental health is important. If you are feeling distressed, anxious, depressed, or in any way struggling with your emotional and psychological wellness, please know that you are not alone. College can be a profoundly difficult time for many of us.
Resources are available for you:
- UW 24/7 Help Line 1.866.775.0608
- https://wellbeing.uw.edu/topic/mental-health/
- https://www.crisistextline.org/
- https://www.uwb.edu/student-affairs/counseling
- https://www.veteranscrisisline.net
Other Student Support[edit]
Any student who has difficulty affording groceries or accessing sufficient food to eat every day, or who lacks a safe and stable place to live, and believes this may affect their performance in the course, is urged to contact campus advising and counseling services for support. Furthermore, please notify the professors if you are comfortable in doing so. This will enable us to provide any resources that we may possess. Please also note the student food pantry: the UWB Husky Pantry.
Credit and Notes[edit]
This course reflects substantial perspectives shared as part of the POSSE workshop and from the resources at Teaching Open Source.
In developing the content and approach, I drew from research into effective teaching techniques and challenges facing computer science students, including:
- Oram A, Wilson G. 2011. Making software : what really works, and why we believe it. 1st ed. Sebastopol, Calif: O’Reilly.
- Liao, Y. C., & Ringler, M. (2023). Backward design: Integrating active learning into undergraduate computer science courses. Cogent Education, 10(1). https://doi.org/10.1080/2331186X.2023.2204055
- K. Banweer and D. A. Trytten, "WIP: Code Insight: Combining Code Reading and Debugging Practices for Active Learning in Entry-Level Computer Science Courses," 2024 IEEE Frontiers in Education Conference (FIE), Washington, DC, USA, 2024, pp. 1-5, doi: 10.1109/FIE61694.2024.10893296.
