Skip to content

Instantly share code, notes, and snippets.

View acbart's full-sized avatar

Austin Cory Bart acbart

View GitHub Profile
@acbart
acbart / diff_two_canvas_courses.js
Created May 3, 2026 15:54
Diff two canvas courses
(async function CanvasCourseDiffTool() {
const base = ENV.DEEP_LINKING_POST_MESSAGE_ORIGIN || location.origin;
const api = `${base}/api/v1`;
const RECENTS_KEY = "canvas_course_diff_recent_courses_v1";
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
function parseNext(linkHeader) {
if (!linkHeader) return null;
const match = linkHeader.match(/<([^>]+)>;\s*rel="next"/);
@acbart
acbart / blockpy_description.md
Created April 26, 2026 23:33
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 su
@acbart
acbart / drafter_image_example.py
Created December 3, 2025 16:42
An Example of Using Pillow in Drafter
from drafter import *
from PIL import Image as PIL_Image
from random import randint
@dataclass
class State:
image: PIL_Image
@acbart
acbart / commenter.py
Last active October 14, 2025 16:07
Chapter 9 Projects
from drafter import *
from dataclasses import dataclass
add_website_css(
".comment-line",
"display: flex; justify-content: space-between; align-items: center; border-bottom: 1px dashed #ccc;",
)
@dataclass
@acbart
acbart / example.bat
Created March 24, 2025 23:14
Example Python Scripts
python simple_python_utility.py
@acbart
acbart / README.md
Created February 26, 2025 19:00
Bookmarklet for visualizing grades in Canvas

This is a bookmarklet, you can save it as a bookmark, and while Canvas is loaded, you click on the bookmark. After a minute, it'll show the statistics for your students across assignments.

@acbart
acbart / bulk_give_admin.js
Created October 23, 2024 15:39
Bulk Give Admin Permissions to Student Repositories on Github
(function(){
const token = "GITHUB_TOKEN"; // replace with your GitHub token
const BASE_URL = "https://api.github.com";
const ORG_NAME = "REPLACE_WITH_ORG_NAME";
const REPO_BASE_NAME = "REPLACE_WITH_REPO_STARTER_";
const repos = [
// Put your student names here, as a list of strings.
// You can easily get a list of submitted students from the Download->Download Grades button on github classroom.
];
@acbart
acbart / cards_forms.csv
Last active July 15, 2024 18:53
Ars Magica-like Card Game - Generated by ChatGPT
Animal Animal The form dealing with animals and animal products.
Air Auram The form dealing with air, weather, and gases.
Body Corpus The form dealing with the human body.
Mind Mentem The form dealing with thoughts, emotions, and mental processes.
Fire Ignem The form dealing with fire and heat.
Water Aquam The form dealing with water and liquids.
Earth Terram The form dealing with earth and minerals.
Plant Herbam The form dealing with plants and plant products.
Metal Metallum The form dealing with metals and ores.
Spirit Spiritus The form dealing with spirits and ethereal entities.

image

  • Chapter 1 (Introduction): Covers the basics of Computer Science and programming. This appears to be one of the longest chapters, but is actually one of the easiest and shortest. There is a lot of ground to cover, but the pace is very gentle.
    • Part A: Explains what a program is and the basic input-processing-output model. Covers basics of values and types, simple math and logic, and interactive evaluation of expressions.
    • Part B: Explains variables and assignment statements. Introduces the idea of modules and organizing code with comments and imports. The last bit is about strings and string operations (e.g., slicing). Also covers the idea of errors/exceptions.
  • Chapter 2 (Functions): Introduces the idea of functions as "the smallest atomic unit of programming". This chapter is a little harder than the previous, but students usually don't struggle too much.
  • Part A: Starts
@acbart
acbart / example_file.py
Created October 27, 2023 18:51
Designer Game Milestone Examples
"""
This is my milestone 1 submission of Galaga. I only got a few features done, unfortunately.
Here is the link to my video:
https://www.youtube.com/watch?v=dQw4w9WgXcQ
## Galaga Features
# Milestone 1
[X] Spaceship exists
[X] Spaceship moves