High School CS/CSP Curriculum

CS10K Community of Practice

The CS10K CoP supports a large community of CS/CSP educators at all levels. CS10K seeks to find ways of growing the number of CS/CSP to 10,000 nationally. This site includes resources for teachers, blogs and discussion forums, and a calendar of events for teacher professional development.

Expeditions Through Alice (ComPASS/CS-CaVE)

ComPASS/CS-CaVE Co-PI Dr. Beth Simon, along with Drs. Sarah Guthals and Quentin Cutts, developed a freely-available curriculum around the Alice programming language. There are Student and Teacher Guides linked below. Since the Teacher Guide includes quiz questions and answers, access to the Teacher Guide is available on request only. The curriculum was designed for high school and non-CS first year college students, but it can be adapted to suit middle school with some guidance.

The Student Guide, https://sites.google.com/a/eng.ucsd.edu/expeditions-through-alice/home

The Teacher Guide, https://sites.google.com/a/eng.ucsd.edu/guides-through-alice-2/home (NOTE: this is a private Google Site, please send a request to access it to contact@cs-cave.org)

CS Principles with Alice Created by Art Lopez, CS-CaVE Master Teacher from Sweetwater Union High School District and AP CSP Pilot Teacher

Art Lopez (Sweetwater HS) created three different public courses on Canvas:

Curriculum Notes

At the Beginning of Each Module:
In each module in the “main page” (e.g., 1.0 Telling a Story) we provide teacher-specific information on the big ideas and concepts this chapter covers. We also copy in the vocabulary for the module (also on student site).

For Each Module there are 4 Submodules:

  • The X.1 Book module has (all on one page) materials to support use of the online student textbook (by submodule):
    • Questions and Answers to the questions in the student textbook, “starter” and “complete” (solution)
    • Worlds for the module,  and
    • Explanatory Videos (in both English and Spanish) in which a UCSD student walks through and explains the code the student should have just developed (following along the text modules) and points out important things.  We recommend you show these to students together as a class to review the code and talk about what we learned in the module.
  • The X.2 Lecture module has materials to support “Lecture” with Peer Instruction that you would use in-class with students after they have finished that module.
    • PPT Slides (with extensive verbiage in the comments fields of the slides on how to explain the question and run the discussion)
    • Starter and Complete worlds used in lecture slides and/or demos that would be done in class at UCSD during lecture
    • Videos replicating the demos done in lecture at UCSD.  These can be used to prepare to do these demos yourself in front of the class, or you can simply show them to students.
  • The X.3 Lab module has materials for an in-class lab students would do after completing the textbook work and having done “clicker” questions in class.  This programming experience after clicker questions helps them reinforce what they hopefully learned in clicker discussions.
    • Overview and Learning Goals
    • Labs are provided in googledoc format, so that you can make a copy (perhaps into another googledoc) and modify things like how you want things turned in, etc.
    • Starter and Complete Worlds
    • Grading Notes
    • Answers to the Questions in the Lab
  • The X.4 Practice Problems contain extra “end of the chapter” style programming assignments which exercise the concept from the module.
    • Descriptions
    • Starter and Complete Worlds

Google CS4HS

Google CS First Curriculum targets grades four through eight. Their courses are designed to include material related to other disciplines in addition to CS, such as music and scnence. They focus on clubs but are also interested in supporting efforts to pilot their CS-First curriclum as a middle school course. The Google CS First contact person is Heather Hoffman, CS Research fellow from Google.

Google CS4HS: http://www.cs4hs.com/


Code.org includes curriculum for all grade levels. There are additional links to middle-school-specific resources in the Middle School section below.
Overview of curriculum offered by Code.org: http://code.org/educate
Form a partnership for our district with Code.org: http://code.org/educate/districts
Courses offered: http://studio.code.org/
Middle School CS course (20 hours): http://studio.code.org/s/20-hour



CodeHS provides curriculum built around real programming languages including JavaScript and Python. CodeHS also uses Procession.js to incorporate a more graphical-oriented series of lessons. CodeHS provides an integrated interface and appears to provide some free content, but access to their full interface costs $75/month or $750/year.

Khan Academy (https://www.khanacademy.org/)

Khan Academy includes a large amount of high school level curricula, but the content is more appropriate for high school computer science students rather than CSP, but that may be changing. Khan Academy uses an adaptive e-learning approach to content delivery based on automated tracking and evaluation of student performance.


Educator Resources for Gooru

  • The Gooru Introduction presentation covers the mission, information about the board, an introduction to the learning architecture, catalog and data insights.
  • The Teacher Toolkit has all the resources teachers need to get acquainted with Gooru and start using it in their classrooms. It includes a video tutorial to all the important features of our site.
  • If you’re using Gooru on the iPad, check out this short Gooru iPad tutorial.
  • Your Own Library: Check out theRUSD community library to see an example of an organization content library that features collections from teachers in Riverside, CA.
  •  Learn more about Gooru, or try Gooru atwww .goorulearning.org.

Examples of Libraries in Gooru

  • Riverside Unified School District Library
  • Autodesk Library

Here are a couple of sample collections to review with your team which will give you a sense of what a collection might look like:

  • Biomimicry: Robotic Spider, created by Autodesk. This is a sample partner collection with strong branding.
  • Earthquakes: This is one of our favorite collections in Gooru!

Middle School Curriculum

Google CS First

Google CS First Curriculum targets grades four through eight. Their courses are designed to include material related to other disciplines in addition to CS, such as music and scnence. They focus on clubs but are also interested in supporting efforts to pilot their CS-First curriclum as a middle school course. The Google CS First contact person is Heather Hoffman, CS Research fellow from Google.



Harvey Mudd College has developed CS curriculum targeting middle school which they call MyCS.


MyCS curriculum: https://www.cs.hmc.edu/MyCS/curriculum.html

The program offers PD for teaching this course in the summer.


Code.org includes curriculum for all grade levels. Here are links to middle-school-specific resources.

“CS for Algebra” and “CS for Science

These courses are designed to teach math or science in addition to computer science principles. The focus on math or science appears to dominate. It is not clear how well students understand CS principles upon course completion.

Code.or uses the CS in middle school math: BootStrap: http://code.org/curriculum/msm


Code.org uses the CS in middle school science (Project GUTS): http://code.org/curriculum/mss


CS Principles: http://code.org/educate/csp

Code.org distinguishes their program from the freely available resources themselves through their PD offerings.

Khan Academy (https://www.khanacademy.org/)

Khan Academy includes a limited amount of curricula appropriate for middle school computer science principles instruction. Khan is developing a pseudo-Minecraft instructional module with their own version of a ‘flattened’ Minecraft developers tool built in to the browser. Kahn Academy uses an adaptive e-learning approach to content delivery based on automated tracking and evaluation of student performance.

The Unity Game Development Engine (http://unity3d.com/5)

The Unity Game Development Engine is the most popular game development engine being used today. It is currently being taught at high schools and universities across the country, including San Diego State University. .

LearnToMod: Learning to ‘Mod’ Minecraft (http://www.learntomod.com/)

LearnToMod an interactive online instructional experience with a product called “LearnToMod”. Their product teaches how to create Minecraft ‘Mods’ using a browser-based IDE similar to Block.ly.

There are more than 150 “Programming” lessons organized into subcategories including:

  • Functions
  • Drones and Locations
  • Inventory and Editing Commands
  • Introduction to Loops
  • Loops with Counter Variables
  • Loops and Functions
  • Variables
  • Functions with Parameters
  • Game Events
  • Conditionals

LearnToMod has a very intuitive user Interface, it uses engaging and effective instructional design methodologies, and it supports an active teaching community. There remain questions of cost and support, but the use of Minecraft as a tool for teaching computer science and programming is growing rapidly and LearnToMod is a serious option for schools able to afford the cost and provide the support.

Applications and Languages being used in CS/CSP Curriculum

Visual Programming Languages

Alice (http://www.alice.org/)

Alice is a 3D animation program developed at Carnegie-Mellon University and designed to teach basic computational thinking skills to K-12 students by using a visual drag-and-drop interface to piece together code snippets and create complete programs. It was one of the first visual programming languages designed exclusively for teaching. Alice version 2 is currently the most commonly used version. Alice version 3 is designed specifically to teach the Java programming language, whereas Alice version 2 was not designed for this purpose. Alice version 3 uses a higher quality avatar based on the Sims 3 models. There are versions of Alice for both Mac and Windows. There is also an active listserv for Alice teachers.

AppInventor (http://appinventor.mit.edu/)

AppInventor is a browser-based visual programming language developed and hosted at MIT which uses puzzle-piece types of objects to represent code snippets and student connect the pieces together in a vlsually logical way in order to create a wide range of applications. AppInventor runs in the more current browsers and it outputs apps which run on Android devices. AppInventor was designed to teach, not to be used as a full-blown production tool, but students have demonstrated the ability to create some very advanced applications with it.

Scratch (http://scratch.mit.edu/)

Scratch, also developed at MIT, is perhaps best described as a simplified version of AppInventor and in some ways a stepping-stone to AppInventer intended for younger students with little to no experience with these kinds of programs.


Yet another visual programming language designed with puzzle-piece objects. Block.ly is generally considered to be the first of its kind. It is freely available and many other programs are based on Block.ly. Block.ly is supported by Google. There are two sites of interest for teachers and students:

Block.ly Code for Developers,


Educational Games for Parents and Teachers,


Tinkr (https://www.tynker.com)

Tinkr is an example of a VPL based on Block.ly. Tinkr offers a well-designed comprehensive CS/CSP curriculum for a monthly or annual fee.

More Advanced Programming Languages


Python is growing in popularity among scientific programmers who work wih large amounts of data doing advanced processing, and it is also finding its way into classrooms because it is free and has a large user base. There are numerous options for downloading and running python and associated IDE’s (Integrated Development Environments).


Some developers say that everyone will be using JavaScript in a few years. JavaScript is one of the most usable and versatile web programming languages available. JavaScript is free and its functionality is limited to browser-based interactivity, but it is powerful and the most rapidly growing language.


PureData is a data and more specifically audio data processor. Its use in the classroom is limited but it offers the added level of engagement using music for those students who may not show an interest in CS/CSP otherwise.


Processing is a java-based development environment with an emphasis on graphics and visualization. There is also a JavaScript version available.


Java is one of the most, if not the most, popular programming language in existence. It is free and very powerful, though its may be waning since it will no longer be developed and extended by its parent company, Oracle. It is the language currently being used for the College Board CS AP exam.


C/C++ is perhaps still the most popular programming language in existence depending on which poll you look at.


C# is considered Microsoft’s answer to Java, though it requires a Windows Server to run your code on.

Visual Basic

Some teachers say Visual Basic is possibly the best first language to teach K-12 students.

Adobe Flash and ActionScript

Adobe Flash and ActionScript are included in the Exploring Computer Science curriculum as options. Flash is the most popular web browser plugin on the internet. Most of the major multimedia sites such as TED and Youtube still use Flash. However, Flash is no longer supported on mobile devices, but Flash does offer the ability to develop for mobile apps using Adobe AIR for Android and iOS. Flash is still considered by many web developers to be the most powerful IDE ever created.

DIY and the Maker Movement

  • Arduino
  • Raspberry Pi
  • Orange Pi

Educational Robots and Robotics Programs

  • Botball
  • The Finch


Summary of CSP resources created by Art Lopez:

  1. In regards to the CS Unplugged Activities, I agree with Jeff. I (and many other CSP instructors across the country), use many of the activities as outlined by CS Unplugged. These activities are designed to teach some difficult Computer Science Principles, and it does it in such a clear and concise manner.
  2. I have created a public Canvas course for the AP CSP course: https://canvas.instructure.com/courses/944870/modules; this is the course I am designing and sharing out with the College Board for this course.
    1. You can view what I have done so far; it is a work in progress. The College Board will be directing people that would like to use the Alice Based curriculum to this course Web site since I did not have anything else available at the time.
  3. Review the AP CSP Course Planning and Pacing Guide that I have written for the College Board and align it with the curriculum that the Vista teachers are using to teach the course.
  4. Create supplementary Alice based programming exercises that are from the “Learning to Program with Alice Textbook”.
    1. Here is an example for enhancing learning of events: https://canvas.instructure.com/courses/944870/assignments/4073859?module_item_id=8295162; this exercise is from the book and uses a story board to create the event; it also has a video.
    2. Here is the folder containing all of the resources for this exercise: Robot Remote control.
    3. There are many other such exercises from the book that need to be created similar to the one I just provided.
  5. Use Pencilcode.net to supplement learning of Computer Science Principles from the Alice Based curriculum.
    1. I do not start using this until I finish teaching Module 6: Events. Then I can ask students to see if they can transferred what they have learned from the Alice Based curriculum into another programming platform such as pencilcode.net. I also want to use some a syntactically driven language that will not overwhelm students, and I think pencilcode.net does this!
    2. Here are the activities for creating computer programs in pencilcode.net: activities pencilcode.net
      1. I try to use activities that demonstrate the use of methods/procedures, parameters, and events. I ask students to describe them.
  6. Creating a digital portfolio Web site for students to display their work: https://canvas.instructure.com/courses/944870/assignments/3723109?module_item_id=7674675
    1. Here is an example that I use with students to reflect upon their understanding of methods: https://sites.google.com/site/alopezscspportfolio/reflections/methods
    2. Have you had students create Web sites to demonstrate evidence of what they have learned?
  7. Have you had students connect the BIG IDEAS of the AP CSP with everything they have learned? Can they explain abstraction, algorithms, programming or creativity? They should be able to explain these big ideas and provide examples of these from the programs they have created with Alice.
  8. Check out the presentations for teaching the AP CSP course from the pilot instructors AP CS Principles Web page: http://csprinciples.org/cs-principles/cs-principles-presentations/
    1. There are some really great ideas here!
  9. Check out the Computer Science Teachers Association AP CSP Curriculum; we will be using this to teach Unit 5, the Internet and Binary Numbers (also CS unplugged).
    1. I will be adding lessons and activities from this curriculum within the CSP course.
  10. Check out the other curricula that is being used to teach CSP: http://csprinciples.org/cs-principles-curricula/
    1. I supplement and use other curricula to teach the Big Ideas for this course. I will be embedding some of these activities in the public Canvas course that I have created.