This page gives gives attribution to the influential works in computer science education that form some of the philosophical underpinnings of the course.
We all owe a debt of gratitude to the Exploring Computer Science (ECS) curriculum and professional development program by Joanna Goode and Gail Chapman. Many members of the curriculum team and existing Code.org staff offspring of, and cut their teeth as part of, the ECS "movement" and much of the ECS ethos lives on in our CS Principles program as well. On the curriculum side, we wanted to write a curriculum that supported both students and teachers who were completely new to computer science. The inquiry/discovery-based model of lesson design, which strives to create as many opportunities as possible for all students in the classroom to engage with the material, as well as our understandings, biases and beliefs about how new CS teachers and students enter the field, are all heavily influenced by ECS and our previous work with that program.
Similarly, our professional development model for CS Principles attempts to mimic the success of the ECS professional development program. In particular, we carry on the effective the "teacher-learner-observer" (TLO) practice, in which teachers take the time to prepare, deliver and reflect on lessons with colleagues. The TLO practice reflects the spirit and goals of the ECS curriculum itself: if you want teachers (or students) to understand how to teach CS, all must be provided with as many opportunities as possible to engage with the material in authentic ways. This is especially true when trying to achieve the audacious twin-goals of creating new computer science teachers where there were none before and improving teaching practice in the field at the same time. Our CS Principles program attempts to achieve many of the same goals, and the ECS program should be credited with showing us all the path for how to do it.
The CS education community is completely indebted to CS Unplugged (Tim Bell and colleagues at the University of Canterbury, and Mike Fellows at the University of Bergen) for bringing computational thinking skills into classrooms in active, kinesthetic ways. The very term "unplugged" is now part of common parlance in CS classrooms all over the world and should be attributed the these fine folks.
Many of our computational widgets have their roots in CS Unplugged activities. Our goal was to use the activity and then "plug it in" to allow for further exploration of the concept and in some cases take it a step further. The “pixelation” widget was inspired by the Image Representation Activity. The text compression widget was inspired by CS Unplugged’s activity of the same name: Text Compression
Some of the unplugged activities in the curriculum itself are CS Unplugged activities that we modified to slightly "adult-ify" the context or focus it more explicitly on a computer science problem. The Minimum Spanning Tree activity has its roots in CS Unplugged’s Muddy City activity. The WiFi Hotspot problem is inspired by the Dominating Sets activity.
We have merged ideas from two giants of early teaching about programming. The turtle graphics from Logo (Pappert et. al. 1967) have been used with children for decades for the effective "body-syntonic" way it leads to reasoning about sequence, logic and procedural abstraction. Karel the Robot (Pattis et. al. 1981) is a learning construct in which the programmer controls a “robot” which initially has a very limited set of commands and as the programmer learns new language constructs, can add to the robot’s capabilities by making new commands that build on the primitive set. This allows for problem solving exercises that lead to good programming practice and good top-down design thinking skills. We use turtle graphics like Logo, but in the curriculum initially give the turtle a very limited set of commands like Karel.