In honor of back-to-school season, we will be featuring some of our recent education titles this week. We kick it off today with Yasmin Kafai and Quinn Burke discussing their book Connected Code, which makes an argument for why every child needs to learn to code.
In Connected Code, you acknowledge Seymour Papert for laying the “foundation for how we think about learning, teaching, and computers.” In what ways have the ideas and work of Papert influenced the book?
This first push of putting programming into schools was very much inspired by Mindstorms, a book by Seymour Papert, in which he argued that children could program computers to learn about mathematics in a more grounded, applied way, delving into new topics such as cybernetics while also developing their own thinking framed in progressive views of education like the ones promoted by John Dewey, Paulo Freire, and Maria Montessori. Papert’s idea about Constructionist learning were prescient not only in terms of recognizing computers’ potential for learning but also recognizing such learning as deeply personal and rooted and driven by interests and passions. For Papert, learning was inherently social, and computers served as a tangible means for recognizing that knowledge can become embodied in many forms beyond the word alone.
For these reasons, Constructionism is the learning theory for the 21st century and uniquely positioned to frame learning and teaching of programming inside and outside of schools. In the book, we discuss significant connections that are happening today around what children are actually interested in programming, the contexts in which they do it, and how they do it. Through the lens of the introductory coding language Scratch, we examine these connections along several dimensions:
· from code to applications - illustrating how students increasingly focus on learning programming not as some abstract discipline but within the context of making actual applications such as video games and digital stories that have deep personal meaning to themselves and their peers
· from tools to communities - highlighting the shift from learning code as an individualistic endeavor to one that is now increasingly a highly social enterprise in which young makers connect online and in-person through sharing and remixing each other’s work
· from scratch to remix - pointing to the growing possibilities and ethical challenges associated with repurposing code as a starting point for these creations (e.g., rather than having to build entirely anew “from scratch”)
· from screens to tangibles - showcasing how coding and computing have moved beyond stationary screens and reintroduced a tangible dimension to digital media so users can immerse themselves in the physical world through programmable toys, tools, and textiles
These four shifts represent the basis of Connected Code, capturing this wider movement of youth’s coding towards being a communal activity rooted in children’s making and sharing digital creations personally important to them.
Briefly outline the history of the teaching of programing in K-12 classrooms and how it has been valued by educational institutions and society as a whole over time.
In the 1980s many schools featured Basic, Logo, or Pascal programming computer labs which students typically visited once a week as an introduction to the discipline. Most of the approaches focused on learning code for the sake of coding and would fall under the category of what we now call “computational thinking”. At that time, there was much focus on problem solving and planning in series of simple exercises without providing much needed contexts and extended periods of time for developing more complex projects. Due to a lack of subject-matter integration and a dearth of qualified instructors however, by the mid-1990s schools had largely turned away from programming. With the availability of pre-assembled multi-media packages via glossy CD-ROMs, who was interested in toiling over syntax typos and debugging problems by creating these applications oneself? These factors seemingly negated the need for learning programming in schools, compounded by the excitement generated by the Internet which sent schools exploring how to best “surf” the web rather than delving into how it actually works. Programming was largely forgotten in schools, deemed entirely unnecessary by some and too difficult to teach and learn by others.
Over the last years we have witnessed a newfound interest in bringing back learning and teaching programming on all K-12 levels. But now it is not schools that are leading this revival. While there have been the educational initiatives to promote coding through ideas such as computational thinking and to broaden participation in computing, the most significant propellant for programming’s resurgence has been mostly outside of schools in digitally-based youth cultures. Afterall, computers now seem to be accessible everywhere, particularly outside of school, where children and youth are innovating with technology—many of which are hand-held devices—to create their own video games, interactive art projects, and even their own programmable clothes through electronic textiles. What is more, the same computers on which they create these sundry, home-spun items also connect them to wider networks of other young users who share common interests and a similar commitment to connecting through making. However, despite the upsurge of interconnected youth communities, very few youth on the whole are using their devices—be it laptop, iPad, iPhone, or Droid—for little else than mass consumption of the commercial media channeled on a 24/7 basis. While today’s youth may be “digital natives” in terms of being able to technically manipulate the latest devices, their capacity to wield such devices critically, creatively, and selectively is entirely underwhelming. Thus, schools have a newfound responsibility here—which we outline in Connected Code.
What would a classroom focused on fostering “computational participation” look like?
In the book, we provide numerous examples of what computational participation can look like. Take for example the programmers’ writing workshop in which students code their own digital stories in a communal environment sharing and reflecting upon ongoing drafts of their digital narratives; or consider the video game design studio in which students employ key algebraic concepts to create and share their interactive projects through virtual arcades with their peers; or consider the “new shop class” which again relies upon a communal setting for students, only now they share tangible objects such as items of clothing and everyday household devices such as picture frames and light switches that have been given new life through the addition of programmable devices such as automated motors and light emitting devices that respond to external input to be more responsive, “smart” devices. All three of these learning environments—the writers workshop for programmers, the video game design studio, and the shop class for programmers—are all eminently replicable in K-12 schools. Learning within all three environments rely on three key elements that educators need to ensure are in place:
- Context – students needs to design and make applications and products that are personal and authentic to them; these need to be based upon their own interests and the interests of their friends
- Time – students need ample time to complete a complex project, not a mini-activity, such that the project has an actual life beyond the classroom; accordingly, teachers need to allow for multiple drafts and shareable portfolios within their classrooms
- Connection – finally, programming cannot be simply a stand alone class but must be integrated into disciplinary content to create projects that exemplify core curricula learning; whether the product is a digital story, a video game, or an electronic textile item, each one of these exemplifies fundamental learning principles in the disciplines of language arts, mathematics, and science
Our book extends learning programming to current developments in cloud learning, which well captures this potential to compute and connect collaboratively. Computational participation, as we see it, is the ability to solve problems with others, design systems for and with others, and understand the cultural and social nature of human behavior by drawing on concepts, practices, and perspectives fundamental to computer science. Broadly speaking, we point towards a shift from a predominantly individualistic view of computing to one that includes a greater focus on the underlying sociological and cultural dimensions in learning to code, expanding computational thinking to include social participation and personal expression.
Elaborate on what you consider to be the biggest obstacles standing in the way of this ideal classroom.
We realize that of course having kids program applications, placing them in groups, and encouraging them to remix code will hardly address all of the challenges associated with broadening participation in computing.
- Timing – most immediately, coding needs to happen earlier, before even children know what coding is! Opportunities to make digitally need to be created early on, starting with the elementary and middle school grades to provide students with experiences in computing. On the younger side, there are many interesting ways—most recently with the launch of Scratch Jr.— in which young kids can engage in creative and constructive designs at home and in kindergarten.
- Curriculum - returning to the school setting, there currently are ambitious efforts on redesigning schools and curricula where programming is integrated across the curriculum rather than as a standalone class. In order to broaden computational participation, we need to encourage all kinds of digital designs, be it games, animations, and stories with different materials and contexts. Aligning such activities to core curricula subject standards means these activities can enter classrooms more easily without detractors claiming them as distractions.
- Teachers – perhaps the greatest challenge because we need teachers that can implement these curricula and counselors that steer students into the courses. After reviewing the situation in the recent report, Running on Empty, the Computer Science Teachers Association has been instrumental in promoting the adaptation of certification standards for teachers. This cannot just be a transient corps of volunteers but will need to include professionals that develop a deep understanding of learning trajectories of students and pedagogical strategies to support learning.
Finally, we need to think beyond the classrooms. Teachers can’t do it all. Just like in reading where we ask parents to engage with their children at home through a series of weekly books and key watch words, schools need to have materials for families directing them to intuitive resources such as Scratch and Alice with suggested activities for playing and making with their child. Likewise, while schools, curricula and materials, and teachers are important milestones on this road map, afterschool programs and online communities are equally important in providing access to support, expertise, and audience. We also need to figure out ways how youth can join and participate in online creative communities that will allow them to continue programming outside of schools.
What are some of the not-so-obvious benefits of teaching coding in classrooms?
In Connected Code we introduce a broader conceptualization of computation in schools that encompasses not only its functional role in terms of skills and practices, but also address the socio-political and personal contexts that inevitably accompany children’s use of digital media. Functional purposes usually describe the basic skills and concepts that someone needs to learn in order participate in society; political purposes capture why understanding these skills and concepts are relevant in society; personal purposes describe the role that these skills and concepts plays in personal expression for building and maintaining relationships. These various purposes describe the fundamental aspects of any literacy, whether it is reading and writing printed texts or using and programming digital media, to participate in the wider digital public. While only few of us will become computer scientists that will write the code and design the systems that undergird our daily life, we all need to understand code to be able to constructively, creatively, and critically examine digital designs and decisions. We have come to realize that everyone needs to engage in making the digital publics a livable space, and this, as Jane Margolis aptly points out, makes computational participation “the civil rights issue of the 21st century.”