Archive for January, 2018

“The present is the least interesting time to live in.”

January 15, 2018 Leave a comment

“Have a glimmer of an idea; take it out 30 years where there is no possibility of worrying about ‘how am I going to get from where I am now to this idea?” That is the idea killer of all time: ‘how is this incremental to the present?’ The present is the least interesting time to live in.” — Alan Kay (at the 41 min 20 sec mark)

Alan Kay, 2015: Power of Simplicity

Categories: Uncategorized

My first CS class started with Turing machines

January 5, 2018 1 comment

My freshman year in Washington University in St. Louis began in the Fall of 1989. I took a class called CS135. It was required of CS majors, as well as majors in other fields that had an introductory CS course requirements. I have no recollection of what the class was actually called, and alas cannot find any references to it on the web.

The class was roughly divided into three equal parts: 1) Turing machines, 2) assembly language, and 3) Pascal.

The lab computers were early MS-DOS PCs of some sort, with a couple of 5 1/4″ disk drives. There were five per table, linked to a dot matrix printer via hardware switch.

Seriously, the class started with Turing machines. We were provided a Turing machine simulator, where we’d convert our state diagrams into a table, enter the input tape, and watch the states change and the Turing machine’s read/write head move back and forth and twiddle the symbols on the tape.

The second section of the class used a fake assembly language called SNORE. You’d type in your program and see which instruction was being executed and watch the registers change. Alas, I can’t find any information on SNORE on the web; this may partially be the result of the word SNORE (like Processing) naturally getting a lot of Google hits that have nothing to do with programming.

The final third of the class was Pascal, and was much more along the lines of what most intro CS classes at others schools were probably like at the time. (Pascal was all the rage in the 80s, largely because Philippe Kahn got the idea to sell Turbo Pascal for $50, when compilers from companies such as Microsoft cost hundreds of dollars, were slower, and overall provided a much less pleasant user experience.)

The second class, CS236, was entirely in Pascal, and covered more advanced topics like pointers. I tested out of CS236, and went straight to taking CS301, which was a typical “discrete math for CS folks” class. (I had never formally studied pointers, but after a few examples it was easy enough to figure out what they did and be able to step through and hand scratch a few programs using them.)

Looking back on CS135, almost three decades later, and almost two decades into teaching, I wonder what the designers of the class were thinking. I don’t particularly recall what my feelings were as a student — I probably I thought the Turing machines were interesting puzzles but wanted to get on with “real” programming. Of course, I see that the designers were going for a more CS-flavored version of the Patt & Patel Introduction to Computing Systems: From Bits and Gates to C and Beyond curriculum, starting at a low level and then building increasing layers of abstraction. Except Turing machines are of theoretical interest; no actual practical computer directly uses a Turing machine model of computation as its core. I can’t imagine that the Turing machines felt exciting and motivating to anyone who wasn’t already highly inclined towards CS — and there ware quite a few non-CS majors in the class.

In any case, CS135 was short lived, soon to be replaced by CS101, which was based on Scheme — but that’s the topic for another post.

So, dear readers: did any of you have an unusual introductory CS course? What do you think about starting out with Turing machines?

Categories: Uncategorized