Coding for Accessibility

Week Nine: Workshop with Kartik Sawhney


Accessibility refers to the design of products, devices, services, or environments for people who experience disabilities. One in five people have a disability. We will discuss assistive technologies and ways to write accessible programs.

Mobile Loans in the Developing World

Week Eight: Workshop with Branch

Starter Code

Branch is a mobile phone lending company. They operate primarily in Kenya and provide loans to customers through our mobile app. Branch customers begin with small loans, starting at only 1000 Ksh or about 10 USD, and after successful repayments open up credit lines up to 50000 Ksh. In today's workshop, we determine borrower credit worthiness based upon their mobile data. Because Kenyans utilize mobile money (M-PESA) so heavily, their mobile phone sms logs contain financial transaction history. We'll dive into some sample financial sms data today and see if we can predict repayment probability.

For today's workshop, the starter code is here.

Algorithmic Bias

Week Seven: Workshop with Emma Pierson and Sam Corbett-Davies

Starter Code

In today's workshop, we design criminal risk prediction algorithms and discuss the downsides of these algorithms. We develop an algorithm which predicts whether a defendant will predict a violent crime. The data comes from a ProPublica investigation -- details of four thousand defendants in Broward County, Florida.

For today's workshop, the starter code is here. and the slides are here. Check out this link for some more reading.

Matching Algorithms

Week Six: Workshop with Career Village

Starter Code

In today's workshop, we tackle a real-world example of how collective intelligence can be used to solve a social good challenge: recommendation engines. We explore several different matching algorithms and code some in Python.

For today's workshop, the starter code is here.

Virtual Reality

Week Five: Workshop with Aashna Mago on Virtual Reality

Virtual reality tools such as Oculus, Cardboard, Gear VR, and development platforms such as Unity have made it easier to share VR with the public. In this workshop, we try some demos on headsets, brainstorm ways to use VR for social good, and get a glimpse of Unity programming.

Cancer Data Genie

Week Four: Workshop with Flatiron Health


The American Association of Cancer Research (AACR) recently released data from Project GENIE (Genomics Evidence Neoplasia Information Exchange) into the public domain. The goal of this project was to collect data about patients with cancer who have been seen at several major care centers around the country, and share it to promote research and patient awareness about cancer. This infographic describes some of these goals.

The GENIE data set includes both clinical data about patients (age, gender, ethnicity, race, cancer type) as well as data about the genetic mutations that were found in each patient’s tumor. Most patients don’t have the ability to analyze or learn from these date, but they may have heard of Project GENIE and be interested in it.

Your goal is to put yourselves in the shoes of a recently diagnosed cancer patient and build an application to help patients learn from Project GENIE’s clinical data file.

For today's workshop, the handout is here.

Chatbot to Locate SNAP Retailers

Week Three: Building a Chatbot for Social Good

Starter Code Solution

In the U.S, people of low-socioeconomic status often have limited access to computers. This makes it difficult to access certain essential information. For example, which grocery stores nearby accept food stamps? In San Francisco alone, 18,000 families use food stamps.

This data is taken from SNAP's (Supplementary Nutritional Assistance Program) website. In this workshop, we build a chatbot that can interact with humans, directing them to the nearest SNAP retailer given the current location.

For today's workshop, the starter code is here.

Classifying Breast Cancer Data

Week Two: k-Nearest-Neighbors Algorithm

Starter Code Solution

In this workshop, we'll use the k-Nearest-Neighbors clustering algorithm to classify breast cancer data to make diagnoses. The data consists of various indicators on breast tumor scans to classify the tumors as malignant or benign.

This data is taken from the Univeristy of Wisconsin's Breast Cancer Diagnostic Set, taken from the UC Irvine Machine Learning repository. If you're interested in looking at the data set and spec, it's listed here.

For today's workshop, the starter code is here.

Welcome to CS106S!

Week One: Introduction

Starter Code Solution

CS106S is a supplemental one-unit course to CS106B/X that focuses on applying fundamental computer science concepts learned in CS106B/X to problems in the social good space (such as health, government, education, and environment) Students participate in weekly workshops designed by local tech companies, nonprofits, and researchers.

This class meets on Wednesdays from 4:30 to 5:50 PM in building 160-317. Grading is S/NC (Pass/Fail). You can enroll on Axess. Attendance at 9 of 10 class meetings is required to obtain credit for the course. Here is a tentative agenda:

January 11 - Class logistics and welcome, intro to Python
January 18 - Workshop by course staff
January 25 - TBD
February 1 - Flatiron Health
February 8 - TBD
February 15 - Career Village
February 22 - Emma Pierson, Stanford Ph.D. student
March 1 - Branch
March 8 - Kartik Sawhney, Stanford undergraduate student
March 15 - Class party

A detailed syllabus can be found here. All course materials will be posted on Canvas and are avaiable to those who have enrolled in the course. Select workshop materials will be posted on this website for the public.

For today's workshop, the starter code is here.

We look forward to an awesome quarter of CS106S!


Programming Abstractions and Social Good


CS106S is taught by Priya Ganesan, Sasha Harrison, and Shreya Shankar, members of the CS+Social Good team at Stanford University. This is a one-unit course that meets on Wednesdays from 4:30 to 5:50 PM in 160-317.