How to Use this Curriculum

A brief overview on how to read the resources


This curriculum was built as an introductory high school computer science course. While it can be implemented at any point in high school, it is appropriate for 9th grade and up. It assumes no prior knowledge and focuses on creative expression as a means to learn computational thinking and syntactical concepts.

The curriculum is broken into units, with each unit including lesson arcs (structured as 'learning activities') with many projects and final projects to endcap each unit.

What We Provide

This curriculum provides detailed lesson plans, sample code, starter code, and links to additional resources (including videos).

We do not provide other classroom materials such as lesson slides or rubrics, as we believe these are things that often need to be customized to meet the needs of your class and your specific learners. We also believe that developing these resources can help you to better grasp the concept and specific changes you may want to make for your classroom.

Our hope is that given the robust lesson plan and learning materials, it will be quick work for teachers to turn these into slides. To assist, we have created a Lesson Slide Template that may hasten the process.

A Note On Lessons:

You'll notice that some lesson pages have an emoji before them. This is keyed as follows:

  • 🔮 == Unit Overview

  • 🗃 == Mini Project

  • 🎨 == Unit Final Project

  • 🤓 == Optional Extra: This is an extension lesson that either provides deeper and more targeted practice or is a deep dive into a topic that is not necessary to continue in the course. You may safely skip or use as needed.

  • ✨ == Possible Prerequisite Skill: While we assume no prior knowledge, students may come in with prerequisite skills if they had a robust middle school experience that aligned to the NYS Computing Standards. These lessons can be abbreviated or skipped entirely based on the prior knowledge of your class, but they do contain important concepts to the rest of the course.

Choosing an Editor:

One of the most important parts of beginning a course is determining the environment your students will be coding in. This curriculum supports two:

  • p5 Editor: This is a code editor that allows students to start with a default template that is already inked to the p5 library (as well as sound library). Students have accounts and can rename and save their projects, as well as making 'collections' (folders/directories) to store and organize them. It is actively worked on and updated by the p5/processing team and is made specifically for working with p5. Runs best in Chrome. It does not have a teams/classroom/education feature, so teachers will need to collect links to student projects and give feedback separately.

  • This is a code editor that supports many languages and libraries and includes a p5 template. Students will need to select the p5 template when creating new projects, but it will then have the p5 library automatically linked. While their focus is not specifically p5, any updates to the p5 library will also exist here. There is a 'Teams for Education' option that is now free for K-12 educators and allows work to be collected/feedback left through

We have done our best to ensure all starter code exists as a template in both editors. This curriculum was initially made using the p5 editor before added the p5 template (and because there was initially helpful p5 reminders that only existed in the editor, but has since become a part of the library), so there remain some examples that exist only in the editor. We have done our best to ensure that anything that exists in only the p5 editor is a project that is only meant to be viewed by students/teachers, not necessarily remixed or interacted with.


There is no end-of-course exam, so teachers should feel free to adjust pacing to suit the needs of their class. From experience, we believe that the five units in this guide represent a reasonable pace for a year. Finishing Unit 5 also puts students in a great place for follow-up courses such as AP Computer Science Principles.

We have done our best to provide extras and resources that you can use to fill out your curriculum if you have students coming in with substantial experience and would like additional activities.

Naming Conventions

Each Unit is broken into various "learning activities" which are in turn split into various lessons.

Seeing a lesson like this would mean:

U1LA1.4 --> Unit 1, Learning Activity 1, Lesson 4

Please feel free to adjust the naming conventions to meet the needs of your own classroom!

Using CR-SE Prompts

Mini Projects and Unit Projects include a section on Culturally Responsive Best Practices. These are intended to allow students to connect their classroom experience to their own communities and culture. In some instances, it is provided as guidance, and in others, it is additional prompts that can be presented alongside a project to give the project a more intentionally culturally responsive lens.

Many projects in this course allow for great amounts of student choice, which we hope will allow students to make the work their own and produce things that they can be proud of. Student choice is important as some may want to focus on big, serious things, and some may just want a moment to have fun, be creative, and be silly.

(Please keep in mind that communities can refer to a lot of things, including just the culture of being a teen, a Minecraft player, or a KPop fan - be mindful that you are allowing students to explore choice in their creations in a way that is authentic to them!)

Last updated