{"id":6896,"date":"2017-02-15T20:52:41","date_gmt":"2017-02-15T19:52:41","guid":{"rendered":"https:\/\/magazine.swissinformatics.org\/?p=6896\/"},"modified":"2022-07-11T13:37:50","modified_gmt":"2022-07-11T11:37:50","slug":"computational-thinking","status":"publish","type":"post","link":"https:\/\/magazine.swissinformatics.org\/en\/computational-thinking\/","title":{"rendered":"Computational Thinking \u2260 Programming"},"content":{"rendered":"<p><strong>Introduction<\/strong><\/p>\n<p><em>Computational Thinking<\/em> is argued to be tomorrow\u2019s reality as a crucial skill for the 21st Century workforce. What process one follows to formulate and resolve a problem, and how the abilities of human thinking can be combined with the technical abilities of a computer to do so, are at the core of what Computational Thinking is all about. Following from that, Computational Thinking is a skill everyone should possess. It is a universal basic skill, that should be taught at school. But how does one teach such a skill effectively? Computational Thinking has close ties to programming; with many assuming that by teaching the latter automatically one will learn to think computationally. However, research shows that this is not the case. Duncan summarized a pilot study with primary school students in New Zealand with \u201cWe had hoped that Computational Thinking skills would be taught indirectly by teaching programming and other topics in computing, but from our initial observations this may not be the case.\u201d<a href=\"#_ftn1\" name=\"_ftnref1\">[1]<\/a> Indeed, Computational Thinking is much more than programming and teaching such a skill requires the use of specific tools, <em>Computational Thinking Tools<\/em>, that can assist the Computational Thinking process, without the introduction of complicated and difficult programming.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Computational Thinking<\/strong><\/p>\n<p>The term Computational Thinking was introduced to the computer science community through an ACM Communications article, written by Jeannette Wing in 2006. According to Wing\u2019s both famous and widely acknowledged definition \u201cComputational Thinking is the thought process involved in formulating a problem and expressing its solution(s) in such a way that a computer\u2014human or machine\u2014can effectively carry out.\u201d<a href=\"#_ftn2\" name=\"_ftnref2\">[2]<\/a> Through her article, Wing argued that Computational Thinking is \u201ca fundamental skill for everyone, not just computer scientists\u201d<sup>3<\/sup>. Computational Thinking should be taught everywhere, in particular at school, and computational ideas should be integrated into other disciplines. However, while commonly used definitions of Computational Thinking are gradually emerging it is much less clear how people acquire Computational Thinking to become computational thinkers. Broadly, Computational Thinking can be defined as a set of specific cognitive skills and problem solving processes. \u00a0According to Wing, Computational Thinking, among other things, is reformulating a seemingly difficult problem into one we know how to solve, perhaps by reduction, embedding, transformation, or simulation. It is \u201cthinking recursively\u201d.<sup>3<\/sup> It is \u201cparallel processing\u201d.<sup>3<\/sup> It is judging a program not just for correctness and efficiency but for aesthetics, and a system\u2019s design for simplicity and elegance.<\/p>\n<p>&nbsp;<\/p>\n<p>To understand better the broad meaning of Computational Thinking as well as its importance, it is useful to define here what this type of thinking is and what it is NOT.<\/p>\n<ul>\n<li>Computational Thinking is conceptualizing, not programming. It describes a way of thinking at multiple levels of abstraction, not only the ability to program. Actually the Computational Thinking process starts before writing the first line of code.<\/li>\n<li>It is a fundamental functional skill not a mechanical one.<\/li>\n<li>The term may include the word computer but it refers mainly to the way that humans think, not computers: computers do not think, we do the thinking for them.<\/li>\n<li>Computational Thinking is not about thinking like a computer but rather thinking with the computer.<\/li>\n<li>It complements and combines mathematical and engineering thinking.<\/li>\n<li>The products of Computational Thinking are ideas, concepts we use to approach and solve problems, they are not artifacts.<a href=\"#_ftn3\" name=\"_ftnref3\">[3]<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>While the term Computational Thinking is relatively new, the process implied by Wing can be recognized as a computationally enhanced version of the well-established scientific method. In line with Wing\u2019s definition, Computational Thinking can be considered a combination of mathematical-analytical thinking with natural sciences, engineering and other disciplines. In short, Computational Thinking is conceptualized as thinking <em>with<\/em> the computer. It is regarded and employed as a way of thinking that uses the computer as an instrument to support the human thought process, to visualize the consequences of this thought process, and to formulate a problem so that a computer supported solution can be introduced. Based on Wing\u2019s definition the Computational Thinking process can be segmented into three stages (Figure 1):<\/p>\n<ol>\n<li>Problem Formulation (Abstraction): The formulation of a question: How something works; visualising the problem using a diagram on a piece of paper. As it is clear here the use of a computer is not necessary for initiating the Computational Thinking process.<br \/>\n2. Solution Expression (Automation): Non-ambiguous expression of the solution so that the computer can carry it out. Through computer programming.<br \/>\n3. Execution &amp; Evaluation (Analysis): Solution execution by the computer showing direct consequences of one\u2019s own thinking<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<figure id=\"attachment_6898\" aria-describedby=\"caption-attachment-6898\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><img fetchpriority=\"high\" decoding=\"async\" class=\"wp-image-6898 size-full\" src=\"https:\/\/magazine.swissinformatics.org\/wp-content\/uploads\/2017\/02\/ComputationalThinking_Image_1.jpg\" width=\"600\" height=\"447\" srcset=\"https:\/\/magazine.swissinformatics.org\/wp-content\/uploads\/2017\/02\/ComputationalThinking_Image_1.jpg 600w, https:\/\/magazine.swissinformatics.org\/wp-content\/uploads\/2017\/02\/ComputationalThinking_Image_1-300x224.jpg 300w, https:\/\/magazine.swissinformatics.org\/wp-content\/uploads\/2017\/02\/ComputationalThinking_Image_1-80x60.jpg 80w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><figcaption id=\"caption-attachment-6898\" class=\"wp-caption-text\">Figure 1: Illustration of the three Computational Thinking process stages<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p>The three stages describe different ratios of human and computer responsibilities. The solution execution is largely the responsibility of the computer and the solution expression largely the responsibility of the human. While problem formulation is typically considered solely the responsibility of humans, too, \u00a0it can be argued that it is perhaps more of a mix. Computers can help support the conceptualization process as well, for instance, through facilitating visual thinking. In brief, Computational Thinking is an iterative process describing thinking with computers by synthesizing human abilities with computer affordances.<\/p>\n<p>Since Computational Thinking is such an important skill, education in general and <em>Computer Science Education<\/em> in particular, should have a focus on creating computational thinkers and not just programmers. Obviously, teaching programming with the hopes of eventually indirectly teaching Computational Thinking will get you there, but probably only through a series of boring and hard learning experiences and risking losing the majority of students along the way. Following from that, Computer Science Education should adapt its focus to support the development of Computational Thinking. Towards that end Computational Thinking Tools are useful.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Computational Thinking Tools<\/strong><\/p>\n<p>Computational Thinking Tools are educational programming environments that make the teaching of Computational Thinking practical on every school level. By supporting all three stages of the Computational Thinking process and minimizing syntactic, semantic and pragmatic challenges, they render Computational Thinking and programming accessible and exciting. Of course, Computational Thinking can be stimulated by programming like a trip from Chicago to Los Angeles can also be achieved by walking. Ultimately, one needs to better understand the precise goals and potential overhead of specific approaches. For instance, if the goal of programming is becoming a professional programmer versus a computational thinker then different tools and different scaffolding approaches may be necessary. The different purposes of \u00a0programming in education pulls programming environments into two very different directions. <em>Programming Tools<\/em> are general purpose programming environments that can be used for a large variety of projects but most interesting programs quickly become elaborate because of accidental complexity.<\/p>\n<p>With their pronounced goal to support the Computational Thinking process, Computational Thinking Tools, have a more narrow range of projects but they manage coding overhead in ways so that Computational Thinking can be expressed with little code. Of course, Programming Tools could be used for Computational Thinking or Computational Thinking Tools could be used to create general-purpose projects but in either case the mismatch between tool and application is likely to cause excessive accidental complexity. This complexity, in turn, may simply be too much to justify educational uses.<\/p>\n<p>Computational Thinking Tools must address the challenges implied by all three stages of the Computational Thinking process: problem formulation, solution expression, and solution execution\/evaluation. Problem formulation can be supported by tools that support transfer through explicit abstractions but also verbal and visual thinking. For example, Computational Thinking Tools can support visual thinking by offering various evocative spatial metaphors. Mindmap tools capture concepts as nodes and links. Spreadsheets are two-dimensional grids containing numbers and strings. The versatile nature of grids has helped spreadsheets to become the world\u2019s most used Programming Tools. Tools such as Boxer and ToonTalk employ the notion of microworlds based on containers to represent relationships.<\/p>\n<p>In order to support the stage of solution expression, the visual programming community has explored approaches to make programming more accessible. To that end, and in order to limit accidental complexity, Computational Thinking Tools \u00a0must also address semantic and pragmatic concerns of programming. Approaches such as drag and drop programming have addressed, by and large, syntactic challenges. The grand challenges of end-user programming are shifting from syntactic to semantic and pragmatic concerns. In terms of semantic challenges, live programming and similar approaches help users to understand the meaning of programs by illustrating the consequences of changes to programs. In terms of \u00a0pragmatic challenges, domain-oriented or task specific programming languages support users in employing programming languages to achieve their goals. Finally, towards supporting the stage of execution and evaluation, Computational Thinking Tools should aid the debugging process. One strategy is to simply reduce for example the gap between solution expression and solution execution &amp; evaluation. By doing this, Computational Thinking Tools can support Computational Thinking in a variety of disciplines without resulting in unnecessary complexity.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Computer Science Education<\/strong><\/p>\n<p>In particular, the Scalable Game Design project presents an excellent example of how Computer Science Education can support Computational Thinking through the combination of a game design based curriculum with Computational Thinking Tools. The goal of Scalable Game Design is to get <em>Computer Science<\/em> back to middle schools, through a low threshold, high ceiling curriculum. This gentle learning slope curriculum allows students and teachers to quickly start with game design activities producing simple classic games but then continue to sophisticated games exhibiting artificial intelligence. For many years, the Scalable Game Design project has systematically trained teachers not only in Computational Thinking but also in teaching Computational Thinking, and evaluated the efficacy of these approaches, using the two Computational Thinking Tools AgentSheets and AgentCubes.<\/p>\n<p>A simple example of how AgentCubes online supports the second stage of the Computational Thinking process, is the way it resolves the accidental complexity that occurs when trying to program the 15 squares puzzle, shown here (Figure 2).<\/p>\n<figure id=\"attachment_6900\" aria-describedby=\"caption-attachment-6900\" style=\"width: 299px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" class=\"wp-image-6900 size-medium\" src=\"https:\/\/magazine.swissinformatics.org\/wp-content\/uploads\/2017\/02\/ComputationalThinking_Image_2-299x300.jpg\" alt=\"Figure 2: The 15 squares puzzle game\" width=\"299\" height=\"300\" srcset=\"https:\/\/magazine.swissinformatics.org\/wp-content\/uploads\/2017\/02\/ComputationalThinking_Image_2-299x300.jpg 299w, https:\/\/magazine.swissinformatics.org\/wp-content\/uploads\/2017\/02\/ComputationalThinking_Image_2-150x150.jpg 150w, https:\/\/magazine.swissinformatics.org\/wp-content\/uploads\/2017\/02\/ComputationalThinking_Image_2.jpg 300w\" sizes=\"(max-width: 299px) 100vw, 299px\" \/><figcaption id=\"caption-attachment-6900\" class=\"wp-caption-text\">Figure 2: The 15 squares puzzle game<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p>This classic children\u2019s game consists of sliding 15 numbered squares into a sorted arrangement, 1-15, in a 4 x 4 grid. From a Computational Thinking point of view the core idea is simple: click the square you want to slide into the empty space. However, many existing computer program implementations of the game, including those in visual programming languages such as Python and Java, have upwards of 100 &#8211; 300 lines of code. If one were trying to learn Python and Java coding, implementing these solutions could have immense benefit. However, exposing students to Computational Thinking necessitates tools that are better suited to solution expression without the addition of unnecessary complexity. The Computational Thinking Tool AgentCubes offers at the syntactic level drag and drop programming, while at the level of semantics, it offers not only live programming but also a technique called Conversational Programming, resulting in a solution that is only four lines of code long (Figure 3).<\/p>\n<p>&nbsp;<\/p>\n<figure id=\"attachment_6903\" aria-describedby=\"caption-attachment-6903\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" class=\"wp-image-6903 size-full\" src=\"https:\/\/magazine.swissinformatics.org\/wp-content\/uploads\/2017\/02\/ComputationalThinking_Image_3.jpg\" alt=\"Figure 3: The AgentCubes online solution of the 15 squares puzzle game\" width=\"600\" height=\"384\" srcset=\"https:\/\/magazine.swissinformatics.org\/wp-content\/uploads\/2017\/02\/ComputationalThinking_Image_3.jpg 600w, https:\/\/magazine.swissinformatics.org\/wp-content\/uploads\/2017\/02\/ComputationalThinking_Image_3-300x192.jpg 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><figcaption id=\"caption-attachment-6903\" class=\"wp-caption-text\">Figure 3: The AgentCubes online solution of the 15 squares puzzle game<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p>Computational Thinking Tools and Programming Tools can be integrated technically or pedagogically. While most beginning mandatory courses with highly constrained time budgets may initially be best off to start with Computational Thinking Tools it often makes sense in later elective courses to switch to Programming Tools. There are many ways to technically integrate both kinds of tools. An early version of AgentSheets included an extremely powerful but also somewhat dangerous Lisp block allowing advanced users to enter arbitrary Common Lisp to be integrated into their Blocks program. Alternatively, pedagogical integration would employ scaffolding approaches to transition from a Computational Thinking Tool to a Programming Tool without actually integrating tools technically. An example of such a scaffolding approach is that AgentSheets\/AgentCubes can convert blocks programs into Java and JavaScript sources respectively. This can help students to understand to make the transition.<\/p>\n<p>Furthermore, AgentSheets \/AgentCubes use the game design motivational characteristics and their ability to support the development of a rich set of skills consistent with STEM and IT competency frameworks but they do so with a focus on supporting Computational Thinking. As a result, AgentSheets and AgentCubes are not just about game design but about learning to think computationally in ways that they can be leveraged by students to build STEM simulations. The Predator\/Prey project, for example, can also be built with just 10 rules to investigate the stability of ecosystems (Figure 4). AgentCubes includes plotting tools to visualize data and to export it to other tools such as Microsoft Excel or Google Sheets for further analysis.<\/p>\n<p>&nbsp;<\/p>\n<figure id=\"attachment_6902\" aria-describedby=\"caption-attachment-6902\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6902 size-full\" src=\"https:\/\/magazine.swissinformatics.org\/wp-content\/uploads\/2017\/02\/ComputationalThinking_Image_4.jpg\" alt=\"Figure 4: The Predator\/Prey project\" width=\"600\" height=\"379\" srcset=\"https:\/\/magazine.swissinformatics.org\/wp-content\/uploads\/2017\/02\/ComputationalThinking_Image_4.jpg 600w, https:\/\/magazine.swissinformatics.org\/wp-content\/uploads\/2017\/02\/ComputationalThinking_Image_4-300x190.jpg 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><figcaption id=\"caption-attachment-6902\" class=\"wp-caption-text\">Figure 4: The Predator\/Prey project<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Computational Thinking Tools appear to have a purpose bigger than that of teaching Computational Thinking. Besides their pronounced goal to support the Computational Thinking process, Computational Thinking Tools have the potential to transform complicated programming to a highly accessible, even fun learning experience. They have the potential to turn around the persisting assumption that Computer Science is \u201chard and boring\u201d. The Cognitive\/Affective Challenges space (Figure 5) is a conceptual framework exploring how the previously mentioned perception, of Computer Science being \u201chard and boring,\u201d can be transformed to being \u201caccessible and exciting.\u201d The lower left of this space is the \u201ccompute prime numbers\u201d using C++ and Emacs activity which, by the vast majority of kids, is considered to be hard and boring. In the upper right corner is the elusive holy grail of Computer Science Education providing activities that are easy, or at least accessible, and exciting.<\/p>\n<figure id=\"attachment_6905\" aria-describedby=\"caption-attachment-6905\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6905 size-full\" src=\"https:\/\/magazine.swissinformatics.org\/wp-content\/uploads\/2017\/02\/ComputationalThinking_Image_5.jpg\" alt=\"Figure 5: The Cognitive\/Affective Challenges space\" width=\"600\" height=\"452\" srcset=\"https:\/\/magazine.swissinformatics.org\/wp-content\/uploads\/2017\/02\/ComputationalThinking_Image_5.jpg 600w, https:\/\/magazine.swissinformatics.org\/wp-content\/uploads\/2017\/02\/ComputationalThinking_Image_5-300x226.jpg 300w, https:\/\/magazine.swissinformatics.org\/wp-content\/uploads\/2017\/02\/ComputationalThinking_Image_5-326x245.jpg 326w, https:\/\/magazine.swissinformatics.org\/wp-content\/uploads\/2017\/02\/ComputationalThinking_Image_5-80x60.jpg 80w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><figcaption id=\"caption-attachment-6905\" class=\"wp-caption-text\">Figure 5: The Cognitive\/Affective Challenges space<\/figcaption><\/figure>\n<p><strong>Figure 5: The Cognitive\/Affective Challenges space<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>Working within the Cognitive\/Affective Challenges space, tools are essential to mitigate some of the challenges. On the affective dimension, domain-oriented tools such as game design, robot programming environments or physical computing play an important role. On the cognitive dimension, taking into account that the very notion of Programming Tools may be too narrow, particularly in the context of Computer Science Education (Figure 5), Computational Thinking Tools seem to serve perfectly towards making Computer Science Education an easy experience.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Conclusion<\/strong><\/p>\n<p>Focusing on equipping the future generations with the ability to think computationally does not mean focusing on teaching programming alone, but especially for general educational purposes, it means focusing on developing appropriate Computational Thinking Tools that make the teaching of Computational Thinking practical on every school level. Tools such as AgentSheets and AgentCubes online do not only teach Computational Thinking but furthermore have the potential to transform Computer Science Education from \u201chard and boring\u201d to \u201ceasy and exciting.\u201d As Computational Thinking Tools, they support all three stages of the Computational Thinking process and help creating computational thinkers. At the same time taking advantage of the specific characteristics that Computational Thinking Tools possess, they transform Computer Science to an accessible \u00a0experience. Through for example minimizing unnecessary accidental complexity and managing coding overhead in ways so that simple Computational Thinking can be expressed with as little code as possible. Finally, as game design applications they have the potential to make Computer Science an exciting experience. Overall, Computational Thinking Tools play an important role not only in practically supporting the effective teaching of Computational Thinking but also in reaching the holy grail of Computer Science Education (Figure 5).<\/p>\n<p>&nbsp;<\/p>\n<p>Dr. Anna Lamprou is a senior research assistant in Computer Science Education at the P\u00e4dagogische Hochschule FHNW in Switzerland<\/p>\n<p>Prof. Dr. Alexander Repenning is Hasler Professor and Chair of Computer Science Education at the P\u00e4dagogische Hochschule FHNW in Switzerland and computer science professor at the University of Colorado.<\/p>\n<p>__________<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"#_ftnref1\" name=\"_ftn1\">[1]<\/a> C. Duncan and T. Bell, &#8220;A Pilot Computer Science and Programming Course for Primary School Students,&#8221; presented at the Proceedings of the Workshop in Primary and Secondary Computing Education, London, United Kingdom, 2015, 39- 48.<\/p>\n<p><a href=\"#_ftnref2\" name=\"_ftn2\">[2]<\/a> Wing, J. M. \u201cComputational Thinking Benefits Society,\u201d 2014 http:\/\/socialissues.cs.toronto.edu\/index.html%3Fp=279.html<\/p>\n<p><a href=\"#_ftnref3\" name=\"_ftn3\">[3]<\/a> J. Wing \u201cComputational Thinking,\u201d published at Communications of the ACM March 2006\/ Vol. 49, No. 3, pp: 33-35. The article can be accessed here: https:\/\/www.cs.cmu.edu\/~15110-s13\/Wing06-ct.pdf<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Computational Thinking is argued to be tomorrow\u2019s reality as a crucial skill for the 21st Century workforce. What process one follows to formulate and resolve a problem, and how the abilities of human thinking can be combined with the technical abilities of a computer to do so, are at the core of what Computational [&hellip;]<\/p>\n","protected":false},"author":293,"featured_media":6916,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4866,356],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Computational Thinking \u2260 Programming - SI Digital Magazine<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/magazine.swissinformatics.org\/en\/computational-thinking\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Computational Thinking \u2260 Programming - SI Digital Magazine\" \/>\n<meta property=\"og:description\" content=\"Introduction Computational Thinking is argued to be tomorrow\u2019s reality as a crucial skill for the 21st Century workforce. What process one follows to formulate and resolve a problem, and how the abilities of human thinking can be combined with the technical abilities of a computer to do so, are at the core of what Computational [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/magazine.swissinformatics.org\/en\/computational-thinking\/\" \/>\n<meta property=\"og:site_name\" content=\"SI Digital Magazine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/www.swissinformatics.org\/?fref=ts\" \/>\n<meta property=\"article:published_time\" content=\"2017-02-15T19:52:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-07-11T11:37:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/magazine.swissinformatics.org\/wp-content\/uploads\/2017\/02\/ComputationalThinking_FeatImage2.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"452\" \/>\n\t<meta property=\"og:image:height\" content=\"301\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Alexander Repenning\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SIGesellschaft\" \/>\n<meta name=\"twitter:site\" content=\"@SIGesellschaft\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alexander Repenning\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/magazine.swissinformatics.org\/en\/computational-thinking\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/magazine.swissinformatics.org\/en\/computational-thinking\/\"},\"author\":{\"name\":\"Alexander Repenning\",\"@id\":\"https:\/\/magazine.swissinformatics.org\/en\/#\/schema\/person\/05fe07b169a63809f5843e6181f4f9ac\"},\"headline\":\"Computational Thinking \u2260 Programming\",\"datePublished\":\"2017-02-15T19:52:41+00:00\",\"dateModified\":\"2022-07-11T11:37:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/magazine.swissinformatics.org\/en\/computational-thinking\/\"},\"wordCount\":2674,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/magazine.swissinformatics.org\/en\/#organization\"},\"articleSection\":[\"\u2022 Article \u2022\",\"Learning\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/magazine.swissinformatics.org\/en\/computational-thinking\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/magazine.swissinformatics.org\/en\/computational-thinking\/\",\"url\":\"https:\/\/magazine.swissinformatics.org\/en\/computational-thinking\/\",\"name\":\"Computational Thinking \u2260 Programming - SI Digital Magazine\",\"isPartOf\":{\"@id\":\"https:\/\/magazine.swissinformatics.org\/en\/#website\"},\"datePublished\":\"2017-02-15T19:52:41+00:00\",\"dateModified\":\"2022-07-11T11:37:50+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/magazine.swissinformatics.org\/en\/computational-thinking\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/magazine.swissinformatics.org\/en\/computational-thinking\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/magazine.swissinformatics.org\/en\/computational-thinking\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/magazine.swissinformatics.org\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Computational Thinking \u2260 Programming\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/magazine.swissinformatics.org\/en\/#website\",\"url\":\"https:\/\/magazine.swissinformatics.org\/en\/\",\"name\":\"SI Digital Magazine\",\"description\":\"Articles from the Swiss Informatics Society (Blog)\",\"publisher\":{\"@id\":\"https:\/\/magazine.swissinformatics.org\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/magazine.swissinformatics.org\/en\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/magazine.swissinformatics.org\/en\/#organization\",\"name\":\"Swiss Informatics Society\",\"url\":\"https:\/\/magazine.swissinformatics.org\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/magazine.swissinformatics.org\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/magazine.swissinformatics.org\/wp-content\/uploads\/2017\/11\/SI_KeyImage_4to3.jpg\",\"contentUrl\":\"https:\/\/magazine.swissinformatics.org\/wp-content\/uploads\/2017\/11\/SI_KeyImage_4to3.jpg\",\"width\":1441,\"height\":1081,\"caption\":\"Swiss Informatics Society\"},\"image\":{\"@id\":\"https:\/\/magazine.swissinformatics.org\/en\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/www.swissinformatics.org\/?fref=ts\",\"https:\/\/twitter.com\/SIGesellschaft\",\"https:\/\/www.youtube.com\/channel\/UCYUEr1Qkbri9GDTa84z415g\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/magazine.swissinformatics.org\/en\/#\/schema\/person\/05fe07b169a63809f5843e6181f4f9ac\",\"name\":\"Alexander Repenning\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/magazine.swissinformatics.org\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/db5680111da3f3cc826a9952d315739e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/db5680111da3f3cc826a9952d315739e?s=96&d=mm&r=g\",\"caption\":\"Alexander Repenning\"},\"description\":\"Hasler Professor and Chair of Computer Science Education at the P\u00e4dagogische Hochschule FHNW in Switzerland and computer science professor at the University of Colorado.\",\"url\":\"https:\/\/magazine.swissinformatics.org\/en\/author\/alexander-repenning\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Computational Thinking \u2260 Programming - SI Digital Magazine","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/magazine.swissinformatics.org\/en\/computational-thinking\/","og_locale":"en_US","og_type":"article","og_title":"Computational Thinking \u2260 Programming - SI Digital Magazine","og_description":"Introduction Computational Thinking is argued to be tomorrow\u2019s reality as a crucial skill for the 21st Century workforce. What process one follows to formulate and resolve a problem, and how the abilities of human thinking can be combined with the technical abilities of a computer to do so, are at the core of what Computational [&hellip;]","og_url":"https:\/\/magazine.swissinformatics.org\/en\/computational-thinking\/","og_site_name":"SI Digital Magazine","article_publisher":"https:\/\/www.facebook.com\/www.swissinformatics.org\/?fref=ts","article_published_time":"2017-02-15T19:52:41+00:00","article_modified_time":"2022-07-11T11:37:50+00:00","og_image":[{"width":452,"height":301,"url":"https:\/\/magazine.swissinformatics.org\/wp-content\/uploads\/2017\/02\/ComputationalThinking_FeatImage2.jpg","type":"image\/jpeg"}],"author":"Alexander Repenning","twitter_card":"summary_large_image","twitter_creator":"@SIGesellschaft","twitter_site":"@SIGesellschaft","twitter_misc":{"Written by":"Alexander Repenning","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/magazine.swissinformatics.org\/en\/computational-thinking\/#article","isPartOf":{"@id":"https:\/\/magazine.swissinformatics.org\/en\/computational-thinking\/"},"author":{"name":"Alexander Repenning","@id":"https:\/\/magazine.swissinformatics.org\/en\/#\/schema\/person\/05fe07b169a63809f5843e6181f4f9ac"},"headline":"Computational Thinking \u2260 Programming","datePublished":"2017-02-15T19:52:41+00:00","dateModified":"2022-07-11T11:37:50+00:00","mainEntityOfPage":{"@id":"https:\/\/magazine.swissinformatics.org\/en\/computational-thinking\/"},"wordCount":2674,"commentCount":0,"publisher":{"@id":"https:\/\/magazine.swissinformatics.org\/en\/#organization"},"articleSection":["\u2022 Article \u2022","Learning"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/magazine.swissinformatics.org\/en\/computational-thinking\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/magazine.swissinformatics.org\/en\/computational-thinking\/","url":"https:\/\/magazine.swissinformatics.org\/en\/computational-thinking\/","name":"Computational Thinking \u2260 Programming - SI Digital Magazine","isPartOf":{"@id":"https:\/\/magazine.swissinformatics.org\/en\/#website"},"datePublished":"2017-02-15T19:52:41+00:00","dateModified":"2022-07-11T11:37:50+00:00","breadcrumb":{"@id":"https:\/\/magazine.swissinformatics.org\/en\/computational-thinking\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/magazine.swissinformatics.org\/en\/computational-thinking\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/magazine.swissinformatics.org\/en\/computational-thinking\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/magazine.swissinformatics.org\/en\/"},{"@type":"ListItem","position":2,"name":"Computational Thinking \u2260 Programming"}]},{"@type":"WebSite","@id":"https:\/\/magazine.swissinformatics.org\/en\/#website","url":"https:\/\/magazine.swissinformatics.org\/en\/","name":"SI Digital Magazine","description":"Articles from the Swiss Informatics Society (Blog)","publisher":{"@id":"https:\/\/magazine.swissinformatics.org\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/magazine.swissinformatics.org\/en\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/magazine.swissinformatics.org\/en\/#organization","name":"Swiss Informatics Society","url":"https:\/\/magazine.swissinformatics.org\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/magazine.swissinformatics.org\/en\/#\/schema\/logo\/image\/","url":"https:\/\/magazine.swissinformatics.org\/wp-content\/uploads\/2017\/11\/SI_KeyImage_4to3.jpg","contentUrl":"https:\/\/magazine.swissinformatics.org\/wp-content\/uploads\/2017\/11\/SI_KeyImage_4to3.jpg","width":1441,"height":1081,"caption":"Swiss Informatics Society"},"image":{"@id":"https:\/\/magazine.swissinformatics.org\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/www.swissinformatics.org\/?fref=ts","https:\/\/twitter.com\/SIGesellschaft","https:\/\/www.youtube.com\/channel\/UCYUEr1Qkbri9GDTa84z415g"]},{"@type":"Person","@id":"https:\/\/magazine.swissinformatics.org\/en\/#\/schema\/person\/05fe07b169a63809f5843e6181f4f9ac","name":"Alexander Repenning","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/magazine.swissinformatics.org\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/db5680111da3f3cc826a9952d315739e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/db5680111da3f3cc826a9952d315739e?s=96&d=mm&r=g","caption":"Alexander Repenning"},"description":"Hasler Professor and Chair of Computer Science Education at the P\u00e4dagogische Hochschule FHNW in Switzerland and computer science professor at the University of Colorado.","url":"https:\/\/magazine.swissinformatics.org\/en\/author\/alexander-repenning\/"}]}},"_links":{"self":[{"href":"https:\/\/magazine.swissinformatics.org\/en\/wp-json\/wp\/v2\/posts\/6896"}],"collection":[{"href":"https:\/\/magazine.swissinformatics.org\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/magazine.swissinformatics.org\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/magazine.swissinformatics.org\/en\/wp-json\/wp\/v2\/users\/293"}],"replies":[{"embeddable":true,"href":"https:\/\/magazine.swissinformatics.org\/en\/wp-json\/wp\/v2\/comments?post=6896"}],"version-history":[{"count":0,"href":"https:\/\/magazine.swissinformatics.org\/en\/wp-json\/wp\/v2\/posts\/6896\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/magazine.swissinformatics.org\/en\/wp-json\/wp\/v2\/media\/6916"}],"wp:attachment":[{"href":"https:\/\/magazine.swissinformatics.org\/en\/wp-json\/wp\/v2\/media?parent=6896"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/magazine.swissinformatics.org\/en\/wp-json\/wp\/v2\/categories?post=6896"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/magazine.swissinformatics.org\/en\/wp-json\/wp\/v2\/tags?post=6896"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}