… the Hypo Programming Language?
Have you ever had to learn a programming language well enough to teach it in a few weeks? Memories and inspiration for this post came from last week when I talked about optical marked cards.
It was for my first teaching job. Teaching Grade 11 and Grade 12 Computer Science was going to be a piece of cake. (or so I thought) The language of instruction was to be Fortran and COBOL. Both of these languages had been a part of my university program so I knew the language.
But, it was the Grade 10 course that had me concerned. Actually, this concern extended to Grade 9. In the Business Department, the Grade 9 course was a collection of units in Accounting, Marketing, and Data Processing. In the Data Processing unit, and in the Grade 10 course, we were to use the Hypo programming language.
I’d never heard of that before but how difficult could it be? It was a pre-cursor to Fortran after all.
Well, it turned out that Hypo stood for “Hypothetical Computer”. It was a language that got you to dig into the things that higher level languages just assumed that you knew or plain didn’t care about. Things like how a computer does arithmetic. Things like data going into a storage location of your choice. Then, you’d load the contents from memory and push them onto a stack. Once in the stack, you could do simple operations like adding, subtracting, etc. Once you had performed the operation, you’d send it to be printed. Instructions were simple; the computer could only do things one step at a time and you had to provide each and every step.
Instructions were coded by the programmer. Each instructions had a two digit opcode (operation code) and a three digit operand (usually making reference to a memory location). Speaking of memory locations, there were 1000 of them in this hypothetical machine ranging from 000 – 999. I could bore you with the details but, if you’re interested, check out this document. My entire course summarized in eight pages!
We did have a textbook. It was authored by John Walsh from Western University and others and called “Informatics: Introduction to Data Processing”. So, at the conclusion of my successful interview, I asked to take a copy of the textbook home with me. And, I read it from cover to cover over that summer and was ready to go for the first of September. I felt I knew the programming language in its entirety without ever writing or debugging a line of code! For the most part, I was writing the programs and assignments along with the students that fall and we all learned the language together. Co-learning before co-learning was a thing.
I quickly became conversant with instructions like:
Like all of the courses at the time, it was expensive. It was done on cards and five characters per card sure wasn’t an efficient use!
I had lots of students take that course and then followed up with “real” programming languages in subsequent grades. The Hypo language itself eventually became a memory —- and then it became a project. I would have students write their own interpreter in the real language we were using at the time. We’d use arrays and stacks and talk about simple operations and brought them altogether for the purpose of the project. I could kick myself for not hanging on to one or two of these excellent submissions. They’d be fun to play around with today.
Hypo did indeed become a memory after a while. Courses evolved with newer technologies and the opportunities they provided. Eventually, we licensed Turing and used it as an introductory language. Today, many students will use Scratch or Alice or Hopscotch or the like for their first language. Many others use Python as an introductory language and some actually build complete programs right through Grade 12 around it. It’s a nice choice. It’s an interesting change from the good ol’ days. Unlike Hypo which really required you to think about the computer hardware (albeit a hypothetical one), there are things like variables and higher level instructions that make learning about the hardware itself pretty much unnecessary. The newer languages open up more opportunities; Hypo pretty much left you dealing with mathematics problems. But, you could come up with interesting problems all the same. I’d look for current ideas like this one – Library book returned 75 years late, with no fine. I’d turn that story into a problem and the great emergent programmers of the time would dig into that with great enthusiasm. What would the fine actually be today if it was collected?
These were the tools available at the time. The choice was made by the school and not the teacher. Probably, as Alfred Thompson says in a recent post “You’re Teaching the Wrong Programming Language“. It’s an interesting observation if you’re focusing on languages. But, if you are focused instead on the concepts from learning to code, I don’t think there is a “wrong” programming languages. Education isn’t or shouldn’t be a training institution; it’s a learning place and particularly in computer programming, students will go through a number of languages in their career.
- Were you ever a Hypo programmer?
- What was your first programming language? How did it impact the way you use computers today?
- Did you ever program in an assembler language? Do you still feel the love?
- If today’s students start to learn to code in a block language, do they miss something by not understanding the hardware of the computer they’re programming on?
- At what stage do you wean students off block coding and move to programming?
- For computer science teachers, how do you address the concepts of memory limitations and subsequent things like programs crashing because of out of memory messages?
- For those of you who might be programmers or who studied programming, how many languages have you actually used? Do you have a favourite?
Please share your thoughts via comment below.
Do you have an idea or thought that would be appropriate for my “Whatever happened to … ” series of blog posts. They can all, by the way, be revisited here.
Please visit this Padlet and add your ideas. I’d love for it to be an inspiration for a post!