Coding as a General Education Requirement? Reflections on Inform 7 and Scratch.

At the recent Computers & Writing conference, I found myself, in the Q & A during several sessions, strongly advocating coding skills as a 21st-century core literacy.   (See Ian Bogost, Procedural Literacy. In the following reflection, I talk mostly about my use of Inform 7, but I also touch on Scratch.)

Here at Seton Hill, all students must fulfill a computer science requirement, but it’s really set up as a “how to use Microsoft Office” course.  Students who can already use a spreadsheet or make a slideshow can pay to test out of the course, but I’ve heard from many students who don’t want to pay for the test, preferring instead to take the course and get an easy A by being “taught” how to do stuff they already know.  (One faculty member has a special section of that course in which students learn how to program little table-top robots, but they still have to work in all the Office applications along the way.)

But even after students have taken this course, I regularly see evidence they have no idea what’s happening when they click an icon or connect to a network drive.  They regularly lose files, saving their website projects onto thumb drives with pointers like “file://c:/Documents and Settings/My Documents/myphoto.png”. They’re mystified when I ask them to rename a text file with an “.htm” extension, because most have never even *seen* a file extension.

While it’s good that the graphical user interface has brought the power of computing to the masses, at the same time, hiding all the working parts behind a streamlined interface turns coders into a priesthood of the elite, and that’s not good for culture at large.


When I was taking Latin as a high school freshman, an octogenarian
priest first patiently taught us English grammar.  We weren’t ready to
learn how to decline a noun or conjugate a verb, until we had first
learned the basics.  When I later took German, and still later a
graduate class on the history of the English language, I was
well-prepared, because I understood the fundamentals of grammar.

At SHU, college freshman need a lot of guidance when it comes to their
first semester-long projects.  Eventually, they learn survival
strategies — including butt-covering, for when group projects go bad. 
By the time they are seniors, most can do a semester-length independent
study or an internship without a prof micromanaging their efforts, but
they only get there with practice. 

Students who have no experience coding, and who aren’t familiar with
the pattern of developing a project (rough up a working shell with
modular components, work on filling in one component at a time,
constantly checking for unexpected dependencies that might affect the
way your components interact…) are at a disadvantage when it comes to
working in complex multimedia environments. There are, of course, many
ways to get experience working on big projects.  As a sophomore, I
designed and built the sets for a production of Little Shop of Horrors
(I built Audrey II out of hula-hoops, chicken wire, and duct tape). 
But a gen-ed compuer science requirement can do so much more than teach
students which button, out of the ones that Bill Gates gives them to
choose from, is the “right” one to push.

Old-School Text Adventures

When I taught “Writing for the Internet” last year, half of the
students chose, for their final project, to make a website in HTML, but
the other half chose to code an interactive fiction game, using Inform 7 — a free development kit for building old-school text adventure games. 

Most of my students are English majors, so they liked the fact that the
examples are all written in what looks like plain English:

The kitchen is a room. A table is in the kitchen. A tomato
is on the table. North of the kitchen is the living room. South of the
kitchen is the hallway.

The above Inform 7 code is a complete — if simple — game that will respond
meaningfully when you type things like “take tomato”, “go south” and
“drop tomato”, and manipulate the simulated environment accordingly.

It’s much harder to *write* Inform 7 code than to read it, and it took
some students a couple of weeks to make the transition. They are so
used to writing to other people who understand them when they make
typos that they found it frustrating writing to a computer, but it was
a good exercise in accuracy, and the computer gives them immediate
feedback when they “get it right.” The suite comes with extensive,
and somewhat overwhelming, documentation, but here’s a newbie-friendly Inform 7 handbook designed for middle-school kids. 

I found that first I had to introduce the students to text adventure
games, which most initially found frustrating and limited. Then I
showed them how to code a bit, and they began to understand just how
much work goes into making the story react believably, so they were
more informed (and appreciative) players of the second round of games. 

After a classroom exercise in which the class plays along with a few
games that have worked well for newbies (including Pick Up the Phone
Booth and Die, and 9:05), I had pairs of students use the Interactive Fiction DataBase
(IFDB, which rates and categorizes IF games) to find four games to play
for 15 minutes each; then they picked one of those to play for another
hour.  (Some people want a lot of silly humor, some want complex
puzzles, some want sweeping expanses to explore, some want a richly
simulated world… there’s no way that the whole class would be
satisfied if I assigned more than one or two IF games to play as a
class.)

For More Visual Thinkers

Interactive fiction works within the context of a course that attracts
English majors, but even some English majors are visual thinkers.  I’m
hoping to propose a “Multimedia Composition” course, that takes
“composition” broadly, so that I can introduce more visual tools.

The standard new media construction tool is Flash, but even my advanced
new media majors students were intimidated by it — mostly because they
had no prior coding experience (except the Inform 7 unit in a previous
class). I’m planning to revise the New Media Journalism program so
that majors have to take Flash as a separate course (it’s offered in
through the art major).

A more user-friendly introduction to visual programming is something I’ve taught to fifth- and sixth-graders — Scratch. It’s very easy to code up 2-D catch-and-avoid games, shooting games, and point-and-click adventures (suitable for the escape the room genre).  My seven-year-old isn’t ready for coding yet, but she does help me make cartoons.