{"id":1218,"date":"2024-12-21T16:14:49","date_gmt":"2024-12-21T16:14:49","guid":{"rendered":"https:\/\/blogs.kcl.ac.uk\/proged\/?p=1218"},"modified":"2024-12-26T13:55:53","modified_gmt":"2024-12-26T13:55:53","slug":"guideline-5-show-program-structure","status":"publish","type":"post","link":"https:\/\/blogs.kcl.ac.uk\/proged\/2024\/12\/21\/guideline-5-show-program-structure\/","title":{"rendered":"Guideline 5: Show program structure"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1219 size-large\" src=\"http:\/\/blogs.kcl.ac.uk\/proged\/files\/2024\/12\/guides-5-1024x502.png\" alt=\"Decorative image showing the text &quot;Guidelines for Teaching Programming&quot; and the number 5\" width=\"584\" height=\"286\" srcset=\"https:\/\/blogs.kcl.ac.uk\/proged\/files\/2024\/12\/guides-5-1024x502.png 1024w, https:\/\/blogs.kcl.ac.uk\/proged\/files\/2024\/12\/guides-5-200x98.png 200w, https:\/\/blogs.kcl.ac.uk\/proged\/files\/2024\/12\/guides-5-100x49.png 100w, https:\/\/blogs.kcl.ac.uk\/proged\/files\/2024\/12\/guides-5-768x376.png 768w, https:\/\/blogs.kcl.ac.uk\/proged\/files\/2024\/12\/guides-5-1536x752.png 1536w, https:\/\/blogs.kcl.ac.uk\/proged\/files\/2024\/12\/guides-5-500x245.png 500w, https:\/\/blogs.kcl.ac.uk\/proged\/files\/2024\/12\/guides-5.png 1931w\" sizes=\"auto, (max-width: 584px) 100vw, 584px\" \/><\/p>\n<p style=\"font-weight: 400\">In much of programming teaching at school level, the discussion revolves around syntax and statements. I realise that \u2013 with young learners \u2013 mastering a loop is initially a challenge. But the statement level (and especially syntax) is neither the difficult, nor interesting, nor important part of programming.<\/p>\n<p style=\"font-weight: 400\">Every pupil will learn to write an assignment and an if statement. This is not where the difficulty lies, nor where the important concepts, which we want our students to understand, are illustrated.<\/p>\n<p style=\"font-weight: 400\">The most important part of learning to program is abstraction, and its incarnations in structuring a problem, conquering complexity and guiding our thinking.<\/p>\n<p style=\"font-weight: 400\">In object-oriented languages, this is embodied by classes, objects and methods. In procedural approaches, it manifests in procedures and functions, scope of data and separation of concerns.<\/p>\n<p style=\"font-weight: 400\">It is important to visualise this structure early and often. In the best case, use a programming environment that provides the structure visualisation. Use an environment that de-emphasises syntax, ideally removing the need to memorise where it can.<\/p>\n<p style=\"font-weight: 400\">If you don\u2019t have an environment like this, do it yourself: draw diagrams on the whiteboard. Do what works, but TALK ABOUT STRUCTURE.<\/p>\n<p style=\"font-weight: 400\">The challenge of learning about statements will become meaningless. The challenge of designing program structures will remain \u2013 it is an intrinsic part of being a programmer and computer scientist. Make this the centre of teaching your students good programming practice.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In much of programming teaching at school level, the discussion revolves around syntax and statements. I realise that \u2013 with young learners \u2013 mastering a loop is initially a challenge. But the statement level (and especially syntax) is neither the &hellip; <a href=\"https:\/\/blogs.kcl.ac.uk\/proged\/2024\/12\/21\/guideline-5-show-program-structure\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":179,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,13],"tags":[],"class_list":["post-1218","post","type-post","status-publish","format-standard","hentry","category-programming","category-teaching"],"_links":{"self":[{"href":"https:\/\/blogs.kcl.ac.uk\/proged\/wp-json\/wp\/v2\/posts\/1218","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.kcl.ac.uk\/proged\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.kcl.ac.uk\/proged\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.kcl.ac.uk\/proged\/wp-json\/wp\/v2\/users\/179"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.kcl.ac.uk\/proged\/wp-json\/wp\/v2\/comments?post=1218"}],"version-history":[{"count":2,"href":"https:\/\/blogs.kcl.ac.uk\/proged\/wp-json\/wp\/v2\/posts\/1218\/revisions"}],"predecessor-version":[{"id":1235,"href":"https:\/\/blogs.kcl.ac.uk\/proged\/wp-json\/wp\/v2\/posts\/1218\/revisions\/1235"}],"wp:attachment":[{"href":"https:\/\/blogs.kcl.ac.uk\/proged\/wp-json\/wp\/v2\/media?parent=1218"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.kcl.ac.uk\/proged\/wp-json\/wp\/v2\/categories?post=1218"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.kcl.ac.uk\/proged\/wp-json\/wp\/v2\/tags?post=1218"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}