{"id":757,"date":"2011-11-18T09:21:16","date_gmt":"2011-11-18T16:21:16","guid":{"rendered":"http:\/\/www.glencora.org\/?p=757"},"modified":"2012-01-28T00:11:04","modified_gmt":"2012-01-28T00:11:04","slug":"how-osu-professors-learnt-to-program-short-personal-histories","status":"publish","type":"post","link":"https:\/\/blogs.oregonstate.edu\/glencora\/2011\/11\/18\/how-osu-professors-learnt-to-program-short-personal-histories\/","title":{"rendered":"How OSU professors learnt to program, short personal histories"},"content":{"rendered":"<p>Our faculty email list has had a recent flurry of activity as we discussed changing the choice of programming language for our CS1\/2 intro sequence. \u00a0When I jumped into the throes,\u00a0I included my own programming education as I thought it was relevant. \u00a0Having never taken an introduction to programming course in university, I tend to think (mistakenly) that everyone should learn to program &#8220;on their own&#8221;. \u00a0What followed was an eruption of personal histories that provides an interesting snapshot:<\/p>\n<p><strong>The punch-card crowd<img loading=\"lazy\" decoding=\"async\" class=\"alignright\" src=\"http:\/\/upload.wikimedia.org\/wikipedia\/commons\/8\/8a\/Blue-punch-card-front.png\" alt=\"\" width=\"217\" height=\"482\" \/><\/strong><\/p>\n<p>First up, we have those that revealed their age with their punch-card toting past. \u00a0Though amusing, this past is perhaps less relevant to the &#8220;what programming language should we use today&#8221; discussion:<\/p>\n<ul>\n<li>&#8220;I started with <a href=\"http:\/\/en.wikipedia.org\/wiki\/Fortran#FORTRAN_IV\">Fortran IV<\/a> on punch cards. The compiler was the Purdue University Fast Fortran Translator [&#8230;] &#8216;PUFFT, The Magic Dragon&#8217;.&#8221;<\/li>\n<li>&#8220;My first programming experience was in <a href=\"http:\/\/en.wikipedia.org\/wiki\/PL\/I\">PL\/1<\/a> on punch cards with eight hour turn-around time.&#8221;<\/li>\n<li>&#8220;My first computer course was [&#8230;] in FORTRAN IV, 24-hour turn-around for my punch-cards (if lucky) on an <a href=\"http:\/\/en.wikipedia.org\/wiki\/IBM_System\/360\">IBM 360<\/a>.&#8221;<\/li>\n<li>&#8220;My first language was &#8216;MUSIC&#8217;, a language that had been developed at my university for teaching purposes. [&#8230;] The whole idea of being able to create something on a computer was new and exciting. \u00a0I used to rush home from class to do my programming assignments. \u00a0Then I&#8217;d head off to the keypunch room, wait in line for a keypunch machine, punch up my deck, turn it in to a guy in a window, and come back the next day to get my output.&#8221;<\/li>\n<li>&#8220;You guys had it easy! My punched cards had to be taken to another city by a carrier and the results carried back.\u00a0It took three days to a week to get the results. I was very disappointed that my program had bugs even after three rounds! [&#8230;]\u00a0my first programming experience [was] in Fortran IV, followed by PL-1 and Lisp. My first internship required Basic, and my first job required Cobol and <a href=\"http:\/\/en.wikipedia.org\/wiki\/IBM_RPG_II\">RPG II<\/a>. They really motivated me to go to grad school. I learned C++ and Java while teaching them.&#8221;<\/li>\n<li>&#8220;Fortran IV : 1975 : <a href=\"http:\/\/en.wikipedia.org\/wiki\/Burroughs_large_systems\">Burroughs B6700<\/a>, (punchcards)<br \/>\nBinary : 1976 : <a href=\"http:\/\/en.wikipedia.org\/wiki\/Data_General_Nova\">Data General Nova<\/a>, (frontpanel bootstrap loader)<br \/>\nBasic : 1976 : <a href=\"http:\/\/en.wikipedia.org\/wiki\/Zilog_Z8\">Zilog Z8 microcontroller<\/a><br \/>\n<a href=\"http:\/\/en.wikipedia.org\/wiki\/Zilog_Z80\"> Z80 assembly<\/a> : 1980 :\u00a0<a href=\"http:\/\/en.wikipedia.org\/wiki\/IMSAI_8080\">IMSAI 8080<\/a><br \/>\n<a href=\"http:\/\/en.wikipedia.org\/wiki\/Occam_(programming_language)\"> Occam<\/a> : 1983 : <a href=\"http:\/\/en.wikipedia.org\/wiki\/Transputer\">INMOS Transputer<\/a>! [&#8230;]&#8221;<\/li>\n<\/ul>\n<div>\n<p><strong>BASIC and Pascal<\/strong><\/p>\n<p><strong><\/strong>It seems that many of us were taught <a href=\"http:\/\/en.wikipedia.org\/wiki\/BASIC\">BASIC<\/a> at home and <a href=\"http:\/\/en.wikipedia.org\/wiki\/Pascal_(programming_language)\">Pascal<\/a> early on. \u00a0Perhaps BASIC should be introduced in elementary school? \u00a0And revive Pascal? Wikipedia tells me that Pascal is used to develop Skype. \u00a0Really?<\/p>\n<ul>\n<li>I learned [BASIC] from my uncle [&#8230;] We dialed in to the Dartmouth Timesharing System from his living room in Maryland, on a <a href=\"http:\/\/en.wikipedia.org\/wiki\/ASR-33_Teletype\">KSR 33<\/a>\u00a0teletype. Later, I learned Fortran in high school and Cobol in college, where I majored in Math, and assembly language for the Xerox Sigma 9. I learned Pascal, C, and Lisp in grad school. [&#8230;] I figure if I wait long enough, I won&#8217;t have to learn Java.<\/li>\n<li>[&#8230;] BASIC on a Commodore 64 with cassette tape storage at home.\u00a0The first course I took was in high school using Pascal, which I still think is a great language. [&#8230; As] a general engineering student I [&#8230;] only signed up for intro to CS because that was what you had to do to get Internet access\u00a0[&#8230; we] were still using <a href=\"http:\/\/en.wikipedia.org\/wiki\/Simula\">Simula<\/a> [&#8230;] I wish I could say that the class blew my mind, but it was the launch of Mosaic the same year that convinced me that there was a cool future in CS. I only learned C\/C++ for the OS course, and Java, Javascript and Python in grad school.<\/li>\n<li>In my first CS class in college the language we programmed in was Pascal, but we also used a functional notation (mostly on paper!) to study recursion, fixpoint iteration, etc. Since I knew Pascal already from high school, I was kind of bored by those parts, but I was very excited by the functional language and recursion.<\/li>\n<li>I learned a little BASIC very early, around first grade (so seven or eight), then got introduced to Logo early. I thought the turtle was silly, but loved recursion, lists, and self-modifying code, so spent my childhood trying to write LISP programs in something that wasn&#8217;t quite LISP. [I] learned Pascal and Prolog &amp; wrote programs from books, but never had access to a compiler for either. Picked up C++\/C freshman year in college.<\/li>\n<li>My dad taught me Basic when I was in elementary school. I had one high school computer science class that used a teaching-language called <a href=\"http:\/\/en.wikipedia.org\/wiki\/Turing_(programming_language)\">Turing<\/a>. The course was excellent and taught program flow and basic data structures. \u00a0I learnt Matlab and C for undergraduate research jobs. I took a course on object oriented programming for math majors in my senior year &#8211; we used C++. I can say that I absolutely did not understand object oriented programming until 2 years later when I needed it for a grad-school research project.<\/li>\n<\/ul>\n<p><strong>Parametron?<a href=\"http:\/\/museum.ipsj.or.jp\/heritage\/parametron.html\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright\" src=\"http:\/\/museum.ipsj.or.jp\/heritage\/images\/parametron1.gif\" alt=\"\" width=\"320\" height=\"211\" \/><\/a><\/strong><\/p>\n<p>And then we have what I can only describe as &#8220;other&#8221;:<\/p>\n<ul>\n<li>How I learned programming is probably most unusual.\u00a0I had to learn it for myself. I learned Fortran II first on a Hitachi machine\u00a0that used <a href=\"http:\/\/en.wikipedia.org\/wiki\/Parametron\">parametrons<\/a>. The program was punched on a\u00a0paper tape by using a teletypewriter. Therefore, if even one character was wrong,\u00a0a whole new tape had to be created.\u00a0Unfortunately, a parametron was slower than a transistor.\u00a0Therefore, only several machines using parametrons were produced. After learning Fortran II, I programmed mostly in an assembly language\u00a0for a Toshiba machine which was a clone of GEPAC 4020.\u00a0Debugging on this machine was done by using its console which displayed\u00a0the contents of registers with lamps and which allowed memory contents\u00a0to be changed with toggle switches.<\/li>\n<\/ul>\n<div>Feel free to post your own histories in the comments.<\/div>\n<div><em>These histories have been edited for brevity.<\/em><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Our faculty email list has had a recent flurry of activity as we discussed changing the choice of programming language for our CS1\/2 intro sequence. \u00a0When I jumped into the throes,\u00a0I included my own programming education as I thought it was relevant. \u00a0Having never taken an introduction to programming course in university, I tend to [&hellip;]<\/p>\n","protected":false},"author":3747,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-757","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blogs.oregonstate.edu\/glencora\/wp-json\/wp\/v2\/posts\/757","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.oregonstate.edu\/glencora\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.oregonstate.edu\/glencora\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/glencora\/wp-json\/wp\/v2\/users\/3747"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/glencora\/wp-json\/wp\/v2\/comments?post=757"}],"version-history":[{"count":1,"href":"https:\/\/blogs.oregonstate.edu\/glencora\/wp-json\/wp\/v2\/posts\/757\/revisions"}],"predecessor-version":[{"id":867,"href":"https:\/\/blogs.oregonstate.edu\/glencora\/wp-json\/wp\/v2\/posts\/757\/revisions\/867"}],"wp:attachment":[{"href":"https:\/\/blogs.oregonstate.edu\/glencora\/wp-json\/wp\/v2\/media?parent=757"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/glencora\/wp-json\/wp\/v2\/categories?post=757"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/glencora\/wp-json\/wp\/v2\/tags?post=757"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}