Suggested Curriculum

The Arcade library is designed to support education. Get students hooked on programming. Then start teaching them new concepts, as students discover the need.

Arcade’s theme: “Only advanced actions should require advanced knowledge.” What does this mean? For example, if a students want to create an image with drawing commands, they should not have to know about defining functions, classes, or using decorators, or any other advanced programming topic.

If you are looking for an on-line textbook to get ideas from, see:

Below is a rough list of common first-course items to teach, and the order they could be taught in.

Stage 1:


  • Learn to call drawing commands and create your own drawings.
  • Learn to use variables to change your drawing.
  • Teach students about common error messages, and how to read and use them.

Stage 2:

Draw and animate with functions

  • Learn to create functions, so you can make your own draw_tree commands
  • Learn to animate with functions and static variables (or skip this and use classes later. Static function variables are weird.)
  • Teach students about expressions and simple mathematics in Python.

Stage 3:

Learn to use loops

  • Learn to loop
  • Learn nested loops (learn to use nested loops to draw grids, triangles, etc.)
  • Testing and unit tests

Stage 4:


  • Working with lists
  • Creating lists from scratch
  • Keeping locations of items in a list (drawing stars or falling snow)
  • Array-backed grids (This can be pushed back in the curriculum easily)

Stage 5:

Object-oriented programming

  • Object-oriented programming
  • User control of items
  • Sprites

Stage 6:

Other topics

Do these in any order:

  • Physics engines
  • Files
  • Code libraries
  • Searching
  • Sorting
  • Recursion
  • String formatting
  • Decorators