10 Lessons Learned from Developing a PK-12 Computer Science Program in SFUSD

by Bryan Twarek
Division of Curriculum & Instruction, San Francisco Unified School District

Computer science (CS) is becoming increasingly critical to a student’s success in preparing for college and career. In today’s digital age, all students must develop a foundational knowledge to understand how computers works and the skills required to creatively solve real-world problems. However, the vast majority of schools do not yet offer computer science instruction. In fact, in San Francisco public high schools, only 5% of students are enrolled in a computer science class, and only half of the schools offer a single course. Even at the schools that do offer computer science, the students in these classes are generally unrepresentative of the schools’ population as a whole, with far fewer females and students of color.

It is critical that we address this need with an equity mindset and ensure that all students have access to computer science, beginning in the earliest grades. With this in mind, the San Francisco Unified School District (SFUSD) has committed to expanding its computer science programming to ensure that all students at all schools have experience with high-quality computer science instruction throughout their PK-12 educational career.

Currently, we are developing a policy and implementation plan for integrating computer science into our core curriculum. As part of this work, we are crafting a PK-12 scope and sequence of essential knowledge and skills to be taught at each grade level. We will pilot at select schools next school year, with fuller implementation in 2016-2017.

I would love to share 10 lessons that I have learned through my experience with this initiative:

  1. There is a lot of excitement around computer science.
    Many schools had a taste during the Hour of Code and are now asking for more. Through surveys and interviews, we have determined that the vast majority of teachers, administrators, students, and families support expanding computer science instruction. In fact, 100% of surveyed teachers responded that it is important for their students to learn computer science.
  2. Most adults don’t have prior experience with computer science.
    It is challenging to begin teaching a subject that most never learned themselves in school. While most of our current high school computer science teachers have a degree in CS or relevant industry experience, this is not a scalable practice. We will have to develop teachers from within the district, and they will need to learn the content before learning how to teach it to their students. For this reason, we plan to utilize dedicated computer science teachers at all grade levels, rather than have all multiple subjects teachers to integrate a new discipline into their classes.
  3. Defining computer science is tricky.
    Many people mistake computer science as educational technology (i.e., integrating computing into teaching and learning). Others believe that computer science is just programming. Developing a thorough, yet concise definition of computer science is challenging even for experts. It’s been helpful to present the five strands in CSTA’s K-12 Standards as a way to simple way to articulate the various aspects of computer science. 
  4. We must begin teaching computer science at younger ages.
    Unfortunately, we have noted that females and students of color are underrepresented in computer science classes, even as young as sixth grade. Therefore, we must reach children before they develop constructs of who pursues and excels in STEM fields. We plan to normalize computer science education by guaranteeing access to all students when they first enter our schools in kindergarten or pre-kindergarten. 
  5. Little academic research and few curricula exist.
    There has been little academic research on K-12 computer science education since the days of Seymour Papert, which makes it difficult to know exactly what to teach and how to teach it. Additionally, there are very few cohesive computer science curricula targeted for elementary and middle school students. Only within the last one to two years have organizations like Code.org and Project Lead the Way created K-5 CS curricula, and it will likely be several more years before we have a clear picture of what works well.
  6. Great things are happening outside of the classroom.
    While few of our students currently take computer science classes, some excellent nonprofits, community-based organizations, and individual teachers have worked to fill in these gaps. Clubs, after school activities, one-time events, and summer programs offer additional opportunities to engage with CS. Some try to reach all students, including: Mission Bit, FIRST Robotics League, CS First, and Coder Dojo. Others target underrepresented populations, including: Girls Who Code, Black Girls Code, Chick Tech, and Hack the Hood.
  7. We must attack this issue from multiple angles.
    Developing a plan to go from 5% of students to 100% takes time, but we recognize that if we wait for our plan to be fully implemented, we will miss many students. We can start providing computer science education even before we create new classes by advocating for and supporting clubs, after school activities, and informal opportunities outside of the classroom. We can also quickly start trying ideas out with interested schools and teachers who already have the technology and time for instruction or space for integration. Additionally, we are also working to bring CS classes to more schools by leveraging industry professionals to volunteer and develop our teachers through the TEALS program.
  8. It is important to leverage successes.
    It is easier to gain traction when there are successes to point to. We already have strong three-course computer science sequences at two high schools, so we are using these as models for expanding to other high schools. Plus, pilot programs will allow us to learn from their trials, successes, and struggles as we develop our plans for scaling to all schools in the district.
  9. Competing priorities make it hard to fit in.
    Even when various stakeholders agree to the value of providing computer science education to all students, it still leaves the contentious questions of where and how this fits into the schedule. That is, how many hours do we devote to CS, and do we integrate into existing classes or create new ones? if we have dedicated CS teachers at all levels, we have to hire more staff, but we gain better quality control and more effective teacher development. On the other hand, if our science, math, and multiple subjects teachers teach CS, they can leverage their strong relationships with students and more seamlessly integrate with other content areas, but the majority don’t have background experience and are already working to transition to the Common Core, alongside many other important school and district initiatives. Since few K-12 models exist, it’s even more difficult to come to a consensus.
  10. Our plan will have to be continuously updated.
    The field of computer science is still relatively new, and technologies quickly become outdated. We must acknowledge that the field will continue to rapidly evolve in sometimes unpredictable ways, and as such, our plan for teaching computer science will also need the flexibility to continuously adapt.

3 thoughts on “10 Lessons Learned from Developing a PK-12 Computer Science Program in SFUSD

  1. There needs to be a change and maybe that is happening with the laptops. There needs to be a change among others that we fulfill a roll teaching the students skills and are not just plan time fillers.

  2. Pilot programs are essential before implementing new instructional practices to verify the efficacy of such programs before they tried on a large scale.

  3. I enjoyed reading activities that were implemented outside the classroom at SFUSD.
    I believe that diversity is crucial as many students do not have access to internet and devices at home

Leave a Reply

Your email address will not be published. Required fields are marked *