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.

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