{"id":1243,"date":"2024-12-26T20:46:14","date_gmt":"2024-12-26T20:46:14","guid":{"rendered":"https:\/\/blogs.kcl.ac.uk\/proged\/?p=1243"},"modified":"2024-12-26T20:46:14","modified_gmt":"2024-12-26T20:46:14","slug":"guideline-8-use-a-spiral-approach","status":"publish","type":"post","link":"https:\/\/blogs.kcl.ac.uk\/proged\/2024\/12\/26\/guideline-8-use-a-spiral-approach\/","title":{"rendered":"Guideline 8: Use A Spiral Approach"},"content":{"rendered":"<p style=\"font-weight: 400\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1244 size-large\" src=\"http:\/\/blogs.kcl.ac.uk\/proged\/files\/2024\/12\/guides-8-1024x502.png\" alt=\"A decorative image showing the test &quot;Guidelines for Teaching Programming&quot; and the number 8.\" width=\"584\" height=\"286\" srcset=\"https:\/\/blogs.kcl.ac.uk\/proged\/files\/2024\/12\/guides-8-1024x502.png 1024w, https:\/\/blogs.kcl.ac.uk\/proged\/files\/2024\/12\/guides-8-200x98.png 200w, https:\/\/blogs.kcl.ac.uk\/proged\/files\/2024\/12\/guides-8-100x49.png 100w, https:\/\/blogs.kcl.ac.uk\/proged\/files\/2024\/12\/guides-8-768x376.png 768w, https:\/\/blogs.kcl.ac.uk\/proged\/files\/2024\/12\/guides-8-1536x752.png 1536w, https:\/\/blogs.kcl.ac.uk\/proged\/files\/2024\/12\/guides-8-500x245.png 500w, https:\/\/blogs.kcl.ac.uk\/proged\/files\/2024\/12\/guides-8.png 1931w\" sizes=\"auto, (max-width: 584px) 100vw, 584px\" \/><\/p>\n<p style=\"font-weight: 400\">One common mistake (and yes, I think it\u2019s a mistake!) that I often see in teaching (and especially in textbooks) is to try to be exhaustive too early. When it is time to mention, for example, data types, you have to say <em>all<\/em> there is to say about data types. Or if it is a textbook: since this is the chapter with data types, it has to have a table of <em>all<\/em> the types and all their operations.<\/p>\n<p style=\"font-weight: 400\">Since types are needed early, this lesson\/chapter comes early. Perhaps a pupil only needs to use a number and a string, but suddenly they hear everything about floats, booleans, chars, type conversions, widening casts, and whatever else there is to say about the intricacies of type systems.<\/p>\n<p style=\"font-weight: 400\">The problem is that learners do not know which bits of the information is relevant right now, and which isn\u2019t. It\u2019s just <em>stuff<\/em>.<\/p>\n<p style=\"font-weight: 400\">The result: The relevant information is lost, the budding programmer is overwhelmed, learning is rote (and therefore boring), and no one but the author is happy.<\/p>\n<p style=\"font-weight: 400\">The thing to do instead: Use a spiral approach. When encountering any concept for the first time, say only as much as is needed to get the task done. Get learners to get a result on screen without overloading them with detail. Then return to the topic again (and again) over the next weeks, each time deepening the discussion and understanding.<\/p>\n<p style=\"font-weight: 400\">There are several benefits to it: First, you avoid adding cognitive load for no (immediate) gain. Let pupils concentrate on what is needed. Second, you get to the fun parts more easily and quickly. And thirdly, linear instruction doesn\u2019t work in programming anyway. Constructs in any modern language have circular dependencies, and you cannot fully explain everything in a single sequence.<\/p>\n<p style=\"font-weight: 400\">By revisiting concepts multiple times, you can get to interesting results quickly, deepen understanding as learners develop, and discuss influences of specific language constructs on others, pointing out the (circular) dependencies of one language design element on the others.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>One common mistake (and yes, I think it\u2019s a mistake!) that I often see in teaching (and especially in textbooks) is to try to be exhaustive too early. When it is time to mention, for example, data types, you have &hellip; <a href=\"https:\/\/blogs.kcl.ac.uk\/proged\/2024\/12\/26\/guideline-8-use-a-spiral-approach\/\">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-1243","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\/1243","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=1243"}],"version-history":[{"count":1,"href":"https:\/\/blogs.kcl.ac.uk\/proged\/wp-json\/wp\/v2\/posts\/1243\/revisions"}],"predecessor-version":[{"id":1245,"href":"https:\/\/blogs.kcl.ac.uk\/proged\/wp-json\/wp\/v2\/posts\/1243\/revisions\/1245"}],"wp:attachment":[{"href":"https:\/\/blogs.kcl.ac.uk\/proged\/wp-json\/wp\/v2\/media?parent=1243"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.kcl.ac.uk\/proged\/wp-json\/wp\/v2\/categories?post=1243"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.kcl.ac.uk\/proged\/wp-json\/wp\/v2\/tags?post=1243"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}