Program with Paint Brushes, Not Pencils
This post advocates for a new approach to teaching programming, moving beyond tedious tasks to foster creative expression through high-level abstractions. The author introduces a PaintBrush Python class, an example of a tool designed to make coding visual and engaging for students. This method aims to keep students motivated to code by hand, even as AI models make code generation increasingly effortless.
The Lowdown
The article proposes a pedagogical shift in teaching computer science, emphasizing creative expression over rote coding exercises, especially in an era dominated by large language models (LLMs). The author argues that instead of viewing LLMs as a threat to learning to code, educators can leverage them to create more engaging and abstract teaching tools, much like moving from 'pencils' to 'paint brushes' in art education.
- The author, a former high school CS teacher, developed a
PaintBrushPython class to enable students to create visual art with simple code, building on the familiarturtlemodule but offering a higher-level abstraction. - This
PaintBrushclass allows students to draw lines between specific coordinates, simplifying the process of creating visual output and making programming more immediately rewarding. - The core idea is that high-level abstractions, which can now be rapidly generated by LLMs, allow educators to craft more novel and diverse creative coding projects (e.g., music, data visualization, games) than previously possible with existing libraries like
turtleorpygame. - By focusing on creative, expressive coding projects facilitated by custom abstractions, students are more likely to develop self-efficacy and pride in their work, regardless of AI's ability to generate code quickly.
Ultimately, the piece champions the idea that programming education should prioritize fostering authentic creation and engagement, leveraging abstractions as 'paint brushes' to inspire students to see coding as a powerful tool for artistic and personal expression.