Skip to content

Instantly share code, notes, and snippets.

@acbart
Created April 26, 2026 23:33
Show Gist options
  • Select an option

  • Save acbart/14aa1173fe2f9431a742cdbd11489464 to your computer and use it in GitHub Desktop.

Select an option

Save acbart/14aa1173fe2f9431a742cdbd11489464 to your computer and use it in GitHub Desktop.
Quick Description on BlockPy's Major Features

I think every year at SIGCSE there's someone showing off another in-browser IDE for coding. My own contribution to this space is BlockPy (scratch editor: https://blockpy.cis.udel.edu/blockpy/, 2017 paper: https://ieeexplore.ieee.org/abstract/document/7924251), which has several pedagogical features:

  • Dual block-text code editor ("BlockMirror", https://github.com/blockpy-edu/BlockMirror), where anything you do in the blocks converts to text, and vice versa
  • Tracing and stepping support with VCR style controls ("View Trace" after you run code)
  • Playback of "remembered inputs", although most people don't realize that feature exists (it's the button in the top-right corner)
  • Integration with the CORGIS datasets project to let you have interesting datasets right there: https://corgis-edu.github.io/corgis/blockpy/
  • Uses skulpt to execute python code locally in the browser, without needing a backend (we're probably going to finally switch to Pyodide this summer though, much like Tiger Python)
  • Rich console supports a few different libraries to a limited extent, like Turtles, Matplotlib, PIL, Pygame, and our own web library Drafter (https://drafter-edu.github.io/)
  • Support for uploading Jupyter Notebooks (since those are actually just json files with python code)
  • Deep integration with Pedal, our autograding framework for Python, which enables immediate feedback beyond just unit testing and also various things like testing output, syntactic structure, semantic logic, etc.: https://pedal-edu.github.io/
  • Other parts of the backend allow you to have quiz-style questions (e.g., multiple choice, matching, fill-in-the-blank), readings (markdown with images and executable code examples), and so on. We actually have another part of the system that supports TypeScript too. (https://github.com/blockpy-edu/blockpy-server). And all of this is done with LTI so you can embed it directly in your LMS and get grade passback, and dump logs to ProgSnap2 format (https://cssplice.org/progsnap2/) for research purposes.

I always thought that more features of these would make their way into other online environments, since none of them are particularly hard to implement. I've kept a BlockPy installation here at University of Delaware, since it fills most of our needs. It's an open source project (https://github.com/blockpy-edu/blockpy) so others run their own version. Like all of these open-source coding environments, it's kind of a laissez-faire situation, since I'm always time limited and driven by my own local needs. I never turned on the refactoring, code folding, or autocomplete features of CodeMirror but it would actually probably be pretty trivial to do so...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment