Unit 0: Drawing
This initial unit prioritizes getting students making personally-meaningful things as fast as
possible. This means we aren’t aiming for completeness. In particular, we’re not introducing
data structures in this unit; most students won’t need them, and we’ll spend a lot of time with
them in the next unit.
Working within the context of drawing, students practice building up complex programs from simple
ones. We’ll use Python’s turtle library. Loosely inspired by Chris’s Python drawing unit from GMS.
- Imperative programming
- Basics of syntax
- Control flow: sequences, loops, conditionals, functions
- Levels of abstraction: functions, modules
- Decomposition and code reuse.
- Introductory debugging strategies.
Each cycle will contain 3 labs with core content designed to last 80 minutes and extension
content. Class sessions in each cycle will be chunked into an 80 minute session and two 135
minute sessions. This should allow all students ample time to complete the core content of
each of the three labs in a cycle while providing extension content to students who complete
the labs more quickly.
Check-ups will serve the purpose of reviewing past content and preparing for future content.
After each lab, students will complete a check-in question to check their understanding of
a practice or concept covered in the lab. These will usually be code-based problems like
asking students to create various drawing primitives. Additionally, some check-ups will
ask students to do preparatory work like finding pieces of art they like or identifying
patterns in the world.
Create some personally-meaningful drawing. First, a draft will be due with a sketch of the
final project and some planning, including planned subroutines and pseudocode. Each drawing
project should highlight the unique opportunities of computational art by utilizing repeated
patterns, abstract designs, customization, and/or user/viewer interaction.