Recent Blog Posts
Acing a C Homework Using Inline Assembly
February 7, 2019
In courses taught in Java (such as a data structures class), you can build pretty robust autograders for homeworks — after all, the student’s code runs in the JVM, which prevents it from doing spooky things like corrupting memory or branching to weird places. So you can run the grader instantly after submission on a service like Gradescope and boom, they’ve got their grade. But C homeworks provide students a lot more opportunities to write… unconventional solutions.
Autograding Gameboy Advance DMA Transfers
December 8, 2018
In CS 2110 at Georgia Tech, we use the Gameboy Advance to demonstrate how C code can interact directly with hardware. On a high level, students create games by reading button states directly from memory-mapped registers and write directly to a special region of memory called the “video buffer,” which the video controller continuously reads and draws on the screen.
But my favorite example of students poking with the GBA hardware introduces them to an important real-life example: Direct Memory Access (DMA)!
Scanning a Book into a PDF
May 8, 2018
I’ve always wondered how the shady PDF wizards make those shady textbook PDFs you find online, and I was bored yesterday, so I decided to find out.
Preparing the Patient At first, I tried to spreading the book and placing each pair of pages on a flatbed scanner, but that led only to frustration because the pages made poor contact with the scanner. Instead of trying to sort out the blurring, I drove to Kinkos and paid $2.