The BlockyTalky project investigates how youth can learn about parallel and distributed computing through designing, building, and programming networked devices that communicate with each other, web services, and mobile devices.
If you came here to see cool pictures and video of the BlockyTalky approach in action, click here to jump down the page.
Otherwise, read on and you will eventually get to pictures and video.
Parallel and Distributed Computing (PDC) are increasingly important topics within computer science and are critical to many of the computing applications that young people use every day. They text, play online games, share pictures via social media, tweet, and check the weather. All of these applications depend upon PDC, and most young people are very passionate about these kinds of systems.
Yet, no toolkits or curricula exist that enable youth to learn how these technologies work or build their own. Likewise, researchers have conducted very little research about how youths learn parallel computing, and none about how they learn distributed computing.
There is a serious need for PDC skills that has been well-recognized by both academia and industry. Our current computer science education pipeline inadequately prepares programmers to correctly implement parallel and distributed computing systems. We are investigating how we might change this by offering an introduction to computer science through PDC, using iterative Design-Based Research methods to both create and refine toolkits and curricula for youth-relevant PDC education, as well as to develop empirically-warranted theoretical models of how budding programmers develop PDC thinking skills.
The BlockyTalky project’s research program has three facets: 1. Learning from youth about the project genres that excite them to learn about PDC, and then discovering how (and whether) these different genres support learning. 2. Developing hardware/software tools that enable PDC learning. 3. Studying the development of PDC ideas and skills by youth.
Our research on PDC learning is very much in its nascent stages. We are using ethnographic and clinical interview-based methods to study learning by participants in our studies (who design and build PDC systems). Our research on learning is enabled by our BlockyTalky software and hardware platform (see below), which we have designed specifically for the purpose of making it easy for users to create distributed cyber-physical systems. The research on learning and iterative technology development are mutually informative; what we learn about learning shapes the design of our tools, just as the design of our tools shapes the kinds of practices that we see by youth.
As part of our research, we have developed a prototype software and hardware toolkit (also called BlockyTalky) that makes it easy for users to build physical devices that can sense and act in the physical world as well as communicate over LANs and the Internet with other BlockyTalky devices, web services (e.g., social media), and, eventually, user-built mobile applications. Each BlockyTalky devices is a web server; users can connect using any HTML5-compliant browser and program their devices using a blocks-based language. For example, the following code responds to a user pressing a hardware button by starting a drum loop:
Quite a bit of recent research has shown that the opportunity to build computing enhanced physical objects, whether robots, fashion pieces, or public displays, can get youth excited about computing. However, that research has largely ignored the very important role of networked and social media in youths lives. Nearly all American teens use social media; but there are scant tools to create their own socially-connected systems, and none that create bridges between their virtual lives and the physical spaces they inhabit. BlockyTalky makes it possible for youth to create new physical and virtual ways to connect to one-another, and with their homes and communities. For example, here's an Internet-connected remote-controlled cat telepresence and feeding system:
Partners: Rebecca Fiebrink, Paul Lehrman, and Chris Rogers
Our WeJam sub-project investigates how musical computing can be an entry point for diverse populations of youth into computer science, and into PDC in particular. Music has lots of intrinsic parallelism (e.g., chords, parallel harmonies), and multi-player musical performances require multiple “nodes”, i.e., people, to coordinate and synchronize their activities. We have added musical domain-specific language features to BlockyTalky that enable users to communicate with synthesizers in order to make music together.
The following video shows Ben Shapiro, Sarah Shapiro, and Rebecca Fiebrink improvising a performance of the Ghostbusters theme song using BlockyTalky.
The three performers are each controlling a different aspect of the Ghostbusters theme song through different tangible interfaces (e.g., a distance sensor that brings in or kills the drums). Each input starts, stops, and otherwise controls different musical phrases (e.g., activates different melodies), giving performers room for improvisation, such as repeating a chorus an extra time. The BlockyTalky WeJam module supports improvisation by adding language features for synchronization that are grounded in the musical domain; these features enable performers to keep in time even as they do not co-execute a pre-scripted performance.
We recently (August, 2014) completed a pilot study in conjunction with a Boys & Girls Club where 15 African-American and/or Latino middle-school-aged youth (3 of who were girls) used BlockyTalky to create and perform with musical instruments. We are currently preparing several manuscripts about what we learned, and want we want to understand better, because of this pilot. For now, here are videos of some of the kids’ inventions and performances.
One participant, Hermela, decided that she wanted to perform John Legend’s song All of Me. To do so, she constructed a “clarinet” that she programmed to play the different melodic segments of the song. Her device has four buttons. Three activate different melodies, and the fourth stops music from playing. Each melody includes intricate synchronized parallel structure (chords).
Another group of participants attempted to perform the song from the cantina scene of Star Wars. The group worked together to transcribe the song into a score that they would play from. And each built an instument to play his part. However, the group did not allocate sufficient time to rehearsal and was surprised to find when they performed that they were unable to stay in sync with one-another. They quickly became frustrated and abandoned their performance. While a frustrating outcome, the case shows how the demands of group performance can necessitate mastery of a set of technical skills that surpass those needed to build and program an individual instrument. We conjecture that a frustrating performance could motivate learning about synchronization techniques necessary to make a better performance. We will explore this in future design research iterations.
This project is supported by the National Science Foundation (CNS-1418463), the NCWIT Academic Alliance, and LEGO Education.