teaching machines

CS 396: Meeting 14 – Applied Data Consultants

Dear students, Today we welcome Marc Harter of Applied Data Consultants as our guest. When I first moved to this town, one of my students told me about this guy named Marc that he worked with. This Marc apparently had an amazing knowledge of web technologies, and most of it was self-taught. A little later […]

CS 1: Lecture 37 – Lights Out

Dear students, It’s the last week! Given that we’re all stressed and ready to be done, let’s play a game today. Just kidding, let’s make one instead. We’re going to implement Lights Out, which started off as a handheld game from Tiger Electronics: The game is played on a 5×5 grid of lights, some of […]

Grandma Radially

My Stella homework never saw the light of day this semester. Students were to implement a kaleidoscopic drawing application. Pixels plotted in one wedge were mirrored around the radial axes of the image. I felt that I would have had to provide too much scaffolding code for students to feel ownership over the project, so […]

Not Tree

Hoffman Hills is a park 30 minutes west of me. Some people like to trek up its meandering trails to an observation tower and soak in the fall colors from the surrounding countryside. I prefer to visit the not-tree:

Landing in the Credits: Stories from Game Makers

I’ve been asked to serve on a panel at a GEEKCon that some folks at my university are putting on. The title is Landing in the Credits, and the panelists are students and alumni who have built games. I share here some notes on my contributions as moderator. Here we are at GEEKCon 2017 celebrating […]

Spec Adventure

The last few weeks of our introductory program class focus on objects. For a lab exercise, students design a Room class to support a text adventure game. Each Room has a description, four Room neighbors, and whatever other state the students need to support their interaction. One of the students designed an adventure that featured […]

CS 1: Lecture 36 – Unit Testing

Dear students, Today, we examine one of the less glamorous aspects of writing code: testing it. There are three big reasons to write systematic tests of your software: To make sure that your code does what you think it does. To expand your thinking into situations outside your normal parameter ranges and workflow. To ensure […]

Manual Bugs

Last October, I ran across this blurb in an article about the shooting in Las Vegas: As a software developer, the highlighted sentence puzzles me. As a human, the highlighted sentence puzzles me. The implication is that the report was incorrect because it was made by a human. Software is also made by humans. In […]

Center Bug

How do you teach elementary schoolers to programmatically trace a circle? Not with parametric equations involving sine and cosine, but with a turtle. You set them on its back, put the reins in their hands, and have them call out orders. The turtle only needs to know two commands: move and turn. Interleave these commands, […]

CS 1: Lecture 35 – Implementing a Growable Array

Dear students, Today, December 6, is National Growable Array Day. We will celebrate growable arrays everywhere by growing one of our own growable arrays, right here, in our classroom. I hope you wore your festive gear. Behind every growable array is an plain old ungrowable array. When that ungrowable array gets filled up, a new […]

1 2 3 4