{"id":1474,"date":"2007-03-23T12:23:29","date_gmt":"2007-03-23T19:23:29","guid":{"rendered":"http:\/\/dabacon.org\/pontiff\/?p=1474"},"modified":"2007-03-23T12:23:29","modified_gmt":"2007-03-23T19:23:29","slug":"debug-first","status":"publish","type":"post","link":"https:\/\/dabacon.org\/pontiff\/2007\/03\/23\/debug-first\/","title":{"rendered":"Debug First?"},"content":{"rendered":"<p>After Scott <a href=\"http:\/\/www.scottaaronson.com\/blog\/?p=212\">confessed<\/a> to still programming in BASIC, I had a good time recalling how I first learned to program.  My first interaction with a computer and &#8220;programming&#8221; was through LOGO, that cute little program for programming a little turtle to draw graphics.  Drawing cool and crazy pictures was fun!  But I don&#8217;t really remember learning that as &#8220;programming&#8221; so much as it was learning geometry (I was in the second grade at the time) and I certainly recall sharing the computer (probably not very sharefully.)  But the real way I learned to program was not through LOGO but through debuging!<br \/>\nIn the (g)olden days of my halycon youth you could buy computer magazines which had in the back of the magazine lines of BASIC to enter into your computer in order to play a game.  Now I was all about playing games, and when we obtained at TRS-80 Color Computer, my parents only bought one game cartridge, so in order to play more games we had to type them into the computer.  A group of neighborhood kids would get together and do this.  One person would read and the other would type and others which check to make sure what was being typed was correct.  Even with these precautions, however, we would, invariably make a mistake.  So when you made a mistake you had to go looking through the program to find out where we made an error.  Eventually, at first, we&#8217;d just go through the whole program line by line.  But as we got more sophisticated we began to understand how, when the game died while doing X it meant that the program was probably at Y when this happened and so we began to understand what all that funny stuff we were typing in was.  Eventually we got very good at debugging the code we typed into the computer.  Indeed, in a very real sense, I learned to debug before I learned to code!  (Years later I can still recall the astonishment of a high school teacher who watched me debug a program in a fairly rapid time \ud83d\ude42 )<br \/>\nSo here is a question.  Sure we could teach students to program using your favorite language FAVLANG, but what if it was possible for us to teach debuging before we taught programming.  What if the structure of the introduction to programming was centered around finding and fixing bugs.  I mean, after reading <a href=\"http:\/\/www.amazon.com\/Soul-New-Machine-Tracy-Kidder\/dp\/0316491977?ie=UTF8&amp;s=books&amp;qid=1174578317&amp;sr=8-1\">Dreaming in Code<\/a>, where the book ends with thousands of bugs left unfixed, I can only imagine that good debugging skills are important.  Maybe even as important as coding skills?  Just a thought.  But even if this is not the way to go, <b>how<\/b> could you teach debugging before you taught programming?  Now that&#8217;s fun to think about.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>After Scott confessed to still programming in BASIC, I had a good time recalling how I first learned to program. My first interaction with a computer and &#8220;programming&#8221; was through LOGO, that cute little program for programming a little turtle to draw graphics. Drawing cool and crazy pictures was fun! But I don&#8217;t really remember &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/dabacon.org\/pontiff\/2007\/03\/23\/debug-first\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Debug First?&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[20,83],"tags":[],"class_list":["post-1474","post","type-post","status-publish","format-standard","hentry","category-computer-science","category-teaching"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/dabacon.org\/pontiff\/wp-json\/wp\/v2\/posts\/1474","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dabacon.org\/pontiff\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dabacon.org\/pontiff\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dabacon.org\/pontiff\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dabacon.org\/pontiff\/wp-json\/wp\/v2\/comments?post=1474"}],"version-history":[{"count":0,"href":"https:\/\/dabacon.org\/pontiff\/wp-json\/wp\/v2\/posts\/1474\/revisions"}],"wp:attachment":[{"href":"https:\/\/dabacon.org\/pontiff\/wp-json\/wp\/v2\/media?parent=1474"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dabacon.org\/pontiff\/wp-json\/wp\/v2\/categories?post=1474"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dabacon.org\/pontiff\/wp-json\/wp\/v2\/tags?post=1474"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}