.. _suggested-curriculum: 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: -------- Draw ^^^^ * 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: -------- Lists ^^^^^ * 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