{"id":3334,"date":"2013-06-13T12:16:21","date_gmt":"2013-06-13T18:16:21","guid":{"rendered":"http:\/\/minkhollow.ca\/beckerblog\/?p=3334"},"modified":"2014-09-12T11:38:18","modified_gmt":"2014-09-12T17:38:18","slug":"teaching-programming-skills","status":"publish","type":"post","link":"https:\/\/minkhollow.ca\/beckerblog\/2013\/06\/13\/teaching-programming-skills\/","title":{"rendered":"Teaching Programming Skills"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Approximate Reading Time: <\/span> <span class=\"rt-time\"> 4<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><p>I came across this article recently: <a href=\"http:\/\/www.prweb.com\/releases\/stem-education\/tynker-creative-computing\/prweb10607730.htm?953&amp;goback=%2Egde_2811_member_231910425\">Tynker Launches Revolutionary New Platform for Teaching Programming Skills to Young Learners<\/a> Mountain View, CA (PRWEB) April 11, 2013<\/p>\n<p><a href=\"http:\/\/www.prweb.com\/releases\/stem-education\/tynker-creative-computing\/prweb10607730.htm?953&amp;goback=%2Egde_2811_member_231910425\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft\" alt=\"\" src=\"http:\/\/minkhollow.ca\/beckerblog\/wp-content\/uploads\/2013\/04\/gI_66341_tynker_easterisland_1000px.jpg\" width=\"250\" height=\"200\" \/><\/a><\/p>\n<div id=\"nuan_ria_plugin\">\n<p>You know\u2026\u2026<br \/>\nI\u2019m starting to think Syntax really IS important.<\/p>\n<p>I recently finished teaching a 1st year programming class in Java. The last time I taught 1st year programming (I mean, really*) was in 2006.<\/p>\n<p>Kids have changed.<\/p>\n<p align=\"right\"><em>* I taught a programming in Alice course in 2008 &amp; 2009, but that\u2019s different.<br \/>\n<\/em>Read on to find out why.<\/p>\n<p>Now, the kids in this class were of typical intelligence and potential. It was a relatively small class so I got a chance to get to know them (at least, the ones who showed up to class on a regular basis)<\/p>\n<p>As i had done throughout the term, I gave them a &#8216;free&#8217; work period for their lab on their last assignment. It was a great turnout &#8211; almost everyone was there (which is quite impressive because the lab starts at 8am). At one point I looked around the room and it struck me &#8211; this did not look like a bunch of people working on a programming problem. I asked them how many were having trouble, and almost everyone put up their hands. For the most part, they were just sitting there &#8211; no paper, no notes, just staring at the screen probably wondering why they didn\u2019t know what to do.<\/p>\n<p>I felt like I had failed them, but at the same time I realized there was a limit to what I could do in a single course &#8211; and trust me, I had pretty much tried everything I could in the time I had.<\/p>\n<p>So much for digital natives. They may be whizzes at texting (I confess to some envy here as I am not) and they may spend the majority of their waking hours connected, but <a title=\"Computer Literacy: Does knowing how to drive = understanding cars?\" href=\"http:\/\/minkhollow.ca\/beckerblog\/2012\/04\/02\/computer-literacy-does-knowing-how-to-drive-understanding-cars\/\">using is not the same as knowing<\/a>.<\/p>\n<p>SO much of the tech world is apps written in ways that people don\u2019t need to learn anything &#8211; you don&#8217;t need to learn anything about the application, or indeed, even the task that the application is design to facilitate.<\/p>\n<p>In many ways this is good &#8211; computers are\u00a0<em>supposed<\/em> to make our lives easier, &#8230;.<br \/>\nBUT (see also <a title=\"Are We Teaching Our Kids to NOT learn?\" href=\"http:\/\/minkhollow.ca\/beckerblog\/2013\/04\/18\/are-we-teaching-our-kids-to-not-learn\/\">Are we teaching our kids to NOT learn?<\/a>)&#8230;..<\/p>\n<p><em><strong>BUT&#8230;..\u00a0 this\u00a0 does NOT help anyone learn logic, and logic is ESSENTIAL to programming. AND, learning the picky details of programming language syntax is a integral part of programming literacy.<br \/>\n<\/strong><\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-medium wp-image-3573\" alt=\"024\" src=\"http:\/\/minkhollow.ca\/beckerblog\/wp-content\/uploads\/2013\/06\/024-159x300.jpg\" width=\"159\" height=\"300\" srcset=\"https:\/\/minkhollow.ca\/beckerblog\/wp-content\/uploads\/2013\/06\/024-159x300.jpg 159w, https:\/\/minkhollow.ca\/beckerblog\/wp-content\/uploads\/2013\/06\/024.jpg 400w\" sizes=\"auto, (max-width: 159px) 100vw, 159px\" \/>Also, it turns out, fluency in logic is essential to problem solving in the general sense (an ability which has serious implications to our continued societal evolution &amp; development).<\/p>\n<ul>\n<li>Problem solving requires attention to detail.<\/li>\n<li>You need to notice things.<\/li>\n<li>You need to be willing to try things &#8211; test stuff, you know, let\u2019s see if this idea works.<\/li>\n<li>You need to be able to decompose a problem into smaller, more manageable parts.<\/li>\n<li>You need to be able to recognize and characterize SYSTEMS.<\/li>\n<li>You need to be able to look at something from various levels of abstraction &#8211; sometimes simultaneously.<\/li>\n<\/ul>\n<p>So, here&#8217;s a BIG problem:<\/p>\n<p>When learning programming using drag and drop tiles (<a href=\"http:\/\/alice.org\" target=\"_blank\">Alice<\/a>, <a href=\"http:\/\/scratch.mit.edu\/\" target=\"_blank\">Scratch<\/a>, <a href=\"http:\/\/www.tynker.com\/\" target=\"_blank\">Tynker<\/a> <a href=\"http:\/\/venturebeat.com\/2013\/04\/12\/why-your-8-year-old-should-be-coding\/\" target=\"_blank\">http:\/\/venturebeat.com\/2013\/04\/12\/why-your-8-year-old-should-be-coding\/<\/a>, \u2026) they DO NOT learn syntax because we\u2019ve decided it\u2019s not important.And for getting young kids excited about programming, I agree that it&#8217;s a great approach. But&#8230;..<\/p>\n<p>Stop.<br \/>\nThink about this for a bit.<\/p>\n<p>When you have a visually pleasing graphical interface that hides the structure of the programs you are creating, what people end up doing is just blindly trying stuff. Drag a tile in &#8211; see if it does what I need. No? OK try a different one. There\u2019s no analysis &#8211; no thought, just play.<\/p>\n<p>&nbsp;<\/p>\n<p>Play is great and all, but it turns out you need the rest too &#8211; you really do need the structure. <em><strong>You need to learn how to analyse a problem; how to understand a system.<\/strong><\/em><\/p>\n<p>&nbsp;<\/p>\n<p>I never realized until this course just how important my original training in CS was. While I would not advocate going back to programming on cards, I learned some very valuable skills <i>because<\/i> I could not simply sit down at a computer and start to code. I learned to spend the time to understand the problem; I learned to do hand execution; and to \u201cplay compiler\u201d. I <i>had to<\/i> &#8211; I often only got <strong>one<\/strong> chance per day to test my program (that&#8217;s <strong>ONE RUN PER DAY<\/strong>). Our assignments were no less complex than ones typically handed out today &#8211; so on a typical 2 week assignment we would get AT MOST 10 chances to compile and test out programs (data centers were often closed on the weekends). When you only get 10 tries you MAKE SURE each one is going to count.<\/p>\n<p>Can you even imagine how today&#8217;s students would react if you told them they would only be allowed one single compile\/run in a 24-hour period? We had 2-hour labs way back then too. What did we DO for 2 hours if we couldn&#8217;t repeatedly change a line and compile to see if it worked?<\/p>\n<p>Here&#8217;s what we did:<\/p>\n<ul>\n<li>We learned how the compiler worked so we could parse our own programs and find bugs before the compiler did.<\/li>\n<li>We did hand execution of our programs to verify that our logic was sound.<\/li>\n<li>We learned how to <em>do what the program said<\/em> rather than what we meant during hand execution.<\/li>\n<li>We learned to proofread.<\/li>\n<\/ul>\n<p>We need to help students learn these skills. This is REALLY important.<\/p>\n<\/div>\n<div><\/div>\n<div id=\"nuan_ria_plugin\"><\/div>\n<div id=\"nuan_ria_plugin\"><\/div>\n<\/p>\n<div class='wp_likes' id='wp_likes_post-3334'><a class='like' href=\"javascript:wp_likes.like(3334);\" title='' ><img decoding=\"async\" src=\"http:\/\/minkhollow.ca\/beckerblog\/wp-content\/plugins\/wp-likes\/images\/like.png\" alt='' border='0'\/><\/a><span class='text'>Be the first to like.<\/span><\/p>\n<div class='like' ><a href=\"javascript:wp_likes.like(3334);\">Like<\/a><\/div>\n<div class='unlike' ><a href=\"javascript:wp_likes.unlike(3334);\">Unlike<\/a><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Approximate Reading Time: <\/span> <span class=\"rt-time\"> 4<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>I came across this article recently: Tynker Launches Revolutionary New Platform for Teaching Programming Skills to Young Learners Mountain View, CA (PRWEB) April 11, 2013 You know\u2026\u2026 I\u2019m starting to think Syntax really IS important. I recently finished teaching a &hellip; <a class=\"more-link\" href=\"https:\/\/minkhollow.ca\/beckerblog\/2013\/06\/13\/teaching-programming-skills\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","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":[353,14,81,24],"tags":[164,135,41,47],"class_list":["post-3334","post","type-post","status-publish","format-standard","hentry","category-computers-2","category-general","category-information-technology","category-teaching-learning","tag-computational-thinking","tag-computing-education","tag-education","tag-programming"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p4Hsb6-RM","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":3264,"url":"https:\/\/minkhollow.ca\/beckerblog\/2013\/01\/16\/bbc-news-viewpoint-computer-code-frees-us-to-think-in-new-ways\/","url_meta":{"origin":3334,"position":0},"title":"BBC News &#8211; Viewpoint: Computer code frees us to think in new ways","author":"Katrin Becker","date":"January 16, 2013","format":false,"excerpt":"BBC News - Viewpoint: Computer code frees us to think in new ways. Very well said. There's lots here to like and agree with: To date the reasons behind the changes have seemed very skills-based, as if instilling particular skills will lead to growth in business and the economy. Really,\u2026","rel":"","context":"In &quot;Computers&quot;","block_context":{"text":"Computers","link":"https:\/\/minkhollow.ca\/beckerblog\/category\/computers-2\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":256,"url":"https:\/\/minkhollow.ca\/beckerblog\/2009\/10\/03\/teaching-introductory-programming-were-doing-it-wrong-still\/","url_meta":{"origin":3334,"position":1},"title":"Teaching Introductory Programming: We&#8217;re Doing It Wrong (still)","author":"Katrin Becker","date":"October 3, 2009","format":false,"excerpt":"I just read Mark Guzdial's excellent post on some of what's wrong with how we teach introductory programming courses. Question Everything: How We Teach Intro CS is\u00a0Wrong The notion that we should be modeling expert behaviour when teaching programming is silly. Experts work quite differently from novices. We accept this\u2026","rel":"","context":"In &quot;Educational Technology&quot;","block_context":{"text":"Educational Technology","link":"https:\/\/minkhollow.ca\/beckerblog\/category\/educational-technology\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":962,"url":"https:\/\/minkhollow.ca\/beckerblog\/2010\/07\/24\/another-attempt-to-fix-broken-education-by-simply-making-it-more\/","url_meta":{"origin":3334,"position":2},"title":"Another Attempt to Fix Broken Education by Simply Making it More","author":"Katrin Becker","date":"July 24, 2010","format":false,"excerpt":"I've seen this before. Summer Vacation is once again under attack in the U.S. See: The Case Against Summer Vacation - TIME. There is no question that formal education is broken in the U.S. (To be fair, it isn't so hot here in Canada either, but it IS considerably better\u2026","rel":"","context":"In &quot;Educational Technology&quot;","block_context":{"text":"Educational Technology","link":"https:\/\/minkhollow.ca\/beckerblog\/category\/educational-technology\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3654,"url":"https:\/\/minkhollow.ca\/beckerblog\/2013\/07\/24\/if-we-cant-teach-programming-create-software-engineering-for-poor-programmers-computing-education-blog\/","url_meta":{"origin":3334,"position":3},"title":"If we can\u2019t teach programming, create software engineering for poor programmers | Computing Education Blog","author":"Katrin Becker","date":"July 24, 2013","format":false,"excerpt":"If we can\u2019t teach programming, create software engineering for poor programmers | Computing Education Blog. Oh wow. Talk about taking the words right out of my mouth! Who knew you could get a book published that said this? I totally agree with Nathan Ensmenger's take on software engineering. What do\u2026","rel":"","context":"In &quot;Educational Technology&quot;","block_context":{"text":"Educational Technology","link":"https:\/\/minkhollow.ca\/beckerblog\/category\/educational-technology\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2283,"url":"https:\/\/minkhollow.ca\/beckerblog\/2012\/06\/13\/stretching-your-mind-arguing-for-multiple-programming-languages-for-designers-computing-education-blog\/","url_meta":{"origin":3334,"position":4},"title":"Stretching your mind: Arguing for multiple programming languages for designers \u00ab Computing Education Blog","author":"Katrin Becker","date":"June 13, 2012","format":false,"excerpt":"Stretching your mind: Arguing for multiple programming languages for designers \u00ab Computing Education Blog. \u00a0 Well worth repeating. Also, something I've been saying for years. This is from jruby 2012 and the keynote by Venkat Subramaniam. Knowing multiple programming languages changes how we design software in any language. It changes\u2026","rel":"","context":"In &quot;Educational Technology&quot;","block_context":{"text":"Educational Technology","link":"https:\/\/minkhollow.ca\/beckerblog\/category\/educational-technology\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1482,"url":"https:\/\/minkhollow.ca\/beckerblog\/2010\/12\/07\/computational-science-needs-cs-education-but-does-it-need-cs\/","url_meta":{"origin":3334,"position":5},"title":"Computational Science needs CS Education: But Does It Need CS?","author":"Katrin Becker","date":"December 7, 2010","format":false,"excerpt":"Computer Science is dead (or should be). I love reading Mark Guzdial's blog. He so often talks about things I think are important, AND (perhaps not surprisingly) things about which I have strong opinions. Here's another: Computational Science needs CS Education \u00ab Computing Education Blog. Computer science professors may not\u2026","rel":"","context":"In &quot;Educational Technology&quot;","block_context":{"text":"Educational Technology","link":"https:\/\/minkhollow.ca\/beckerblog\/category\/educational-technology\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/minkhollow.ca\/beckerblog\/wp-json\/wp\/v2\/posts\/3334","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/minkhollow.ca\/beckerblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/minkhollow.ca\/beckerblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/minkhollow.ca\/beckerblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/minkhollow.ca\/beckerblog\/wp-json\/wp\/v2\/comments?post=3334"}],"version-history":[{"count":8,"href":"https:\/\/minkhollow.ca\/beckerblog\/wp-json\/wp\/v2\/posts\/3334\/revisions"}],"predecessor-version":[{"id":3576,"href":"https:\/\/minkhollow.ca\/beckerblog\/wp-json\/wp\/v2\/posts\/3334\/revisions\/3576"}],"wp:attachment":[{"href":"https:\/\/minkhollow.ca\/beckerblog\/wp-json\/wp\/v2\/media?parent=3334"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/minkhollow.ca\/beckerblog\/wp-json\/wp\/v2\/categories?post=3334"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/minkhollow.ca\/beckerblog\/wp-json\/wp\/v2\/tags?post=3334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}