Whatever happened to …

… 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.

I did!

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.

Wha?

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:

10999

20999

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.

Your turn.

  • 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!

Advertisements

3 Replies to “Whatever happened to …”

  1. Memories! I went to Althouse and John Walsh taught us HYPO. We used cards to run the programs through the IBM computer at Althouse.

    You and I both started teaching in September 1979. HYPO was not being taught at DCVI. We used optical cards and coded Hollerith to write BASIC programs to send to Stratford, where the Board’s one computer was located – that’s another story…

    I added HYPO to the course. Likely as a time filler since teaching programming in 1979 was not the same as it is now! We did it on paper – I think I made up a handout to use.

    The first computer arrived in June 1980 – a Commodore PET (4016) – for those who don’t know it had 16K of memory, 40 characters across the screen – 20 lines (I think) – used audio cassette tape to store / load programs. I ordered the one for DCVI with a video out line and had “acquired” a black and white TV that I used with the PET – how else could I use one computer with classes of 30+?

    I sat down and wrote HYPO for the PET. It was written in BASIC. My HYPO only had 20 memory locations and only used 4 digit numbers – first two were standard HYPO – 30 for input, 31 for output, etc. The next two digits referenced the memory location 01 through 20 (I know, should have started at zero but remember, I was really a Geography teacher!!)

    I made it totally visual. The top line was where you entered commands. When you entered an instruction, like 3020 – it “flashed” as it was stored in memory location 01. When you would run the program – it would flash the command, show you what the instruction meant, wait for input from the keyboard, then flash the 4 digit number you entered in location 20 (assuming execution of the 3020 command), There was an AC and MQ at the bottom for addition/subtraction and multiplication/division.

    The final program was spaghetti code at its finest! Remember I was a geography major and johnny-come-lately to programming. The code took up almost all of the 16K of memory. If it wasn’t spaghetti code it likely wouldn’t have fit in memory.

    I used the program with my students to demonstrate coding with the PET connected to the TV (once the tubes in the TV warmed up). They could also use the program, one person at a time, to test their programs. Interesting side note – I set the TV on top of a metal cabinet that was designed to hold key punch cards – yes, we improvised in those days!

    I gave away the program to anyone who wanted it – obviously schools that had Commodore PETs. If only I’d been like Bill Gates and licensed it…..

    Liked by 1 person

  2. Thanks for sharing your thoughts about Hypo, Peter. My students’ version of Hypo was very structured; if I recall correctly, each opcode called a subroutine to perform the task. A project of this magnitude really showed them the importance of organization and understanding.

    We did ultimately end up with some PETs. We had a combination of Radio Shack TRS-80 computers and 8032s. I did not know that there was a 4016. I knew of the 4032 and compatibility with the 8032 was always an issue.

    Like

  3. I remember Hypo really well. Actually, I just found this posting via a search for Hypo — this is a month after you wrote this!!

    The first language I learned was FORTRAN, then BASIC. Somewhere in there, I was introduced to Hypo by someone at the Board of Education in North York. This would have been in the late 1960s. I really enjoyed it, which might explain my writing IBM 1130 Assembler, CDC Compass Assembler and IBM 360/370 Assembler. They were my first choices for projects although I also developed projects based on COBOL (not many), PL/1 (SL/1 in school) and C. Not finished with assembler, I also wrote IBM 3705 Assembler code as well. Like everyone in those days, I also dabbled in APL\360 as well.

    Today, I seem to only write PHP code and it does the job.

    But, Hypo was the language that made me feel like i understood what a computer was; understand, that the instructions weren’t magic, the logic was! It might be an interesting side project to write a Hypo interpreter in JavaScript and have it run off a website. Might be fun!

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s