Tips and Techniques for Teaching Interactive Fiction |
This is a collection of ideas and observations, in no special order, that have evolved from my experience teaching Interactive Fiction to my apprentices at Citizen Schools. Much of this will be obvious for experienced classroom teachers, but you may find some of these ideas helpful if you are a novice teaching kids for the first time. Bear in mind that my experience is limited to middle-school students (around 12-14 years old) so you may need to make adjustments if your students are older or younger.
If you have to name your class, don't repeat the mistake I made of using an obscure reference to the history of IF. My first time I called my class "Twisty Little Passages," which probably makes perfect sense to you and may even sound trite, but nobody at the school had the foggiest idea what I was talking about. After that I learned to call it "Write Your Own Computer Game."
If students do not yet have a working knowledge of the target language, it is not appropriate to try to teach them to write Interactive Fiction. Some things you can learn by watching somebody else do it, but with IF the concepts are too abstract and too numerous for that, and the students will just get frustrated. In some schools this is a real issue when there are many students who simply cannot yet function in English. You can still teach IF, but set up JIFFEE to use a target language (e.g. Spanish) that the students already know — and of course the instructor has to speak that language too.
Playing IF as a way to learn a language is a completely different situation and should work fine, because learning to play by watching someone else play is a workable strategy.
Although it seems second-nature to anyone who has played much IF, and is completely automatic for anyone who has written any IF, the idea of drawing a map does not come naturally to all students. Many aren't even familiar with the N-E-S-W compass rose conventions. Be prepared to teach map drawing as a skill; you may have to give very specific advice like showing them how to draw a line "up" to represent moving "north". Also be prepared to keep reminding them to remember what they did and write it down, as many times as needed until they start to form the right habit.
Provide paper and pencils or pens for the students to use to draw maps. Using many different colors of paper seems to help them keep interested and brightens up the room. When the class is over, collect their notes and return them at the next class. (If you don't do this, somebody is bound to forget to bring their notes to the next class. Just make sure you don't forget to bring them!)
Another skill that seems natural to adults but can be challenging to students is "reading for detail." Interactive Fiction is a great way to encourage this, but just be aware that you may have to show kids how to do it: On one memorable occasion I asked a student how many exits there were from the kitchen. He answered "three." I asked him to read the description, and he did. His answer was still "three." Then I asked him to read it yet again, this time physically pointing to each place on the screen where the description mentioned a door. Only then did he finally see that there was a fourth exit.
It is extremely unlikely that any of your students have ever seen anything remotely resembling IF before. Let them play an existing IF game for a couple of hours to get a feel for the genre before you even think about teaching them to write anything. Choose one they can complete in two hours (not one that you can complete in two hours) so they'll get a sense of accomplishment. It's OK to give them lots of hints at this point, because the goal is to introduce them to the way things work, not to force them solve all the puzzles by themselves. If you have a group, let them work together and swap solutions.
If at all possible, provide an individual computer for each student. Kids are naturally exuberant, and having their own machine to work on helps to keep them focused.
To the extent possible, try to keep a stable group of students throughout the duration of your class. The concepts build on each other in sequence, so it's not going to work well if a new student tries to join half-way through.
If you are responsible for setting up the computers that will be used, do so the day before class and allow a lot more time than you think you'll need. Computers are recalcitrant beasts, especially if you're using old ones. I always update to the latest OS and browser releases because kids will be kids and we don't need security vulnerabilities. If the students won't have the passwords to the machines be sure to turn off the screen-savers and disable power management. If they're laptops bring all the batteries up to full charge. Download local copies of any files you need in case the network fails during your class. Have at least one extra computer available in case one breaks. Pre-configure whatever text editor you're using to have the line-break and font settings that you want. Be obsessive about getting this right, because class time is precious and nothing is worse than having to debug problems when you should be teaching.
Try to get as much variety as possible. For example, instead of having them make up 4 rooms and then connect them, have them just make up two rooms and the connections, then add more rooms one at a time.
When you introduce a new concept, e.g. the "connect()" function, show them three examples. Don't bother with any kind of abstract representation of the general form, because that's not how people learn. A single example won't work either, because that won't show them what changes and what stays the same.
Give the students complete freedom about what kinds of locations and items to create. They'll surprise you with their creativity.
Keyboarding skills were not a problem for any of my students, in spite of being in an "under-served" school. This is 2009, not 1969, and they all seem to know what a computer is.
Don't bother explaining the reasons for the syntax of JavaScript. The kids just accept where the parentheses and semicolons have to go and don't question it. Ditto for how picky the computer is about errors; just explain what is causing each one and show them how to fix it. The kids accept that quickly, too.
Provide an intro for the game they're writing that displays when the game starts, and include a copyright notice with all their names in it. The students really like that.
Having each student write a piece of a game, and combining all the pieces together works well, but you have to allow some time after each class to handle the logistics of updating the master copy.
Stuff happens, so leave some slack in your schedule to deal with it. When you put together your syllabus, don't be too ambitious because you'll never be able to cover as much as you initially hope to.
Expect to spend more time in prep than you do actually teaching, especially your first time.
Don't waste time lecturing about abstract stuff, because the kids are very concrete. In fact don't lecture any more than you absolutely have to. Just show them examples and let them code. Once they have an experience base they can start to form abstractions, but not before. If you are a programmer, do not expect "normal" people to think in abstractions they way you do. :-)
Try to finish each class meeting with the whole game in working condition. This means you have to train the students to write a line or two of code and then immediately test and debug it. Of course, that's not bad advice for the rest of us either.
Create opportunities for students to come to the board and write stuff (such as code examples) for the class. That makes them feel more a part of things, and providing them a reason to get up and physically move around doesn't hurt either. Giving them responsibility also helps to keep them engaged.
If you're lucky your students will not be intimidated by the idea of a blank page, but then you'll find that their ambition far outstrips anything that can reasonably be accomplished in the time available. Part of your job is to gently guide them toward goals they can achieve.
If you possibly can, plan your class outline so that the students get to do some "fun stuff" like adding their own special commands. Build up to that as fast as you can, because if you've managed to catch their interest they'll be impatient to get there.
Make sure you use a browser with a decent error console that displays any problems with JavaScript syntax. Firefox is pretty good at this. Show the students very early on how to bring up that Error Console window.
Nearly everything the kids type will be wrong the first time, but it will take them a while to realize that. Be patient when they proudly announce "I'm done" before they've even run the code.
Once the students are hooked and have something working, you can go back and do a little English lesson: fixing up all the capitalization, punctuation, grammar, and spelling. The kids may have no idea how many mistakes they've made, so be prepared to point them out. Be sure to explain that their work will represent them on the web so they'll understand the motivation for paying attention to English.
Break the work into the smallest units that you reasonably can, especially at first. It's not unreasonable to talk for a minute or two, let them work for five minutes, then have a 2-minute group discussion of what you just did. Write a list of the current day's tasks on the board, so everyone can follow along as you work through each one.
If you have a projector available, project your laptop display onto the wall. Kids today live in a media-rich environment, so a blackboard or whiteboard won't hold their interest for very long. Use both the board and the projector to help keep them engaged. Always have your examples prepared ahead of time, but type each one in live so the students can see how it works. Don't be afraid to make mistakes, because they provide a great opportunity to demonstrate how to recover from them.
Use the board, the projector, and handouts. The more variety the better.
If you want to test your students' understanding of something, ask them to explain it back to you. What you get will rarely be as clear as you'd like it to be, but it will help you to understand what is getting across to them and what isn't.
Some students will be very vocal about asking for help, but others will not. Be on the lookout for the quiet ones and be sure they get a fair share of your attention.
A single instructor can handle about 4 students. With really good course material it should be possible to do much better, but such material doesn't exist yet and even the library itself is still a bit rough around the edges. Because JIFFEE is still a work-in-progress, teaching it requires extra individual attention.
Verify that everything is set up and working a few hours before class time, not 30 minutes before. If anything is messed up, it could take a couple hours to fix it.
If the kids' attention starts to drift, don't let things slide. Do something quickly to bring them back on track.
Be consistent about the environment (e.g. turn on the projector even if you don't need it that day) and the process (always write the task list on the board before class). It helps the students get focused.
JIFFEE and JIFFEEgames.com copyright © 2007-2010 by Michael S. Kenniston. All rights reserved. This page was last updated on 2010-01-01.