i
i
i
i
A Crafts-Oriented Approach to Computing in High School: Introducing Computational Concepts, Practices, and Perspectives with Electronic Textiles YASMIN B. KAFAI, University of Pennsylvania EUNKYOUNG LEE, Korea Institute for Curriculum and Evaluation KRISTIN SEARLE, University of Pennsylvania DEBORAH FIELDS, Utah State University ELIOT KAPLAN, The Westminster Schools DEBORA LUI, University of Pennsylvania
In this article, we examine the use of electronic textiles (e-textiles) for introducing key computational concepts and practices while broadening perceptions about computing. The starting point of our work was the design and implementation of a curriculum module using the LilyPad Arduino in a pre-AP high school computer science class. To understand students’ learning, we analyzed the structure and functionality of their circuits and program code as well as their design approaches to making and debugging their e-textile creations and their views of computing. We also studied students’ changing perceptions of computing. Our discussion addresses the need for and design of scaffolded challenges and the potential for using crafts materials and activities such as e-textiles for designing introductory courses that can broaden participation in computing. Categories and Subject Descriptors: K.3.2 [Computers and Education]: Computer and Information Science Education—Computer science education General Terms: Human Factors Additional Key Words and Phrases: Electronic textiles, education, K-12 ACM Reference Format: Kafai, Y. B., Lee, E., Searle, K., Fields, D., Kaplan, E., and Lui, D. 2014. A crafts-oriented approach to computing in high school: Introducing computational concepts, practices, and perspectives with electronic textiles. ACM Trans. Comput. Educ. 14, 1, Article 1 (March 2014), 20 pages. DOI:http://dx.doi.org/10.1145/2576874
1. INTRODUCTION
In the past decade, researchers and educators have made many efforts to broaden access to and participation in computer science (CS) education in order to address the continued low number of students interested in CS and the underrepresentation of women and minorities in these fields in the United States [Wilson et al. 2010]. Some have developed programming tools to simplify the mechanics of learning to program, thereby helping young novice programmers to become more fluent and expressive with
This work was supported by a collaborative grant (0855868/0855886) from the National Science Foundation to Yasmin Kafai, Leah Buechley, and Kylie Peppler. Any opinions, findings, and conclusions or recommendations expressed in this article are those of the authors and do not necessarily reflect the views of the National Science Foundation, the University of Pennsylvania, or Indiana University. Author’s address: Y. B. Kafai; email:
[email protected]. Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from
[email protected]. c 2014 ACM 1946-6226/2014/03-ART1 $15.00 DOI:http://dx.doi.org/10.1145/2576874 ACM Transactions on Computing Education, Vol. 14, No. 1, Article 1, Publication date: March 2014.
i
i i
i
i
i
i
i
1:2
Y. B. Kafai et al.
new technologies [Kelleher and Pausch 2005]. Others have examined the social and cultural barriers that impede participation [Margolis and Fisher 2001; Margolis et al. 2008] or focused on the use of new activities like game and story designs to recruit more girls and minorities into computing [Denner et al. 2012; DiSalvo and Bruckman 2011; Kafai 1995]. Efforts are also underway to create networks of opportunities through statewide alliances among schools, after-school programs, and college outreach programs [Bruckman et al. 2009]. A different approach to broaden participation in computing has been to develop new computational materials and activities that can serve as alternative points of entry for underrepresented groups [Buechley and Hill 2010]. The development of computational construction kits such as the LilyPad Arduino [Buechley 2006] provides a compelling example. The LilyPad Arduino instruction kit includes a sewable microcontroller, sensors, and actuators, which can be used to teach programming and engineering concepts. While e-textile construction kits are similar in many functional aspects to robotics construction kits, e-textile kits use soft materials rather than motors and gears, and they incorporate crafting techniques such as sewing, which historically have a more feminine orientation. One of the challenges in learning with e-textiles has been to understand the connections to computing as students craft textiles, engineer circuits, and program designs in their projects [Kafai et al. 2012b]. In this article, we report on the design and implementation of a 10-week e-textile module we conducted with 15 high school students (16–18 years) as part of a pre-AP CS class. Our goals with this implementation were twofold: to showcase the feasibility of bringing e-textiles into the high school CS classroom and to test the application of a conceptual framework that could highlight the connections to computing and its impact on students’ perceptions of computing. In previous work [Kafai et al. 2012a], we analyzed young people’s learning with e-textiles at the intersections of crafting, coding, and circuitry, to capture its interdisciplinary nature. Here, we apply a framework of computational concepts, practices, and perspectives developed by Brennan and Resnick [2012] to connect to computational thinking [Wing 2006]. Our analyses of students’ completed artifacts, design approaches, and reflective interviews, were guided by the following two research questions. (1) What computational concepts and practices were reflected in students’ e-textile designs? (2) How did students’ perceptions of computing change? Based on our analyses, we describe how providing a design challenge with targeted constraints and support for remixing code and circuit designs can aid in student learning of computational concepts while also providing opportunities for personal expression and broadened perceptions of computing. We highlight what we learned about developing innovative, introductory CS activities in K-12 computing. 2. BACKGROUND
There are many compelling examples of how computing curricula can not only provide a rich introduction to core concepts and generate personally relevant contexts for computing, but also provide bridges to real-world applications and connections to larger groups of students. At the college level, successful approaches have included programming multimedia applications [Forte and Guzdial 2004], testing game designs [DiSalvo and Bruckman 2011], and designing mobile apps [Wolber et al. 2011]. At the K-12 level, robotics [Baretto and Benitti 2012], interface designs [Yardi et al. 2008], game design [Kafai 1995], and storytelling classes [Kelleher 2008] have been successful in broadening students’ participation in, and perceptions of, programming. Curricular extensions that build on arts-and-crafts-oriented activities and materials have received far less attention [Eisenberg et al. 2009]. The recent development of commercially available etextile construction kits, such as the LilyPad Arduino, provides the missing connection between craft-based activities and computing [Buechley et al. 2013]. ACM Transactions on Computing Education, Vol. 14, No. 1, Article 1, Publication date: March 2014.
i
i i
i
i
i
i
i
A Crafts-Oriented Approach to Computing in High School
1:3
Bringing e-textiles into the classroom, however, required us to articulate what exactly students learn when they design e-textiles and to determine how their learning relates to computing. While we focused in previous examinations on the interdisciplinary nature of learning with e-textiles [Kafai et al. 2012b], it is equally important to establish a connection to CS education and, in particular, computational thinking. Wing [2006] described computational thinking as the “ability to engage in problem solving, designing systems, and understanding human behavior” (p. 6). To highlight the multiple dimensions of computational thinking, Brennan and Resnick [2012] distinguished between computational concepts, practices, and perspectives. Computational concepts refer to elements such as sequences, loops, parallelism, events, conditionals, operators, and data structures that are present in many programming languages. Computational practices are activities, such as being incremental, reusing and remixing, testing and debugging, and modularizing and abstracting, that designers use to create programs. While some aspects of concepts and practices appear to be easily applicable to what is being accomplished in crafting with e-textiles, it is not clear how the interdisciplinary elements such as the circuitry and crafting can be accounted for in students’ learning. Computational perspectives, such as expressing, connecting, and questioning, refer to worldviews that designers develop as they engage with digital media [Kafai and Peppler 2011]. Computational perspectives connect to a core concern in broadening CS participation that focuses on learners’ perceptions of computing, where they see applications for computing, and how they see themselves within the field and their future careers. When researchers ask about students’ perceptions of computing [Dimond and Guzdial 2008; Yardi and Bruckman 2007], they often hear an assortment of statements such as “being boring or tedious,” “only for smart students,” “antisocial,” or “lacking creativity.” The classroom implementation we conducted affords us the opportunity to reexamine these perceptions because of the particular positioning of etextiles within a larger computing culture. E-textiles are hybrid designs, consciously combining traditionally masculine activities such as engineering and computing with traditionally feminine activities such as crafting and sewing. We were interested in whether learning with e-textile materials could indeed broaden not only participation in, but also perceptions of, computing. Focusing on computational concepts, practices, and perspectives allows us to examine students’ understanding of core CS concepts, the generative thinking practices students developed through the process of bringing their e-textile designs to fruition, and students’ changing perceptions of computer science. 3. METHODS 3.1. Participants
A class of 15 students (7 girls and 8 boys) ages 16–18 years (juniors and seniors) from a public high school participated in a 10-week (19 meetings) e-textiles module as part of their elective computer science class. The students reflected the demographic makeup of the school as a whole: 46% African American, 10% Latino, 9% Asian/Pacific Islander, 33% White, and 2% other. In addition, 49% of students were receiving free or reduced lunch, reflecting socioeconomic diversity. As a result, students’ experiences with computing varied widely prior to their freshman year of high school. However, due to the school’s status as a science and technology magnet school, each student was issued a laptop for academic and personal use during the school year. Students in the class had spent September to March programming in Alice1 , and many had also taken a physics course during which they programmed robots. Because we did not have access to 1 www.Alice.com
ACM Transactions on Computing Education, Vol. 14, No. 1, Article 1, Publication date: March 2014.
i
i i
i
i
i
i
i
1:4
Y. B. Kafai et al.
Fig. 1. The LilyPad Arduino and sewable components (left); conductive thread (right).
students’ work and grades from these courses, we used the CS instructor’s evaluations of students’ programming skills (e.g., “good,” “bad,” “could try harder,” “motivated but struggling”) and students’ self-reported skill levels from preproject interviews that we conducted to gauge their prior understanding. While none of the students had worked with e-textiles before, we found that their prior experiences provided some familiarity with programming, and in some cases, reengaged students who were not interested in working in Alice and had viewed their prior coursework as rote in nature. The e-textile course met twice a week for 65 minutes per session. The designer and teacher of the course was one of the coauthors (Kaplan), a fourth-year undergraduate majoring in digital media design with an interest in becoming a computer science teacher. He created curricular materials and had two years of experience teaching afterschool e-textile workshops. He developed the e-textiles curriculum (for more detail, see 4.1) and taught it as part of his senior capstone project for his education minor. A graduate student (Searle) with prior experience in both e-textiles and teaching, collected observational data. She also assisted students with e-textile design, construction, and coding as needed. 3.2. LilyPad Arduino Construction Kit
The LilyPad Arduino construction kit [Buechley and Eisenberg 2008] enables novice engineers and designers to embed electronic hardware into textiles. The LilyPad kit contains a set of sewable electronic components, including a programmable microcontroller and an assortment of sewable sensors (e.g., light, temperature) and actuators (e.g., light-emitting diodes or LEDs, sound buzzers) that allow users to build their own soft, wearable computers (see Figure 1). Designers put LilyPad modules together with conductive thread instead of traditional materials like insulated wire, and they use sewing rather than soldering techniques (Figure 1, right). To define the behaviors of the project, designers employ the popular ModKit or Arduino development environments (see Figure 2), enabling them to program the LilyPad microcontroller to manage sensor and output modules (like LEDs) employed in their designs. Arduino is an open-source, text-based software platform similar to C language. ModKit [Millner and Baafi 2011] is a visual programming environment built as an overlay of Arduino that shows lines of code as stackable blocks similar to the Scratch language [Maloney et al. 2010]. Programming of lights is done by writing certain pins to high (positive) or low (negative). For polarized LEDs, the positive side must be set to positive (“digitalWrite ACM Transactions on Computing Education, Vol. 14, No. 1, Article 1, Publication date: March 2014.
i
i i
i
i
i
i
i
A Crafts-Oriented Approach to Computing in High School
1:5
Fig. 2. Arduino (left) and ModKit (right) programming environments.
led1 HIGH”) and the negative side must be programmed to negative (“digitalWrite led1 LOW”) or connected to a hardwired negative pin. To make lights blink users must program one polarized side of an LED steady and program the other to turn on and off, which often leads to learning about control flow [Fields et al. 2012b]. Both the LilyPad Arduino and the regular Arduino have digital and analog pins in addition to hardwired positive and negative pins. Digital pins are numbered (3, 4, 5, 6, etc.) and can act as digital outputs (on/off), analog outputs (variable output), and digital inputs (on/off). Analog pins have an “a” (a0, a1, a2, etc.) and can act as digital outputs (on/off), digital inputs (on/off), and analog inputs (variable input). Thus digital pins can fade lights (analog output), and analog pins can read sensors (analog input from a sensor). Learning the affordances of different pins is one key area of students’ learning how to use the LilyPad microcontroller. Often students’ designs change as they realize that certain pins can only do certain things—for instance, that analog pins cannot fade lights but can only turn them on and off [Fields et al. 2012a]. They must also apply these concepts to programming. In using either Arduino or ModKit, programmers must set pins to “OUTPUT” or “INPUT.” The design task discussed in this article, a sensor made of two conductive fabric patches, offers even more complexity because programmers must apply the Arduino internal pull-up resistor capability, essentially setting a pin to an input and then setting it to positive or “high” in order to be functional.2 3.3. Design of E-Textile High School Class
The design of the e-textile class initially followed an outline proposed by Buechley and colleagues [Buechley et al. 2007] that structured the course into six units focusing on circuit designs, code, and materials. While we used some of these units in our course (such as learning about circuits and code), we decided to design activities around students’ completion of an individual e-textile design challenge, a “human sensor” project that included four or more LEDs and two or more electrically conductive patches that, when touched simultaneously, acted as a sensor. Table I provides an overview of the focal daily class activities and materials (e.g., sample projects, starter projects, 2 For a more detailed explanation, see http://arduino.cc/en/Tutorial/DigitalPins.
ACM Transactions on Computing Education, Vol. 14, No. 1, Article 1, Publication date: March 2014.
i
i i
i
i
i
i
i
1:6
Y. B. Kafai et al. Table I. Overview of e-Textile Class Activities Days 1–3
Activity Simple Electronic Circuits & Conductive Sewing with Starter Projects
4–5
Programming with Arduino & LilyPad ProtoSnap Boards
6–8
Basic E-Textile Design Schemes & Individual Design Consultations
9–18
Culminating E-Textile Design: Crafting, Coding, & Debugging
19
Final Presentations
Description Brief review of electricity (how it works, using a flashlight, introducing basic notations). Students make simple circuits using alligator clips, a battery, a switch, and 1 LED followed by learning how to sew with conductive thread to create their first soft circuits. Finally, in pairs or small groups, students work through a series of simple circuit-debugging activities. Instructor demonstrates how to program electronic circuits with Arduino programming software. The syntax of programming language and how programs are compiled and executed are explained. Students then write programs in pairs with code examples (e.g., blinking multiple LEDs, turning on LEDs based on light sensor values, making sounds, etc.) Structure of code examples consisted of the key concepts, sequences, loops, conditionals, operators, and variables. Introduction of computational circuit diagrams showing 2 conductive patches and 4 LEDs connected to the LilyPad. Students generate their own designs, focusing first on their chosen aesthetic and later on the logistics of circuitry and coding. “Design Consultations” are required before construction can begin; the course instructor or expert research team member meets individually with students to finalize their design diagrams. Students implement their designs, first cutting pieces of conductive and nonconductive fabric and ironing these on their project. Then students sew electronic components together and to the LilyPad, testing each line with alligator clips and/or a multimeter. Short lessons on code concepts are interspersed with longer periods where students work on their individual projects. More complex coding concepts are introduced on an individual basis as they are relevant to students’ projects. Students iteratively test and debug their designs, developing solutions to address them. Some students add new components toward the end. Students demonstrate and explain the design and functionality of their e-textile projects in class.
debugging projects, design consultations, flexible lessons and assessments) that proved to be instrumental in communicating key ideas and helping students complete their projects. In addition to the individual human sensor projects (the main design challenge), we utilized several other types of projects for learning purposes. For instance, we have found that it helps to introduce e-textiles by showing sample projects of our own creation in addition to projects displayed on the LilyPond Web site.3 These examples help students generate ideas for projects, illustrate simple as well as more complex e-textile designs, and provide a sense of a larger community involved in this type of work. They also serve to emphasize the aesthetic aspect of the projects and help students develop a vision for their own final projects [Fields et al. 2012a]. Because many of the students had never sewn before, in the early stages of the class we used starter projects to introduce students to sewing. With these projects, we familiarized students with some basic but central ideas such as, (1) connecting positive-to-positive and negative-to-negative, (2) not sewing through both the positive and negative ends of a component, and (3) not crossing positive and negative lines. 3 www.lilypond.mit.edu
ACM Transactions on Computing Education, Vol. 14, No. 1, Article 1, Publication date: March 2014.
i
i i
i
i
i
i
i
A Crafts-Oriented Approach to Computing in High School
1:7
Fig. 3. E-textile Debugging Project; Left Diagram: Incorrect version (+ – +); Right Diagram: Corrected version: (+ + +).
We also used debugging projects [Fields et al. 2012b; Kaplan et al. 2011] in the introductory phase. During these projects, students working in pairs or small groups tested their growing understanding of e-textile circuit designs. Some students had an opportunity to experiment with a series of electronic circuit debugging projects after learning about circuitry. The e-textile debugging projects incorporated three different kinds of challenges: (1) short circuits, (2) electronic topology (series vs. parallel circuits), and (3) polarization (e.g., LEDs have a positive side and a negative side). The e-textile debugging projects were developed based on prior workshop observations that students faced multiple challenges when designing their own e-textile projects. For example, they caused short circuits by sewing together positive and negative ends of LEDs or crossing positive and negatively charged threads. To help prevent these mistakes, we used three debugging projects: (1) a short circuit problem that required students to identify and fix the problem; (2) an electronic topology problem that required students to align parallel circuits (see Figure 3); and (3) a polarization problem that required students to alter a faulty circuit design that incorrectly connected positive to negative. In addition, some students volunteered to solve code-debugging projects that we piloted using Arduino. The code-debugging projects incorporated three different kinds of challenges: (1) a setup of devices problem that required students to fix the incorrect code within the Arduino setup function for programming the hardware system; (2) a control flow problem that required students to address several control flow issues such as incorrect conditional statements, incorrect quit conditions in a loop function, and erroneous sequenced statements (see Table II); and (3) a variables problem that required students to fix a dysfunctional setup that included variables. In order to support the practice of remixing, we also provided various code examples to help students learn how to program actuators and sensors that come with the prewired circuits of the LilyPad ProtoSnap boards. Students worked in small groups to examine code examples such as various blinking patterns. They also tested how to control actuators such as LED lights, vibration motor boards, and speakers, based on values from light or temperature sensors. These code examples helped students to familiarize themselves with the basic structure and functionality of Arduino programming code so that they could modify existing code by adding their own ideas to it. The code examples also provided material that the students could (and often did) remix by including segments of programming code into their own design projects. The final and largest block of the class was dedicated to completing the culminating design challenge project. For the culminating project, we asked students to include four LEDs and two conductive patches but left other details up to them, and we provided them with sample code that they could remix to best suit their programming needs. We have found that providing such constraints helps novice designers to get started but also allows for customization, as the final class projects showcase (see Section 4.2). During this time, the class moved to a more flexible format of individual assistance and minilectures on topics tailored to the project needs of the student designers. For ACM Transactions on Computing Education, Vol. 14, No. 1, Article 1, Publication date: March 2014.
i
i i
i
i
i
i
i
1:8
Y. B. Kafai et al. Table II. Example of Code Debugging Project
Challenge: You want LED #5 to blink 5 times but LED #5 keeps blinking without stopping. What’s going on? Fix the code so that LED #5 only blinks 5 times. // pin 5 that the LED is attached to const int ledPin = 5; void setup() { // initialize the digital pin as an output pinMode(ledPin, OUTPUT); } void loop() { int i=0; while(i