In memory of CESIL

18 01 2010

A couple of weeks ago, for some now-forgotten reason, I found myself thinking about the first programming language I ever learnt.

In particular, I was thinking about the pros and cons of it being a minimal, assembler-like language that was designed specifically to teach the fundamentals of computers and programming.

The language was CESIL (“Computer Education in Schools Instructional Language”), the year was 1974, I was 15, and the class was GCSE “Computer Studies”. The hardware was hand-punched cards that were sent off by post to some other place, with results returned a week later, just in time for the next lesson.

For the second year we moved on to BASIC using a Teletype crammed into a corner of a little room up in the school’s attic (theoretically that should have been a lot better, but in practice it was so inconvenient and unreliable as to be almost useless).

That sounds unbearably tedious and uninspiring now, but way back then it was amazing that we were able to use an actual real-life computer and were learning about computers as part of our schooling.

Anyway, as clunky as the arrangements were, and as much as others will no doubt disagree, I still think CESIL itself was a great introduction to programming.

Conceptually, it was an assembler-like language that operated on integer values in a single register. It supported:

  • Named variables
  • A handful of simple operations on the register and one variable or constant
  • Conditional branching based on testing of the register value and labels on statements
  • Some minimal input facilities (reading one value at a time from a list supplied at the end of the source file)
  • Some minimal output facilities (a simple “print” statement) facilities
  • Pretty much nothing else… at least as far as I remember.

The syntax was just about the simplest one could imagine for that particular set of features. You can probably already picture the entire language.

The beauty of this was that, with no prior knowledge of computers of any kind (which in those days usually meant not even having a realistic concept of what a “computer” is), you could be taken straight into tackling simple algorithmic problems (like finding the largest of a given set of numbers, sorting numbers etc), without any undue distraction or complications. At the same time the class lessons could use this as a context for explaining computer hardware, what was actually happening when your program ran, and more general computer-science topics.

You were immediately seeing a reasonable model of the fundamental concepts of computers and algorithms, getting a feel for what programming is like, how to test and debug code etc, but without getting bogged-down in syntax rules or complex abstractions. The once-per-week cycle taught you to be careful and precise, and to desk-check and dry-run your code. More generally it forced you to figure out what you were doing, rather than just flapping around and guessing with a trial-and-error approach (like so many people seem to do today).

In practice the limited resources also meant that some things had to be done in pairs or small teams. So whether by design or accident, you also got a taste of what it’s like to develop code with other people.

Against it, there was clearly a limit to how far you could go with CESIL, the practical difficulties made for very slow progress, and the language itself was never going to be of any direct use to you afterwards (as opposed to, say, being taught a real assembler language). So even in a two-year course you really did need to move on to something else fairly quickly and then forget about CESIL.

But on the whole I still think it was a great way to lay the foundations for a lifetime of programming. I’m grateful to whoever instigated getting this set up and introduced into schools – I suspect my career may have been very different without it!

Anyway, once this had crept back into my head for no particular reason, it seemed worth a quick look to see if CESIL has entirely vanished or whether there’s any information on it still knocking around. Whilst I’ve not found any official documentation or history, somebody has blogged about stumbling across the CESIL course book.

More astonishingly, someone has resurrected it – by writing an open-source interpreter for it. I’m rather tickled to see that someone has done this, just for the sake of it!


Actions

Information

3 responses

12 05 2010
Chris Harlow

Oh how I wish I still had the Computer Education In Schools book. I remember CESIL well but I also remember that it often took several weeks for the results to come back… (it was 1969!) oh how we pined for those results.

Actually, we moved on to the next language in the book, SIR, quite quickly. This was a genuine machine code assembler language with numeric opcodes (1=add, 2=negate and add, etc up to 15) with ran on an Elliot 905 if memory serves correctly. I recall trying to write a program that would plot character based graphs but I don’t think we ever got the listings back for that one before the end of the course.

I totally agree, these were a stunningly good introduction into how the machines of the day actually worked and it stood me in good stead for over 40 years of programming in dozens of languages.

13 05 2010
closingbraces

@Chris,

1969… that’s well before my time… we never got SIR, just on to BASIC as the second language. So it sounds like you got an even better grounding than we did (albeit with an even longer delay in getting results back).

I wonder what year it all started in? I’d never have guessed this was already going on in 1969.

13 05 2010
Chris Harlow

I believe 1969 was the first year… we did it as a kind of “extra studies” module in lower 6th so there was no qualification/exams.

Leave a comment