University of Salamanca, literature review on Computational Thinking

Francisco José García-Peñalvo,  September 2016

 

  1. Introduction

 

We live in software-driven world (Manovich, 2013) and current Society demands skilled professionals for ICT (Information and Communication Technologies) business sector. A very common situation in countries with a high rate of unemployment is they have unfilled positions for engineers and technicians for the industry and digital services. This has caused an increasing approach for introduce digital or information technology (IT) literacy from the early beginning of the individual development (Bers, Flannery, Kazakoff, & Sullivan, 2014; Cejka, Rogers, & Portsmore, 2006; Kazakoff & Bers, 2012) till the high school courses (Allan, Barr, Brylow, & Hambrusch, 2010), even in post-secondary institutions (Astrachan, Hambrusch, Peckham, & Settle, 2009), combining it with other key competences such as reading, writing and math skills.

 

New devices (Alonso de Castro, 2014; Sánchez Prieto, Olmos Migueláñez, & García-Peñalvo, 2013, 2014c), from smartphones and tablets to electronic learning toys and robots, find new audiences with increasingly young children. This causes new challenges for teachers (Sánchez Prieto, Olmos Migueláñez, & García-Peñalvo, 2014a, 2014b, 2016), for example how to define developmentally appropriate activities and content for children of different ages (Bers et al., 2014).

 

Whereas IT literacy is the capability to use today’s technology in one’s own field, the notion of IT fluency adds the capability to independently learn and use new technology as it evolves (National Research Council Committee on Information Technology Literacy, 1999) throughout one’s professional lifetime. Moreover, IT fluency also includes the active use of algorithmic thinking (including programming) to solve problems, whereas IT literacy is more limited in scope.

 

The most frequent approach to teaching digital literacy has been to gradually encourage the learning of programming, and the term code-literacy (diSessa, 2000; Hockly, 2012; Prensky, 2008; Rushkoff, 2012; Vee, 2013) has been coined to referrer the process of teaching children programming tasks, from the simplest and most entertaining to the most complex, this way the student’s progress is centred on the difficulty of the tasks and in their motivating characteristic. This means a link between the learning with the response to a stimulus instead to the child’s learning and cognitive capabilities, following the traditional behaviourist theories (Zapata-Ros, 2015).

 

However, there exist an alternative in the constructionism approach, which was yet considered by Papert (1980) in his researches based on the Logo programming language, rooted in Piaget’s (1954) constructivism that conveys the idea that the child actively builds knowledge through experience and the related “learn-by-doing” approach to education. This approach states that the competences that are shown as most effective in coding (in this document coding and computer programming are used interchangeably) are the most visible part of a way of thinking, which is useful not only in the field of cognitive activities used in the development and creation of programs and computer systems. This means, there is a specific way of thinking and organizing the ideas and representations that is propitious for the computational skills because of it promotes the analysis and the ideas interrelationship for the logic organisation and representation of the procedures. Those skills are enhanced with certain activities and certain learning environments from the early stages. It is the development of a specific thought, a computational thinking (Zapata-Ros, 2015).

 

Consequently, at the same time that children learn human languages, both for speaking and writing, natural languages, encompassing all matters related with the experimental sciences (physics, chemistry, biology, etc.), and humanity languages, involving social sciences and humanities, it is also necessary they learn digital languages, in which ones the competences to be success in the digital world are included, using coding as the way to solve problems and computational thinking as working paradigm (Llorens-Largo, 2015).

 

With the awareness of the importance of digital skills and related information technology (eSkills), there are several proposals worldwide about the need to include coding from the curriculum of non-university levels, starting since primary education (or sooner) (Balanskat & Engelhardt, 2015; Brown et al., 2013), because of the code-literacy skills are becoming understood as a core element for STEM (Science, Technology, Engineering, & Mathematics) subjects (Gelman & Brenneman, 2004; Weintrop et al., 2016), computational thinking may play an important role in K-12 STEM education because computational modelling is an effective approach for learning challenging science and math concepts (Hambrusch, Hoffmann, Korb, Haugan, & Hosking, 2009) and imaginative programming is the most crucial element of computing because it closely aligns mathematics with computing and in this way brings mathematics to life (Felleisen & Krishnamurthi, 2009).

 

For example, in Spain CODDII (Conferencia de Directores y Decanos de Ingeniería Informática) in junction with AENUI (Asociación de Enseñantes Universitarios en Informática) drew up the declaration for the inclusion of subjects related to science and informatics in secondary education (CODDII & AENUI, 2014) with five main recommendations: 1) all the technological subjects must be offered by all the educational centres, public and private ones; 2) the curriculum of science and informatics should be completed by all students; 3) it is absolutely necessary and urgent teacher training in this area; 4) complementarily these skills can be developed transversally into other non-technological subjects; and 5) schools are responsible for transmitting and guide students on the importance of fostering vocations in STEM (Science, Technology, Engineering and Mathematics) areas. Many European and worldwide stakeholders (educators, parents, economists, politicians and so on) think that students need some computing and coding skills because they help to understand today’s digitalised society and foster 21st century skills like critical thinking, problem-solving, collaboration, communication and creativity (Ananiadou & Claro, 2009; Balanskat & Engelhardt, 2015; Binkley et al., 2012), taking into account that Computational Thinking has been identified among the critical 21st century skills all students should develop (D. Barr, Harrison, & Conery, 2011).

 

However, the digital language, as sum of several languages, gathers different competences such as computational thinking, coding, eSkills, informational skills, audio-visual capabilities, etc. (Hockly, 2012).

 

A code-literate person means that can read and write in programming languages (Román-González, 2014), computational thinking is referred to the underlying problem-solving cognitive process that allows it. Thus, coding is a key way to enable computational thinking (Lye & Koh, 2014) and computational thinking may be applied to various kinds of problems that do not directly involve coding tasks (Wing, 2008).

 

Jeannette M. Wing (2006) states that computational thinking “involves solving problems, designing systems, and understanding human behaviour, by drawing on the concepts fundamental to computer science”, with a very important message about this “computational thinking is a fundamental skill for everyone, not just for computer scientists”.

 

If we have into account that computer science is the study of computation, what can be computed and how to compute it, computational thinking thus has the following characteristics (Wing, 2006):

  • Computational thinking means conceptualizing, not programming. Computer science is not only coding. Thinking like a software engineering means more than being able to code. It requires thinking at multiple level of abstraction.
  • Computational thinking requires fundamental skills, not rote skills. A fundamental skill is something every human being must know to function in modern society. Rote means a mechanical routine.
  • Computational thinking is about how about humans, not computers, think. Computational thinking is regarding a way humans solve problems; it is not trying to get humans to think like computers. Computers are dull and boring; humans are clever and imaginative. Solving problems, with or without computers people need to have an imaginative and intelligent mind, it is also needed emotion and creativity. This is so near of the divergent thinking (Bono, 1968, 1970; Lieberman, 1965; Pólya, 1957).
  • Computational thinking complements and combines mathematical and engineering thinking. Computer science inherently draws on mathematical thinking, given that, like all sciences, its formal foundations rest on mathematics. Computer science inherently draws on engineering thinking; given that we build systems that interact with the real world.
  • Computational thinking relies in ideas, not in artefacts. It is not just the software or hardware artefacts we may create, it will be the computational concepts we may use to approach and solve problems, manage our daily lives, and communicate and interact with other people.
  • Computational thinking is for everyone, everywhere. Computational thinking will be a reality when it is so integral to human endeavours it disappears as an explicit philosophy.

 

Within a cognitive approach computational thinking is related to three abilities-factors (Ambrosio, Xavier, & Georges, 2014) from the Cattell-Horn-Carroll (CHC) model of intelligence (McGrew, 2009):

  • Fluid reasoning, defined as: “the use of deliberate and controlled mental operations to solve novel problems that cannot be performed automatically” (McGrew, 2009).
  • Visual processing, defined as “the ability to generate, store, retrieve, and transform visual images and sensations” (McGrew, 2009).
  • Short-term memory, defined as “the ability to apprehend and maintain awareness of a limited number of elements of information in the immediate situation (events that occurred in the last minute or so)” (McGrew, 2009).

 

Despite of this increasing interest about introducing coding, code-literacy or computational thinking in the pre-university studies, there still exist a lack of consensus on a formal definition of these terms (V. Barr & Stephenson, 2011; Gouws, Bradshaw, & Wentworth, 2013; Grover & Pea, 2013) and very different positions about how they may be integrated in the official curricula of the countries (Lye & Koh, 2014).

 

  1. Definition of computational thinking

 

The ACM computer science definition specifically for K-12 educators argues computer science is neither programming nor computer literacy, it is the study of computers and algorithmic processes including their principles, their hardware and software design, their applications, and their impact on society, including: programming, hardware, design, networks, graphics, databases and information retrieval, computer security, software design, programming languages and paradigms, logic, translation between levels of abstraction, artificial intelligence, the limits of computations (what computers cannot do), applications in information technology and information systems, and social issues (Internet security, privacy, intellectual property, etc.) (Tucker et al., 2006).

 

In framing the conceptual and educational importance of computational thinking, it is important to present clearly that both concepts, computational thinking and computer science are different.

 

As we stated above, the term computational thinking was made popular by Jeannette M. Wing (2006), with her definition “computational thinking involves solving problems, designing systems, and understanding human behaviour, by drawing on the concepts fundamental to computer science”. Wing (2011b) revisited the topic and provided this new definition “Computational thinking is the thought processes involved in formulating problems and their solutions so that the solutions are represented in a form that can be effectively carried out by an information-processing agent”. Regarding computational thinking, Isbell et al. (2009) proposed a focus on providing services, interfaces, and behaviours that involves a more central role for modelling as a means of formulating relationships and identifying relevant agencies that are sources of change. Moreover, Riley and Hunt (2014) asserted that the best way to characterize computational thinking is as the way that computer scientists think, the manner in which they reason.

 

Aho (2012) simplified this concept defining it as the thought processes involved in formulating problems so “their solutions can be represented as computational steps and algorithms”.

 

The Royal Society (2012) offered the following definition “Computational thinking is the process of recognising aspects of computation in the world that surrounds us, and applying tools and techniques from Computer Science to understand and reason about both natural and artificial systems and processes”.

 

Mannila et al. (2014) stated that computational thinking is a term covering a set of concepts and thinking processes from computer science that help in formulating problems and their solutions in different disciplines.

 

García-Peñalvo (2016b) defined computational thinking as the application of high level of abstraction and an algorithmic approach to solve any kind of problems.

 

Barr and Stephenson (2011) provided an operational definition of computational thinking as a “problem-solving process that includes (but is not limited to) the following characteristics: formulating problems in a way that enables us to use a computer and other tools to help solve them; logically organizing and analysing data; representing data through abstractions such as models and simulations; automating solutions through algorithmic thinking (a series of ordered steps); identifying, analysing, and implementing possible solutions with the goal of achieving the most efficient and effective combination of steps and resources; generalizing and transferring this problem solving process to a wide variety of problems”.

 

The above definition is also in the report by The International Society for Technology in Education (ISTE) and Computer Science Teacher Association (CSTA) (CSTA & ISTE, 2011).

 

The general definitions of computational thinking may not be suited for programming, thus from a curricular perspective there are frameworks for developing computational thinking in the classroom. From EEUU, Brennan and Resnick (2012) describe a computational thinking framework that involves three key dimensions: computational concepts (sequences, loops, events, parallelism, conditionals, operators, and data); computational practices (experimenting and iterating, testing and debugging, reusing and remixing, abstracting and modularizing); and computational perspectives (expressing, connecting, and questioning). From UK, the organization Computing At School (CAS) states that computational thinking involves six different concepts: logic, algorithms, decomposition, patterns, abstraction, and evaluation; and five approaches to working in the classroom: tinkering, creating, debugging, persevering, and collaborating (CAS Barefoot, 2014).

 

However, as Hemmendinger (2010) stated, the ultimate computational thinking should not be to teach everyone to think like a computer scientific nor to convert every child in a software engineer, but rather to teach them to apply these common elements to solve problems and discover new questions to explore within and across all disciplines. Close to this approach Sysło and Kwiatkowska (2013) also underlined that computational thinking is a set of thinking skills that may not result in computer programming, it should focus on the principles of computing rather than on computer programming skills.

 

For closing this section, Figure 1 shows a word-cloud graph based on the words that appear in well-known definitions of computational thinking.

 

Figure 1. Most commonly used words in the definitions of computational thinking. Source (Kalelioglu, Gulbahar, & Kukul, 2016)

 

 

  1. Computational thinking core concepts

 

Computational thinking in mainly an active problem solving methodology in the students use a set of concepts, such as abstraction or iteration among others, to process and analyse data, and to create real or virtual artefacts. Thus the goal of introducing ICT in pre-university curriculum is not the students become merely tool user but tool builders.

 

The power of computational thinking is that it may be applied to every other type of reasoning and enables all kind of things to get done in different subjects or knowledge areas (V. Barr & Stephenson, 2011).

 

Different core computational thinking set of components are proposed to define specific computational thinking frameworks.

 

Barr and Stephenson (2011) present a structured model that emerged focused on identifying core computational thinking concepts and capabilities. The core concepts are data collection, data analysis, data representation, problem decomposition, abstraction, algorithms and procedures, automation, parallelization and simulation. The capabilities are computer science, math, science, social studies and language arts.

 

Brennan and Resnick (2012) propose a computational thinking where the components are classified into three dimensions:

  1. Computational concepts, which are the concepts that students employ when they code: sequences, loops, events, parallelism, conditionals, operators, and data.
  2. Computational practices, which are problem solving practices that occur in the process of coding: experimenting and iterating, testing and debugging, reusing and mixing, and abstracting and modularisating.
  3. Computational perspectives, which are the students’ understandings of themselves, their relationships with others, and the digital world around them: expressing, connecting and questioning.

 

Gouws et al. (2013) design a computational thinking framework to serve as foundation for creating computational thinking resources. This framework is a two-dimensional grid. One dimension gathers the skill sets that make up computational thinking: processes and transformations, models and transformation, patterns and algorithms, inference and logic, and evaluations and improvements. The other dimension means the different levels at which these skills may be practiced: recognise, understand, apply, and assimilate.

 

Zapata-Ros (2015) tries to connect computational thinking with the learning theories conceptualizations and thinking models, proposing the following computational thinking components: bottom-up analysis, top-down analysis, heuristics, divergent thinking, creativity, problem solving, abstract thinking, recursion, iteration, Successive approximation methods (trial and error), collaborative methods, patterns, synectics and metacognition.

 

 

  1. Computational thinking practices

 

As we stated above, computational thinking in an approach to problem solving using computer science techniques, described by Jeannette Wing (2008) as the mental tools that allow us to make the best use of our mental tools.

 

Due to computational thinking has different interpretations, there are different approaches for introducing this approach into the classrooms, including those that consider computational thinking provides transparent advantages focusing on semantics rather the syntax of a specific language; those that prefer some kind of programming environment, based on blocks such as scratch or based on most traditional coding languages; those that control robots; or those that build physical kits to control things.

 

Taccle 3 Coding project (García-Peñalvo, 2016a; TACCLE 3 Consortium, 2016) provides practical ideas that teachers can use immediately together with suggestions on how these can be adapted for introducing computing or coding in their classrooms. Many countries are introducing computing as a core curriculum subject. Some have already done so; many others are intending to. Inevitably the detail of the curricula will be different in each country but there is a substantial overlap – most all of the curricula available so far include programming (Aho, 2012), control technology (Atmatzidou & Demetriadis, 2016) and computational/logical thinking (Wing, 2011a), so Taccle3 has started with these. The following sections are centred on presenting the most outstanding computational thinking practices.

 

4.1. Computational thinking for developing mental models

 

The main idea behind this approach is computational thinking is not an alternative to learn coding; it is a way to reinforcing concepts and supplementing coding or programming education. The objective is that students may develop stronger mental models that ultimately make them better software engineers. Besides, the challenge is to use computational thinking approach to be useful and effective in a broader range of disciplines.

 

The CS Unplugged project (http://csunplugged.org/) by CS Education Research Group at the University of Canterbury in New Zealand is a good example of pedagogical and creativity activities oriented to introduce computational thinking principles without using a computer (Bell, Witten, & Fellows, 2016).

 

Games have been used extensively for achieving this goal. Game design is a popular way to teach programming to students who have little or no prior programming experience (Peppler & Kafai, 2007; Repenning, 2006). Gouws et al. (2013) use Light-Bot, an educational game whose objective is to program a small robot to light up all the blue blocks on a board. Authors applies their computational thinking framework to assess the skills and the levels at which these skills were practiced.

 

Basawapatna et al. define Computational Thinking Patterns, which are abstracted programming patterns that are learned by students when they create games and can readily be used by students to model scientific phenomena. Examples of games and their associated computational thinking patters are: Frogger (Generation, Absorption, Collision, Transportation); Sokoban (Push, Pull); Centipede (Generation, Absorption, Collision, Push, Pull); Space Invaders (Generation, Absorption, Collision); or Sims (Diffusion, Hill Climbing) (Basawapatna, Koh, & Repenning, 2010; Basawapatna, Koh, Repenning, Webb, & Marshall, 2011).

 

4.2. Computational thinking through programming tools

 

It is better to use visual programming languages, as the motivational context

with embedded computer science content(Bennett, Koh, & Repenning, 2011), rather than traditional programming languages to facilitate the three dimensions of computational thinking (concepts, practices and perspectives) specially in K-12 contexts (Lye & Koh, 2014).

 

With these block-based commands languages students usually need only to drag and snap the blocks, reducing the cognitive load on the students and allowing them to focus on the logic and structures involved in programming rather than the mechanics of writing programs (Kelleher & Pausch, 2005).

 

Visual languages present the following advantages to introduce computational thinking through programming (Lye & Koh, 2014):

  • They make easy to enact the computational practices because the outcomes of their programming can be visualized as animated objects.
  • They become technology-as-partner in the learning process (Howland, Jonassen, & Marra, 2011) and help students to extend the computational practices towards enhancing their general problem-solving ability (Lin & Liu, 2012).
  • They engage students in the building of multi-media digital products, thereby enabling programming activities to be used as a means for students to express their ideas.
  • They develop students’ digital literacy for creating, sharing and remixing digital resources (Ng, 2012), thus they afford for such kinds of digital literacy experiences (Mills, 2010).
  • They transform students, they will be no longer passive consumers of the technology (Resnick et al., 2009).

 

Scratch (Resnick et al., 2009) is a very popular programming language to learn coding, languages (Burke, 2012; Lee, 2010) or maths.

 

Logo is other programming language used to introduce coding (Lin & Liu, 2012), for example to help students with hearing disorders to learn English words (Miller, 2009) or to learn maths (Fessakis, Gouli, & Mavroudi, 2013).

 

Python is also used to introduce coding concepts with older students. Aiken et al. (2013) used VPython (http://vpython.org/) a high-level programming environment for a 9th-grade conceptual physics course in USA. Computational assignments followed in-class experiments and problem-solving sessions. After instruction, roughly a third of students were able to successfully complete an individual assessment in which they constructed a model of a new physical system. In this sense, SECANT project (http://secant.cs.purdue.edu/) (Ahamed et al., 2010) at Purdue University uses Python and VPython focusing on computational methods and visualizations. This project collaborated with two high school physics teachers to incorporate selected material of the Matter&Interaction Curriculum with computational thinking principles into high school physics courses.

 

App Inventor 2 (http://appinventor.mit.edu/) (Walter & Sherman, 2015) is a cloud-based visual blocks language (Wolber, Abelson, & Friedman, 2015), which allows build Android apps using a web browser, without to code. The App Inventor service is available at ai2.appinventor.mit.edu. App Inventor has been used extensively in both primary and secondary schools. A good example of it is the Computational Thinking through Mobile Computing project (Turbak, Pokress, & Sherman, 2014), which is devoted to teach the big ideas of computer science to undergraduate students using App Inventor. This project is a collaboration between MIT, Wellesley College, Trinity College, University of Massachusetts Lowell, and University of San Francisco (https://nsfmobilect.wordpress.com/).

 

The user interface of App Inventor is based on the idea of low-floor, high-ceiling development environments (Papert, 1980), and consists of two parts: a Designer for selecting the components of the app, and a Blocks Editor for setting the behaviour of the app. App Inventor’s building blocks are common user interface elements (buttons, labels, list pickers, images, etc.) coupled with the mobile device’s features (texting, GPS, NFC, Bluetooth, etc.) (Pokress & Domínguez Veiga, 2013).

 

4.3. Computational thinking as key element for teaching and curriculum reform

 

The idea behind this approach is the claim of using a computational thinking approach in order to train future teachers’ computational thinking ability.

 

Yu (2014) proposes that basic computer courses at the university level should embody many computational thinking methods, such as computer hardware components, various algorithms (sorting, recursion, etc.) in order to train students getting calculating thinking ability.

 

It is interesting the strength the connection between the computational thinking and the computational values support such as open publication of educational materials and resources, the policy on open publication of academic research, and the open online instruction based on non-proprietary software platforms (Ableson, 2012).

 

In 2010, nine Chinese universities included in the country’s “985 project” explicitly pointed out that “prominent computational thinking ability must be the fundamental skill for innovative talents in any discipline” (Long, Zhang, & Li, 2013). College students’ computational thinking is usually cultivated via a series of courses, some are directed to a certain discipline, some are disciplinary, and others are general to all disciplines. The result was the design of a categorized and multi-layer course system in accordance with (1) the teaching contents, the extensiveness of utilization and the level of difficulty of methods of computational thinking; (2) the frequency of its features and the difficulty of apprehension; and (3) students’ ability of apprehension.

 

4.4. Computational thinking assessment

 

Developing assessments of student learning is an urgent area of need for the relatively young computer science education community as it advances toward the ranks of more mature disciplines (Buffum et al., 2015).

 

Frequent use of computational constructs is favoured, but their effects on final artefacts and the relation between final artefacts and pre-defined learning goals are rarely considered (Basu, Kinnebrew, & Biswas, 2014).

 

Interesting contributions regarding the measure and the assessment of computational thinking are the Fairy Assessment (Werner, Denner, Campe, & Kawamoto, 2012), which tries to measure the understanding and use of different computational concepts that students utilize to solve problem.

 

Koh et al. (2010) identify several computational thinking patterns that young students abstract and develop during the creation of video-games in a controlled environment; they create an automated tool that analyses the games programmed and represents graphically how far each game has involved the different patterns when compared with a model.

 

Basu et al. (2014) propose a more systematic assessment of Computational Thinking based science learning, using CTSiM – a Computational Thinking based science learning environment. In this environment, students first construct a conceptual model and then design a corresponding computational model for a given science phenomenon. Authors designed and independent system of pre-post assessments for science and Computational Thinking and developed vector-distance, effectiveness, and consistency measures to characterize student models. Using these assessments, they show that students gained significantly on both science and Computational Thinking content in Kinematics and Ecology subjects.

 

Dr. Scratch (http://drscratch.org/) (Moreno-León & Robles, 2015a, 2015b; Moreno-León, Robles, & Román-González, 2015) is a web application that analyses automatically Scratch projects and gives feedback to improve programming skills and to develop computational skills. The research group behind Dr. Scratch has developed a computational thinking test (Román-González, 2015a, 2015b) and has demonstrate its convergent validity with respect to other traditional software quality and complexity metrics (Moreno-León, Robles, & Román-González, 2016).

 

Quiz Maker, for the creation of quizzes, and Quizly are a couple of tools for assessing and automatically grading exercises done through App Inventor (Maiorana, Giordano, & Morelli, 2015). These tools mean an assessment platform able to manage students and classes, administer and propose formative, summative and informal tests and to be able to track user progress as well as the question solving process.

 

Regarding App Inventor, Mark Sherman and Fred Martin (2015) proposed a rubric for analysing the mobile computational thinking as represented in App Inventor work products.

 

4.5. Teacher Training Programs in Computational Thinking

 

Bringing Computational Thinking into pre-university is also rife with challenges which must be addressed. The most important amongst these is preparing in-service and future teachers to tackle the challenge of teaching Computational Thinking.

 

Some workshops focus on K-12 students, such as (Franklin et al., 2015), but provide research and advice for best practices like curriculum, content delivery, interfacing with schools, and even classroom layout.

 

CS4HS has funded face-to-face workshops oriented to directly train teachers, like (Blum & Cortina, 2007; Bort & Brylow, 2013; Liu, Lin, Hasson, & Barnett, 2011), that have shown to not only increase participants understanding of Computational Thinking and Computer Science, but also how to integrate it as a part of their curriculum. CS4HS has also began introducing MOOCs (Massive Open Online Course) targeted for training teachers (Spradling et al., 2015).

 

Bean et al. (2015) develop a program for future teachers piloted at Kansas State University based on Scratch.

 

References

 

Ableson, H. (2012). From Computational Thinking to Computational Values. Proceedings of the 43rd ACM technical symposium on Computer Science Education – SIGCSE ’12 (pp. 239). New York, NY, USA: ACM.

Ahamed, S. I., Brylow, D., Ge, R., Madiraju, P., Merrill, S. J., Struble, C. A., & Early, J. P. (2010). Computational thinking for the sciences: A three day workshop for high school science teachers Proceedings of the 41st ACM technical symposium on Computer science education (pp. 42-46). Milwaukee, Wisconsin, USA: ACM.

Aho, A. V. (2012). Computation and Computational Thinking. Computer Journal, 55(7), 832-835. doi:10.1093/comjnl/bxs074

Aiken, J. M., Caballero, M. D., Douglas, S. S., Burk, J. B., Scanlon, E. M., Thoms, B. D., & Schatz, M. F. (2013). Understanding Student Computational Thinking with Computational Modeling. In P. V. Engelhardt, A. D. Churukian, & N. S. Rebello (Eds.), 2012 Physics Education Research Conference (Vol. 1513, pp. 46-49).

Allan, V., Barr, V., Brylow, D., & Hambrusch, S. (2010). Computational thinking in high school courses Proceedings of the 41st ACM Technical Symposium on Computer Science Education, SIGCSE’10 (pp. 390-391). New York, NY, USA: ACM.

Alonso de Castro, M. G. (2014). Educational projects based on mobile learning. Education in the Knowledge Society, 15(1), 10-19.

Ambrosio, A. P., Xavier, C., & Georges, F. (2014). Digital ink for cognitive assessment of computational thinking Proceedings of the 2014 IEEE Frontiers in Education Conference (FIE) (Madrid, Spain, 22-25 Oct. 2014) (pp. 1-7). EEUU: IEEE.

Ananiadou, K., & Claro, M. (2009). 21st Century skills and competences for new millennium learners in OECD Countries. OECD Education Working Papers, 41.

Astrachan, O., Hambrusch, S., Peckham, J., & Settle, A. (2009). The present and future of computational thinking. SIGCSE Bulletin Inroads, 41(1), 549-550. doi:10.1145/1539024.1509053

Atmatzidou, S., & Demetriadis, S. (2016). Advancing students’ computational thinking skills through educational robotics: A study on age and gender relevant differences. Robotics and Autonomous Systems, 75, 661-670. doi:10.1016/j.robot.2015.10.008

Balanskat, A., & Engelhardt, K. (2015). Computing our future. Computer programming and coding Priorities, school curricula and initiatives across Europe. Retrieved from Brussels, Belgium: http://fcl.eun.org/documents/10180/14689/Computing+our+future_final.pdf/746e36b1-e1a6-4bf1-8105-ea27c0d2bbe0

Barr, D., Harrison, J., & Conery, L. (2011). Computational Thinking: A Digital Age Skill for Everyone. Learning & Leading with Technology, 38(6), 20-23.

Barr, V., & Stephenson, C. (2011). Bringing computational thinking to K-12: What is Involved and What is the role of the computer science education community? ACM Inroads, 2(1), 48-54. doi:10.1145/1929887.1929905

Basawapatna, A. R., Koh, K. H., & Repenning, A. (2010). Using scalable game design to teach computer science from middle school to graduate school. Proceedings of the fifteenth annual conference on Innovation and technology in computer science education, ITiCSE ’10 (pp. 224-228). New York, NY, USA: ACM.

Basawapatna, A. R., Koh, K. H., Repenning, A., Webb, D. C., & Marshall, K. S. (2011). Recognizing computational thinking patterns SIGCSE’11 – Proceedings of the 42nd ACM Technical Symposium on Computer Science Education (pp. 245-250). New York, NY, USA: ACM.

Basu, S., Kinnebrew, J. S., & Biswas, G. (2014). Assessing Student Performance in a Computational-Thinking Based Science Learning Environment. In S. Trausan-Matu, K. E. Boyer, M. Crosby, & K. Panourgia (Eds.), Intelligent Tutoring Systems, Its 2014 (Vol. 8474, pp. 476-481).

Bean, N., Weese, J., Feldhausen, R., & Bell, R. S. (2015). Starting From Scratch Developing a Pre-Service Teacher Training Program in Computational Thinking. 2015 IEEE Frontiers in Education Conference (FIE), October 21-24, 2015, Camino Real El Paso, El Paso, TX, USA (pp. 1307-1314). EEUU: IEEE.

Bell, T., Witten, I. H., & Fellows, M. (2016). CS Unplugged. An enrichment and extension programme for primary-aged students. Version 3.2.2. New Zealand: University of Canterbury. CS Education Research Group.

Bennett, V., Koh, K., & Repenning, A. (2011). Computing learning acquisition? Proceedings of the 2011 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), 18-22 Sept. 2011, Pittsburgh, PA, USA (pp. 243-244). EEUU: IEEE.

Bers, M. U., Flannery, L., Kazakoff, E. R., & Sullivan, A. (2014). Computational thinking and tinkering: Exploration of an early childhood robotics curriculum. Computers and Education, 72, 145-157. doi:10.1016/j.compedu.2013.10.020

Binkley, M., Erstad, O., Herman, J., Raizen, S., Ripley, M., Miller-Ricci, M., & Rumble, M. (2012). Defining twenty-first century skills. In P. Griffin, B. McGaw, & E. Care (Eds.), Assessment and teaching of 21st century skills (pp. 17–66). Netherlands: Springer.

Blum, L., & Cortina, T. J. (2007). CS4HS: an outreach program for high school CS teachers. SIGCSE Bull., 39(1), 19-23. doi:10.1145/1227504.1227320

Bono, E. D. (1968). New think: The use of lateral thinking in the generation of new ideas. New York, NY: Basic Books.

Bono, E. D. (1970). Lateral Thinking. A Textbook of Creativity. London: Ward Lock Educational.

Bort, H., & Brylow, D. (2013). CS4Impact: measuring computational thinking concepts present in CS4HS participant lesson plans Proceeding of the 44th ACM technical symposium on Computer Science Education, SIGCSE ’13, March 6-9, 2013, Denver, Colorado, USA (pp. 427-432). New York, NY, USA: ACM.

Brennan, K., & Resnick, M. (2012). New frameworks for studying and assessing the development of computational thinking. Paper presented at the Annual American Educational Research Association meeting, Vancouver, BC, Canada.

Brown, N. C. C., Kölling, M., Crick, T., Peyton Jones, S., Humphreys, S., & Sentance, S. (2013). Bringing computer science back into schools: Lessons from the UK Proceeding of the 44th ACM Technical Symposium on Computer Science Education, SIGCSE ’13 (pp. 269-274). New York, USA: ACM.

Buffum, P. S., Lobene, E. V., Frankosky, M. H., Boyer, K. E., Wiebe, E. N., & Lester, J. C. (2015). A Practical Guide to Developing and Validating Computer Science Knowledge Assessments with Application to Middle School Proceedings of the 46th ACM Technical Symposium on Computer Science Education. SIGCSE ’15 (Kansas City, Missouri, USA, March 4th-7th) (pp. 622-627). New York, NY, USA: ACM.

Burke, Q. (2012). The markings of a new pencil: Introducing programming-aswriting in the middle school classroom. Journal of Media Literacy Education, 4(2), 121–135.

CAS Barefoot. (2014). Computational Thinking.   Retrieved from http://barefootcas.org.uk/barefoot-primary-computing-resources/concepts/computational-thinking/

Cejka, E., Rogers, C., & Portsmore, M. (2006). Kindergarten robotics: using robotics to motivate math, science, and engineering literacy in elementary school. International Journal of Engineering Education, 22(4), 711–722.

CODDII, & AENUI. (2014). Por la inclusión de asignaturas específicas de ciencia y tecnología informática en los estudios básicos de la enseñanza secundaria y bachillerato. ReVisión, 7(2), 5-7.

CSTA, & ISTE. (2011). Computational Thinking in K–12 Education leadership toolkit. Retrieved from USA: https://csta.acm.org/Curriculum/sub/CurrFiles/471.11CTLeadershiptToolkit-SP-vF.pdf

diSessa, A. A. (2000). Changing minds: Computers, learning, and literacy. Cambridge: MIT Press.

Felleisen, M., & Krishnamurthi, S. (2009). Why computer science doesn’t matter. Communications of the ACM, 52(7), 37-40. doi:10.1145/1538788.1538803

Fessakis, G., Gouli, E., & Mavroudi, E. (2013). Problem solving by 5–6 years old kindergarten children in a computer programming environment: A case study. Computers & Education, 63, 87-97. doi:http://dx.doi.org/10.1016/j.compedu.2012.11.016

Franklin, D., Hill, C., Dwyer, H., Iveland, A., Killian, A., & Harlow, D. (2015). Getting Started in Teaching and Researching Computer Science in the Elementary Classroom Proceedings of the 46th ACM Technical Symposium on Computer Science Education, SIGCSE ’15, March 4-7, 2015, Kansas City, Missouri (pp. 552-557). New York, NY, USA: ACM.

García-Peñalvo, F. J. (2016a). Proyecto TACCLE3 – Coding. Paper presented at the XVIII Simposio Internacional de Informática Educativa, SIIE 2016, Salamanca, España.

García-Peñalvo, F. J. (2016b). What Computational Thinking Is. Journal of Information Technology Research, 9(3).

Gelman, R., & Brenneman, K. (2004). Science learning pathways for young children. Early Childhood Research Quarterly, 19(1), 150–158.

Gouws, L. A., Bradshaw, K., & Wentworth, P. (2013). Computational thinking in educational activities: An evaluation of the educational game light-bot Proceedings of the 18th ACM Conference on Innovation and Technology in Computer Science Education, ITiCSE ’13 (pp. 10-15). New York, NY, USA: ACM.

Grover, S., & Pea, R. (2013). Computational thinking in K-12: A review of the state of the field. Educational Researcher, 42(1), 38–43. doi:10.3102/0013189X12463051

Hambrusch, S., Hoffmann, C., Korb, J. T., Haugan, M., & Hosking, A. L. (2009). A multidisciplinary approach towards computational thinking for science majors Proceedings of the 40th ACM technical symposium on Computer Science Education, SIGCSE ’09, March 4-7, 2009, Chattanooga, TN USA (pp. 183-187). New York, NY, USA: ACM.

Hemmendinger, D. (2010). A plea for modesty. ACM Inroads, 1(2), 4-7. doi:10.1145/1805724.1805725

Hockly, N. (2012). Digital literacies. ELT Journal, 66(1), 108-112. doi:10.1093/elt/ccr077

Howland, J., Jonassen, D. H., & Marra, R. M. (2011). Meaningful learning with technology (4th ed.). Upper Saddle River, NJ, USA: Pearson.

Isbell, C., Stein, A., Cutler, R., Forber, J., Fraser, L., Impagliazzo, J., . . . Y., X. (2009). (Re)Defining computing curricula by (re)defining computing. ACM SIGCSE Bulletin, 41(4), 195-207. doi:10.1145/1709424.1709462

Kalelioglu, F., Gulbahar, Y., & Kukul, V. (2016). A Framework for Computational Thinking Based on a Systematic Research Review. Baltic Journal of Modern Computing, 4(3), 583-596.

Kazakoff, E., & Bers, M. (2012). Programming in a robotics context in the kindergarten classroom: the impact on sequencing skills. Journal of Educational Multimedia and Hypermedia, 21(4), 371–391.

Kelleher, C., & Pausch, R. (2005). Lowering the barriers to programming: A taxonomy of programming environments and languages for novice programmers. ACM Computing Surveys, 37(2), 83-137. doi:10.1145/1089733.1089734

Koh, K. H., Basawapatna, A., Bennett, V., & Repenning, A. (2010). Towards the automatic recognition of computational thinking for adaptive visual language learning 2010 IEEE Symposium on Visual Languages and Human-Centric Computing, VL/HCC 2010 (Leganés, Madrid, Spain, 21-25 Sept. 2010) (pp. 59 – 66). USA: IEEE.

Lee, Y.-J. (2010). Developing computer programming concepts and skills via technology-enriched language-art projects: A case study. Journal of Educational Multimedia and Hypermedia, 19(3), 307–326.

Lieberman, J. N. (1965). Playfulness and Divergent Thinking: An Investigation of their Relationship at the Kindergarten Level. The Journal of Genetic Psychology: Research and Theory on Human Development, 107(2), 219-224. doi:10.1080/00221325.1965.10533661

Lin, J. M., & Liu, S. F. (2012). An investigation into parent-child collaboration in learning computer programming. Educational Technology and Society, 15(1), 162-173.

Liu, J., Lin, C.-H., Hasson, E. P., & Barnett, Z. D. (2011). Introducing computer science to K-12 through a summer computing workshop for teachers Proceedings of the 42nd ACM technical symposium on Computer Science Education, SIGCSE ’11, March 9-12, 2011, Dallas, TX, USA (pp. 389-394). New York, NY, USA: ACM.

Llorens-Largo, F. (2015). Dicen por ahí. . . . . que la nueva alfabetización pasa por la programación. ReVisión, 8(2), 11-14.

Long, X., Zhang, J., & Li, Z. (2013). The Design of Teaching Structure based on Competency Training of Computational Thinking Proceedings of the International Conference on Education Technology and Information System (ICETIS 2013) (pp. 421-425). Amsterdam, The Netherlands: Atlantis Press.

Lye, S. Y., & Koh, J. H. L. (2014). Review on teaching and learning of computational thinking through programming: What is next for K-12? Computers in Human Behavior, 41, 51-61. doi:10.1016/j.chb.2014.09.012

Maiorana, F., Giordano, D., & Morelli, R. (2015). Quizly: A live coding assessment platform for App Inventor Proceedings of the 2015 IEEE Blocks and Beyond Workshop (Blocks and Beyond) (pp. 25-30). USA: IEEE.

Mannila, L., Dagiene, V., Demo, B., Grgurina, N., Mirolo, C., Rolandsson, L., & Settle, A. (2014). Computational Thinking in K-9 Education Proceedings of the Working Group Reports of the 2014 on Innovation & Technology in Computer Science Education Conference (pp. 1-29). New York, USA: ACM.

Manovich, L. (2013). Software Takes Command. New York, USA: Bloomsbury.

McGrew, K. S. (2009). CHC theory and the human cognitive abilities project: Standing on the shoulders of the giants of psychometric intelligence research. Intelligence, 37(1), 1-10. doi:http://dx.doi.org/10.1016/j.intell.2008.08.004

Miller, P. (2009). Learning with a missing sense: What can we learn from the interaction of a deaf child with a turtle? American Annals of the Deaf, 154(1), 71-82.

Mills, K. A. (2010). A review of the ‘‘digital turn’’ in the new literacy studies. Review of Educational Research, 80(2), 246–271. doi:10.3102/0034654310364401

Moreno-León, J., & Robles, G. (2015a). Analyze your Scratch projects with Dr. Scratch and assess your computational thinking skills. Paper presented at the Scratch Conference, Amsterdam, The Netherlands. http://jemole.me/replication/2015scratch/InferCT.pdf

Moreno-León, J., & Robles, G. (2015b). Dr. Scratch: a Web Tool to Automatically Evaluate Scratch Projects Proceedings of the Workshop in Primary and Secondary Computing Education, WiPSCE ’15 (London, United Kingdom, November 9-11, 2015) (pp. 132-133). New York, NY, USA: ACM.

Moreno-León, J., Robles, G., & Román-González, M. (2015). Dr. Scratch: Automatic Analysis of Scratch Projects to Assess and Foster Computational Thinking. RED, Revista de Educación a distancia, 46.

Moreno-León, J., Robles, G., & Román-González, M. (2016). Comparing Computational Thinking Development Assessment Scores with Software Complexity Metrics Proceedings of the IEEE Global Engineering Education Conference, EDUCON 2016, Abu Dahbi, United Arab Emirates, 11-13 April, 2016. EEUU: IEEE.

National Research Council Committee on Information Technology Literacy. (1999). Being Fluent with Information Technology. Washington, DC: National Academy Press.

Ng, W. (2012). Can we teach digital natives digital literacy? Computers & Education, 59(3), 1065–1078. doi:10.1016/j.compedu.2012.04.016

Papert, S. (1980). Mindstorms: Children, computers, and powerful ideas. New York, NY, USA: Basic Books.

Peppler, K. A., & Kafai, Y. B. (2007). Collaboration, computation, and creativity: media arts practices in urban youth culture Proceedings of the 8th iternational conference on Computer supported collaborative learning (pp. 590-592). New Brunswick, New Jersey, USA: International Society of the Learning Sciences.

Piaget, J. (1954). The construction of reality in the child. New York, USA: Basic Books.

Pokress, S. C., & Domínguez Veiga, J. J. (2013). MIT App Inventor. Enabling personal mobile computing Proceedings of Programming for Mobile and Touch, PRoMoTo 2013.

Pólya, G. (1957). How to Solve It. A new aspect of mathematical method (2nd ed.). Priceton, New Jersey: Princeton University Press.

Prensky, M. (2008). Programming Is the New Literacy. Retrieved from http://www.edutopia.org/literacy-computer-programming

Repenning, A. (2006). Excuse me, I need better AI!: employing collaborative diffusion to make game AI child’s play Proceedings of the 2006 ACM SIGGRAPH symposium on Videogames (pp. 169-178). Boston, Massachusetts: ACM.

Resnick, M., Maloney, J., Monroy-Hernández, A., Rusk, N., Eastmond, E., Brennan, K., . . . Kafai, Y. (2009). Scratch: Programming for all. Commuication of the ACM, 52(11), 60-67. doi:10.1145/1592761.1592779

Riley, D. D., & Hunt, K. A. (2014). Computational thinking for the modern problem Solver. Boca Raton, FL, USA: CRC Press.

Román-González, M. (2014). Aprender a programar ‘apps’ como enriquecimiento curricular en alumnado de alta capacidad. Bordón. Revista de Pedagogía, 66(4), 135-155. doi:http://dx.doi.org/10.13042/Bordon.2014.66401

Román-González, M. (2015a). Computational Thinking Test: Design guidelines and content validation Proceedings of EDULEARN15 Conference, 6th-8th July 2015, Barcelona, Spain (pp. 2436-2444).

Román-González, M. (2015b). Test de Pensamiento Computacional: principios de diseño, validación de contenido y análisis de ítems. In M. Á. Murga Menoyo (Ed.), Perspectivas y avances de la investigación (pp. 279-302). España: UNED.

Royal Society. (2012). Shut down or restart: The way forward for computing in UK schools. Retrieved from London, UK: https://royalsociety.org/~/media/education/computing-in-schools/2012-01-12-computing-in-schools.pdf

Rushkoff, D. (2012). Code Literacy: A 21st-Century Requirement. Retrieved from http://www.edutopia.org/blog/code-literacy-21st-century-requirement-douglas-rushkoff

Sánchez Prieto, J. C., Olmos Migueláñez, S., & García-Peñalvo, F. J. (2013). Mobile Learning: Tendencies and Lines of Research. In F. J. García-Peñalvo (Ed.), Proceedings of the First International Conference on Technological Ecosystems for Enhancing Multiculturality (TEEM’13) (Salamanca, Spain, November 14-15, 2013) (pp. 473-480). New York, NY, USA: ACM.

Sánchez Prieto, J. C., Olmos Migueláñez, S., & García-Peñalvo, F. J. (2014a). ICTs Integration in Education: Mobile Learning and the Technology Acceptance Model (TAM). In F. J. García-Peñalvo (Ed.), Proceedings of the Second International Conference on Technological Ecosystems for Enhancing Multiculturality (TEEM’14) (pp. 683-687). New York, USA: ACM.

Sánchez Prieto, J. C., Olmos Migueláñez, S., & García-Peñalvo, F. J. (2014b). Mobile Learning Adoption from Informal into Formal: An Extended TAM Model to Measure Mobile Acceptance among Teachers. In F. J. García-Peñalvo (Ed.), Proceedings of the Second International Conference on Technological Ecosystems for Enhancing Multiculturality (TEEM’14) (pp. 595-602). New York, USA: ACM.

Sánchez Prieto, J. C., Olmos Migueláñez, S., & García-Peñalvo, F. J. (2014c). Understanding mobile learning: devices, pedagogical implications and research lines. Education in the Knowledge Society, 15(1), 20-42.

Sánchez Prieto, J. C., Olmos Migueláñez, S., & García-Peñalvo, F. J. (2016). Informal Tools in Formal Contexts: Development of a Model to Assess the Acceptance of Mobile Technologies among Teachers. Computers in Human Behavior, 55A, 519-528. doi:http://dx.doi.org/10.1016/j.chb.2015.07.002

Sherman, M., & Martin, F. (2015). The assessment of mobile computational thinking. Journal of Computing Sciences in Colleges, 30(6), 53-59.

Spradling, C., Linville, D., Rogers, M., J. Clark, Computing, & Sciences in Colleges, v., no. 5, pp. 115-125, 2015. (2015). Are MOOCs an appropriate pedagogy for training K-12 teachers computer science concepts? Computing Sciences in Colleges, 30(5), 115-125.

Sysło, M. M., & Kwiatkowska, A. B. (2013). Informatics for All High School Students : A Computational Thinking Approach. In I. Diethelm & R. T. Mittermeir (Eds.), Informatics in Schools. Sustainable Informatics Education for Pupils of all Ages. 6th International Conference on Informatics in Schools: Situation, Evolution, and Perspectives, ISSEP 2013, Oldenburg, Germany, February 26–March 2, 2013. Proceedings (pp. 43–56). Heidelberg: Springer.

TACCLE 3 Consortium. (2016). TACCLE 3: Coding Erasmus + Project website.   Retrieved from http://www.taccle3.eu/

Tucker, A., Deek, F., Jones, J., McCowan, D., Stephenson, C., & Verno, A. (2006). A model curriculum for K-12 Computer Science: Final Report of the ACM K–12 Task Force Curriculum Committee (2nd ed.). New York, NY, USA: ACM.

Turbak, F., Pokress, S. C., & Sherman, M. (2014). Mobile computational thinking with APP inventor 2. Journal of Computing Sciences in Colleges, 29(6), 15-17.

Vee, A. (2013). Understanding Computer Programming as a Literacy. LiCS. Literacy in Composition Studies, 1(2), 42-64.

Walter, D., & Sherman, M. (2015). Learning MIT App Inventor: A Hands-On Guide to Building Your Own Android Apps. Upper Saddle River, NJ, USA: Addison-Wesley.

Weintrop, D., Beheshti, E., Horn, M., Orton, K., Jona, K., Trouille, L., & Wilensky, U. (2016). Defining Computational Thinking for Mathematics and Science Classrooms. Journal of Science Education and Technology, 25(1), 127-147. doi:10.1007/s10956-015-9581-5

Werner, L., Denner, J., Campe, S., & Kawamoto, D. C. (2012). The fairy performance assessment: measuring computational thinking in middle school Proceedings of the 43rd ACM technical symposium on Computer Science Education, SIGCSE ’12 (pp. 215-220). New York, NY, USA: ACM.

Wing, J. M. (2006). Computational Thinking. Communications of the ACM, 49(3), 33-35. doi:10.1145/1118178.1118215

Wing, J. M. (2008). Computational thinking and thinking about computing. Philosophical Transactions of the Royal Society a-Mathematical Physical and Engineering Sciences, 366(1881), 3717-3725. doi:10.1098/rsta.2008.0118

Wing, J. M. (2011a). Computational Thinking. In G. Costagliola, A. Ko, A. Cypher, J. Nichols, C. Scaffidi, C. Kelleher, & B. Myers (Eds.), 2011 Ieee Symposium on Visual Languages and Human-Centric Computing (pp. 3-3).

Wing, J. M. (2011b). Research Notebook: Computational Thinking–What and Why? The Link. The magazine of the Carnegie Mellon University School of Computer Science.

Wolber, D., Abelson, H., & Friedman, M. (2015). Democratizing Computing with App Inventor. GetMobile: Mobile Computing and Communications, 18(4), 53-58. doi:10.1145/2721914.2721935

Yu, D. (2014). The Research on Teaching Reform of the “University Computer Basic” Course In Police Active Colleges Proceedings of the 2nd International Conference on Education Technology and Information System (ICETIS 2014) (pp. 583-586). Amsterdam: Atlantis Press.

Zapata-Ros, M. (2015). Pensamiento computacional: Una nueva alfabetización digital. RED, Revista de Educación a distancia, 46.