Resources for teaching programming for artists, designers and architects. Mostly Python tools that produce immediate visual results. https://abav.lugaralgum.com/resources-for-teaching-programming
  • CSS 46.5%
  • HTML 29.5%
  • JavaScript 24%
Find a file
Alexandre B A Villares a6d1d03062 adding csv-to-table WIP
2026-04-09 10:44:01 -03:00
.github Update FUNDING.yml 2024-12-16 22:52:20 -03:00
_layouts Update default.html 2023-01-25 01:00:36 -03:00
csv-to-html-table adding csv-to-table WIP 2026-04-09 10:44:01 -03:00
_config.yml yaml 2017-10-31 19:00:29 -02:00
I-Host-platforms-and-languages.csv Rename file 2026-04-09 14:21:08 +02:00
II - Books & References.csv Update II - Books & References.csv 2017-01-07 21:21:11 -02:00
README.md adding csv-to-table WIP 2026-04-09 10:44:01 -03:00

Resources for teaching programming for artists, designers and architects

(repository)

Python on the Landscape of Programming Tools for Design and Architectural Education

This page was originally made to host data from this paper, that presented an earlier version of the table below:

VILLARES, A. B. A., & MOREIRA, D. (2017). Python on the Landscape of Programming Tools for Design and Architectural Education. Presented at the SIGRADI 2017, Concepcíon, Chile.

Extended table of Hosts, Platforms & Languages

SORTABLE VIEW OF THE TABLE| CSV on codeberg | raw CSV

About the table contents: (inclusion criteria)

  • Drawing or 3D modeling software that embeds a scripting language on the user interface or allows automation with a very limited number of steps between programming and code execution.
  • Tools aimed at teaching programming in a visual or graphic context.
  • [Ad hoc: tools that have shown potential for teaching in a visual or graphic context.]

After updating a few times the data from the earlier table, work started on compiling the other tables below.


Processing + Python tools table

Name Processing features based on (& Python version) Python standard library libraries ecosystem main features main limitations
Processing Python Mode legacy Processing + Python "reference implementation" Processing 3 Java Jython (Python 2) complete Java & Processing Java Available inside Processing IDE, very Processing 3 compatible no web sharing/deployment, no modern Python 3 libs, not working with Processing 4, not maintained
py5 Processing 4 Java graphics via JPype Python 3 complete Python & Processing Java truly Python 3 compatible for libraries, can be used on Jupyter notebooks, same core capabilities as Processing 4 Java May need separate JDK install & for educational "imported mode" use it needs py5-run-sketch tool either via CLI or an IDE plug-in
p5py Based on OpenGL (incomplete), with experimental Skia backend Python 3 complete Python only truly Python compatible, no Java/JVM dependency Still Incomplete, with last release in Dec 2023. No access to the Processing Java libraries
pyp5js & pyp5js/py5mode p5.js Python 3 via Pyodide complete Python, JavaScript & p5.js web ready sketches & editor, p5.js compatible & pyodide makes it Python compatible. The py5mode makes it more similar to py5. Experimental, p5.js features only, and hard to extend with 3rd party Python packages
Py5Script p5.js Python 3 via PyScript complete Python, JavaScript & p5.js web ready sketches & advanced editor, p5.js compatible & pyscript makes it very Python compatible, you can even use numpy! Experimental, p5.js features only
Proceso p5.js Python 3 via PyScript complete Python, JavaScript & p5.js browser based sketches & very p5.js compatible, Python compatible, names similar to py5 p5.js features only
SkulptIDE and trinket.io ProcessingJS Skulpt (Python 2, going to 3 now) partial unknown, possibly JavaScript very nice web IDE, browser based sketches ProcessingJS is defunct; not extensible.
BrythonIDE p5.js Brython (Python 3) fairly complete JavaScript & p5.js Browser IDE, browser based sketches & very p5.js compatible p5.js features only

these are the ones I recommend!


More FLOSS + Python options to explore

3D

  • FreeCAD — Your own 3D parametric modeler
    • It has great a Python interactive console, bult-in editor (macro panel) and can also be used for 2D
  • Blender — Blender's Python API
  • Ursina — A 3D game engine based on the Panda3D framework
  • trimesh — A Python library to work with 3D meshes. Can be used on Jupyter Notebooks and integrates well with py5
  • CADQuery & CQ-Editor — A Python parametric CAD scripting framework
  • PyPlasm — Python version of the PLASM 3D modeling functional language
  • VPython — A 3D programming environment for Python
  • sdfCAD — A Python library to generate 3D meshes based on SDFs (Signed Distance Functions)
  • OpenSCAD + Python tools:
  • raylib/pyray — Python bindings for the raylib framework.

2D

  • ShoeBot — A great creative coding environment designed for making vector graphics and animations
    • Related to the DrawBot/NodeBox1/PlotDevice family of tools. See also drawbot-skia (a new implemetation of DrawBot)
  • pyxel — A retro game engine for Python.
  • pygame-zero — A zero-boilerplate games programming framework for Python 3, based on Pygame.
  • guizero — A really easy Python GUI library (based on Tkinter).
  • Bezmerizing — Allison Parrish's wonderful tiny library.
    • based on Flat — Generative infrastructure for Python.
  • PageBot — Scriptable page layout, vector graphics and typography environment.
  • Pero — A unified Python API for multiple drawing backends.
  • generativepy — Generative art and graphing library based on PyCairo.
  • vsketch — A plotter-centric Python generative art toolkit.

Books and references


Please consider feedback, colaboration by means of pull requests, and/or a small donation!


Copyright (c) 2014-2026 Alexandre B A Villares. This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. CC-BY-SA-4.0 License