Teaching Principles

The following principles guide how we teach.

Team teaching

We teach in pairs. This allows one teacher to be at the board and the other to be checking on people's work. Also, the teachers can learn from one another, and we often use team teaching to train a newer teacher. And finally, the teachers can model a positive working relationship for the students. A natural way to split up the lecture responsibilities is for one teacher to do the review each week, and the other teacher to teach the new material.

Modular curriculum design

Our curriculum is built in short course-blocks of five 1-hour sessions. This allows for uses in different contexts and timelines. Some schools may use the introductory course or the first two courses in a 5-10 week weekend enrichment program. Others may use each course block as a week in a semester-long elective course.

Open source curriculum

Curricula for course blocks will all be open-source. We encourage teachers to re-share curricula, modify as they wish, comment on their experience with each class and share the comments with other teachers. This will not only allow teachers to use the material in contexts where we are not able to give support, but it will make the curriculum stronger.

Experiential education

Each course block will be centered around a fun, creative project. Students will work on the project during each class, so when a concept is taught, students can immediately implement it, reinforcing their learning.

Early gratification

In the early classes, we've found it to be important for each new concept that the students learn to have a clear and direct result. Too much coding with not a lot of tangible results will make the exercise seem abstract and make the content less interesting to the students.

Avoiding extrinsic motivators

It's important for the students to see programming as a reward in itself. Therefore, we don't give any carrots (rewards if the students do a good job) or sticks (tests or quizzes). The students really enjoy programming and building, and often see it more as recess than school. We aim to keep it that way.


Students at this age are remarkably social, and learn a lot from one another. We aim to facilitate peer-to-peer interaction by sitting the students adjacent to one another in a circle, and by allowing time for them to work during class. During this time, they will often have questions from one another, and we encourage this interaction as long as they stay focused on the projects.

Review at the beginning of each class

We begin each class with a review. In addition to reinforcing learnings from the previous class, it makes the class social and interactive from the start. It also gives the teacher a gauge on how well the students learned the previous material.

Agile syllabus planning

While we have a structured syllabus, we highly encourage the instructors to modify it on the fly based on what the students express interest in, and how quickly they are learning. We have had many cases where we have sped up or slowed down the curriculum, or introduced new topics because the students wanted to learn how to do something. Let us know when this happens so that we can use that input in the syllabus in general.