teaching machines

Grades vs. Experience in CS1

Every year I like to examine how a student’s prior programming experience correlates with their final letter grade. At the very beginning of the fall semester, I asked my students in our introductory programming course to complete a short survey. In one of the questions, I asked about their first programming experience. Here’s what they […]

A Selection of Commit Messages

It’s that time of year—that time when I read and share what my students have written throughout the semester for Git commit messages. There were 130 students and 7 homework assignments in the class, which makes for a lot of messages. I have pruned them considerably. The ones I have kept provide a reasonable snapshot […]

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 […]

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 […]

College Humor

Office hours was just about over, and the line that normally piles up outside my door had evaporated bit by bit till there was nothing left but a peaceful hallway. But then—footsteps. A student appeared at my door, said she had a joke to share, and then launched a crumpled up piece of paper at […]

== true

When I was a junior in college, I lost a point on an exam because I had code like this: if (isTall == true) { … } Dr. Wallingford showed me with his red pen that == true is completely unnecessary. This is quite clear when you consider the truth table: isTall isTall == true […]

The Before Loop

My students last week invented the “before” loop. We won’t talk about loops in class for a while yet, but they waste no time in accidentally spawning them in unexpected ways. See their latest cleverness:

Checking Slack Participation with Ruby and OAuth2

A couple of years ago, a student asked me if I thought MOOCs were going to make universities obsolete. I said no, because in my experience of taking MOOCs, one thing that didn’t scale was the number of people answering questions in the forums. No matter the class size, there seemed to be about 5-10 […]

Job-shadowing Mr. Kurt

Today I job-shadowed Mr. Kurt, a 4th and 5th grade teacher at the Chippewa Valley Montessori School. I am not looking to become an elementary school teacher. I just wanted to see how someone spends the entire day with such undeveloped brains and bodies. As a university professor, teachers of this age group instantly have […]

Rule #37 for Teaching Computer Science

Never use placeholders. For example, never tell students to change directories with a command like this: cd /home/USERNAME Students will report back that the directory /home/USERNAME did not exist, and they were therefore not able to do their homework. Do not describe an image file format to students like this: P1 WIDTH HEIGHT … Students […]