Templates for teaching

Hi,
I’m teaching some bright 12-13 year old boys about if in a couple of months’ time. I would love to get them going with inform 7… My own expertise is still fairly novice though and I feel that it could be an intimidating program for them. What would really help is to have some templates that they could write into… I realise that there are lots of egs on the inform 7 site but I’m after something a little more ‘vanilla’ than this, along the lines of a fill the blanks exercise. Moving on, it would be amazing to have a series of templates which introduced easy but gradually more complex puzzles to implement. Has anyone got anything like this? If not, would anyone be able to help in creating a short series of templates? All suggestions welcome.

I would look at Aaron Reed’s book Creating Interactive Fiction with Inform 7, which takes a workbook-like approach. It’s not quite a template, in that you still have to type in the code yourself (depending on what your teaching focus is, this may be an Excellent Thing or an annoyance); but it is still a step-by-step, series-of-exercises thing.

You might want to take a look at that weekly coding tasks that has just recently started up. The idea here is to help out beginners get to grips with Inform 7 by attempting various coding puzzles.

Hope this helps.

I’d say those exercises are way too advanced climbingstars.

I’ll add my vote to using Aaron Reed’s book. It’s what got me started and is a really good tool.

There was a good step-by-step for teaching kids of that age TADS 2 quite a few years back. It had them coding their house. Sorry, can’t find it from my phone (if it’s still around). Maybe do that?

Hi,

I’ve got the Reed book so I’ll definitely dig it out after that advice. However, I felt that parts of sanddancer might be a touch mature - all the flashback sequences etc. Has anyone done a hierarchy of generic puzzles? What I mean by this is say a list where 1) easiest = go 2) get and give an object etc … This might provide a nice little ladder in terms of the implementation side for them (I realise you could modify the difficulty of the above in all kinds of ways but a general list for a small location)… All suggestions for finding or creating material really appreciated again.

You should check out this handy list of I7 documentation. The Inform IDE has a recipe book of mini example games. All of these are placed on a difficulty rating of four stars. If you go to the Inform Recipe book, and click to arrange the games in thematic order, then you can get something very much like a hierarchy of generic puzzles. From these you could easily pick a suite of one-star games to work through. Disenchantment Bay is a set of 11 simple examples that add up to a fuller scenario, working through these might be a good educative experience.

There is a series of handouts for “Getting Started with Inform 7” from http://www.hpiweb.com/newmedia/, that seem useful.

Brendan Desilets has this http://if1.home.comcast.net/~if1/inform_7.htm as part of a web site about “Teaching and Learning with Interactive Fiction”.

And, of course, there’s also Jim Aikin’s Inform 7 Handbook, which I think was intended for the same audience as yours.

You’re not alone. I’ve spoken to a number of teachers who have wanted to get their students writing text adventure games, and they all found that Inform was just too complicated and intimidating (the natural language may be easy to read, but for newbies it can be frustrating to write, as you have to know exactly the right way to express yourself - difficult if you’re new to programming).

It’s early days but several teachers are having great results so far with Quest: textadventures.co.uk/quest/

Because it is a point and click interface, it’s easier to get started. You don’t need to know the right way of saying what an object and a room is - you can just click the “Add object” or “Add room” button and fill in the template fields.

Kristian Still has a large number of blog posts on using Quest in the classroom here: kristianstill.co.uk/wordpress/tag/quest/

I spent a very interesting day in February using Quest with exactly this age group: textadventures.co.uk/blog/20 … ns-school/ - I was really pleased with how well they took to it.

Gideon Williams and Kristian Still have created some resources for this age group which you may be able to reuse, so I can put you in contact with them if you’re interested.

On the other hand, that is exactly the skill that you need to learn if you want to learn to program. While students might be able to do more in a short time with a point-and-click or menu-based interface, they will presumably learn less.

I7 is a great language to read. But I bet even very experienced writers get caught up occasionally. This is because I7 totally fails the Principle of Least Astonishment. How to fix that… now that’s a hard question.

The problem with the natural language aspect – and it’s a problem that is exacerbated by trying to use it with young learners – is that one the one hand, you’re telling them “the computer needs to have things told to it in a very specific, rigorous way,” and on the other, you’re saying “well, you could say it this way, or this way (but not this other way for whatever reason).” My approach was to attempt to be as consistent as possible with which phrasings I was teaching the kids*, but this was somewhat undermined when I would give them more examples from the Recipe Book.

*For example, always setting descriptions with “The description of [such and such] is “[whatever]”,” not using the shortcut where the first quoted text after a room declaration is assumed to be its description, because that would throw them for a loop when they tried to do it on any other kind of object.

Yes, but as supreme chief of the weekly coding tasks, you have the power to make them easier!

Thanks for all the helpful links and tips - quite a few I hadn’t seen and will definitely use. Thanks also to Alex for providing an interesting alternative. I got the sense that you might need to learn quite a bit of coding if you went beyond the basics of quest though - is that fair? I’ll certainly show it to them so that they can decide… In terms of inform, I get the sense that there isn’t a step-by-step guide to introducing the creation of IF for this age group in a classroom over a number of lessons out there yet so I will post a link to mine once I’ve taught the course on this thread… should be ready and tested by second week of July. Fingers crossed!

As a computer science major, I’d be hesitant about introducing someone to programming via Inform 7. It has loads of syntactic sugar, which may make things easier in the short run, but will also discourage the necessary kind of thinking in the long run. Worse, it basically has no encapsulation whatsoever, and makes more frequent use of global variables than a typical programming language (technically, everything in Inform is a global variable since it’s created at compile time with a known, unique, constant name).

I’m really starting to like inform but sometimes it is really frustrating too. I can’t say what it’s like to learn Inform if you’re not a programmer, but I recognise that most of the things that I find so frustrating are mainly about mapping my general coding concepts onto Inform and back. How do you return a value from a method? Are kinds actually classes, and if so, how does inheritance work? How do you make an array, or a key/value map? Is there any kind of exception handling? What the heck are those “topics”? Or finding things that you could have told me so much faster: Oh, it’s an enum, why didn’t you just say so?

Maybe these things are actually less frustrating if you come to Inform without a history of other languages. On the other hand, maybe you’re going to hit that same wall from the other side when you try to learn another language after Inform7. What’s a Java equivalent of a rule book? Are classes actually kinds? Oh, an enum is like a kind of value, why didn’t you just say so?

All in all, sadly I’ll have to agree: inform7 is a really weird way to learn programming. Tads3 is more like a “normal” language, but I’m not so sure it’s easy to get started with. I wish there was some major branch of IF development that did not invent a new language but just was an addon, a set of ruby gems or whatever. Maybe there is?

In contrast, learning Undum really means learning the tools of the trade of contemporary web development: HTML, CSS, JavaScript, JQuery.

Obviously getting into IF does not need to be a way to learn general-purpose programming, but it could be. I remember coding text adventures in C64 basic (now lost on a tape somewhere…), that was some of first coding experiences.

I find that Inform 7 is easier to learn if you have knowledge of other programming languages such as C++, Javascript and the like. They all pretty much have the same structure, just different layouts and styles. For example, they all use the same concepts for if-else statements and for/while/do/repeat loops, so it’s easier to learn another once you’ve learned a general one.

That’s true for simple things (though some languages leave out the loops, preferring recursion), but as I said above, Inform lacks encapsulation, which is a fundamental aspect of modern, object-oriented programming. Conversely, the ability to rearrange the kind/type hierarchy is generally absent in other languages.

Any particular reason for choosing Inform? When I started with programming IF, I used TADS; it may not be natural language, but I’m of the opinion that natural language with constraints is no longer natural language. If I’m going to program, I should use something that looks like a programming language. It’s a lot easier for me to remember something completely different from English than it is for me to learn something that’s really close to English, except for some extra rules.

Plus, the starting examples for TADS 3 are almost a game already, and the documentation helps you build a complete game with all manner of objects. In fact, that might be a great place to start - just go through the documentation.

Then again, not everyone likes TADS. To each his own, eh? :slight_smile:

I’m glad that I switched to Inform 7, but I’m also very, very glad that I learned TADS 2 first.

Inform7 is such an odd language. I love it. And I hate it.

Tads3? Meh. It’s ok.