Today we kick of Teen Tech Week with a guest post by OITP Youth & Technology Fellow, Chris Harris. Chris is the director of the School Library System for the Genesee Valley Educational Partnership in rural western New York. Read further to build your understanding and appreciation of “computational thinking.” Follow #readytocode and #TTW17 for posts throughout the week.
What does it mean to be computer literate? When Seymour Papert first began teaching computer science to children with LOGO in the 1970s and 80s it was a very holistic concept. Daniel Watt, one of the co-developers of the LOGO language, defined computer literacy as being able to program as well as use a computer. Over time, the definition began to change. In 1990, educational computer researcher Margaret Neiss dismissed programming as being an outdated skill unnecessary for teachers to master. By 2000, a survey seeking to rank the importance of computer competencies for teachers in Kentucky did not even include programming as an option. As the researchers there put it, the goal of the ISTE standards (pdf) from 1998 was to “focus on student knowledge and student use of technology rather than what the teacher needs to know about technology and to be able to do with technology”.
But now, things are changing. Initiatives such as Code.org and the Hour of Code have realized significant penetration into K-12 classrooms and libraries since their launch in 2013 with a reported 497,950 teachers registered to teach the introductory courses. Additional domestic policy work has been undertaken by the Computer Science Teachers Association, formed in 2004 as an extension of the Association for Computing Machinery to provide support and advocacy for teachers of computer science. In late 2016, a new K-12 Computer Science Framework was released by a collaborative headed by the Association for Computing Machinery and the Computer Science Teachers Association. The framework provides a roadmap for possible adoption in states or local districts that includes a strong focus on computational thinking.
But what is computational thinking? The concept of computational thinking extends back to Papert’s first use of the term to describe a way of thinking deeply about the abilities of a computer to work and solve problems. More recently, the term was adopted by Jeannette Wing in her seminal article (pdf) defining a different approach to the field of computer science that sought to identify “a universally applicable attitude and skill set” that everyone should learn . Modern definitions of computational thinking focus on four concepts: (a) decomposition, or breaking down a problem into parts; (b) pattern recognition, or the ability to interpret data; (c) abstraction, or an understanding of generalized principles; and (d) algorithm design, or the creation of explicit directions for work.
To understand computational thinking in libraries, the ALA Libraries Ready to Code program created a working definition of computational thinking. For libraries, computational thinking refers to a set of problem-solving and automation skills foundational to computer science though also transferable to many fields and applicable to college and career readiness. It is a way of analyzing and breaking down (deconstructing) problems into solvable units, using the power of computing to solve those problems, and creating personal meaning by processing information and creating connections to transform data into understanding.
Computational thinking is a lens for understanding and viewing the foundational aspects of computer science separated from the application of computer science in writing code. This was described by media theorist Douglas Rushkoff as invalidating the metaphor about learning programing as being like having to be a mechanic to drive a car. The real comparison, Rushkoff argued, was that a lack of computational thinking relegated a person to being a passenger in the car instead of the driver. For Rushkoff computational thinking “is the only way to truly know what is going on in a digital environment, and to make willful choices about the roles we play”.
So how might you infuse computational thinking into your library programs? Start by thinking about some of the core aspects to computational thinking: breaking down and analyzing problems, finding ways to solve the problems; and thinking about how to create an algorithmic or computational solution to the problem. Even in early childhood programs, you can engage children and parents with computational thinking by focusing on sequencing and conditional logic like If/Then statements. Play a little game: IF you are wearing green, THEN stand up. IF you like apples, THEN sit down. For older students, consider enriching and extending Code.org lessons by including problem identification and planning and writing pseudocode.
In the end, libraries must work to become ready to code to maintain leadership as a key institution helping children and youth prepare for a digital future. While I am not suggesting that every library should be teaching coding, or even that every student should learn coding, it is critical that we are all working towards a common understanding of basic computational literacy. We must all understand computer programming and code to thrive.
This post was developed from material in preparation for dissertation work by Christopher Harris, doctoral candidate at St. John Fisher College, Rochester, NY.
- Watt, D. H. “Computer Literacy: What Should Schools Be Doing about It.” Classroom Computer News 1.2 (1980): 1–26.
- Niess, Margaret L. “Preparing Computer-Using Educators for the 90s.” Journal of Computing in Teacher Education 7.2 (1990): 11–14.
- Scheffler, Frederick L., and Joyce P. Logan. “Computer Technology in Schools: What Teachers Should Know and Be Able to Do.” Journal of Research on Computing in Education 31.3 (1999): 305.
- Ibid, p. 310.
- Wing, Jeannette M. “Computational Thinking.” Commun. ACM 49.3 (2006): 33–35. ACM Digital Library. p. 33.
- Youth & Technology Policy Forum Listening Session, ALA Midwinter, 2016 http://www.ala.org/tools/readytocode/computationalthinking
- Douglas Rushkoff. Program or be Programmed (2011). p. 8.