Hi, I'm Geoff

I love to teach, and I love to code.
I teach students to code.
And I write code that helps them learn.

My goal is to teach computer science to as many students as possible. I do this by creating interactive learning environments that scale. More about me...


I post essays here on teaching, technology, and the overlap between the two. I try to keep my essays on teaching accessible to teachers who don't program, and my essays on technology interesting to programmers who don't teach.

Here are my latest four essays. For the complete set, click here.

2021-08-13 : Grade Uncertainty

Grade uncertainty represents the amount of uncertainty students have about how they are doing in a course. Reducing grade uncertainty has proven positive in my courses, even if it has had some interesting side effects.

2021-07-30 : Poorly Structured

Why are college courses structured so differently from classes in high-school? And does introducing more structure help our students learn better?

2021-07-23 : Computerized Testing for CS1

Nothing has been more transformative for my CS1 course than frequent computerized assessments. Including programming questions on weekly proctored quizzes keeps students on track while also helping support many other unproctored assessments. Initially facilitated by an on-campus testing center, we've now successfully transitioned that component of the course online. I'll talk about how and why to use computerized assessments in CS1.

2021-07-16 : Quantifying CS1

Finding ways to measure success or failure is important when teaching any course, but particularly when teaching CS1. I outline five metrics that I use to evaluate CS1, describe how and why to collect them, and present results from my own course.

For more essays, click here.