Removing the Walls Around Visual Educational Programming EnvironmentsFull paper
Many block-based programming environments have blossomed recently and have proven to be effective at engaging novices in learning programming. However, most are “walled gardens,” meaning they restrict access to the outside world, limiting learners to commands and computing resources built in to the environment. Some allow learners to drag and drop files, connect to sensors and robots locally or issue HTTP requests. But in a world where most of the applications in our daily lives are distributed (i.e., their functionality depends on communicating with other programs or accessing resources and data on the internet), the lack of support for beginners to envision and create such distributed programs is a lost opportunity. This paper argues that it is not only feasible, but crucial, to create environments with simple yet powerful abstractions that open up a world of possibilities, while also teaching the basics of distributed computing and other widely used but advanced computing concepts including networking, the Internet of Things, and cybersecurity. By thus removing the walls around our environments, we can expand opportunities for students’ learning considerably: programs can access a wealth of online data and web services, and communicate with other projects. Moreover, these changes can enable young learners to collaborate with each other during program construction whether they share their physical location or study remotely. Importantly, providing access to the wider world will also help counter widespread student perceptions that block-based environments are mere toys, and show that they are capable of creating compelling applications. The paper presents [blinded], a programming environment that supports these ideas and shows that tools can be designed to democratize access to powerful ideas in computing.