Many block-based programming environments have proven to be effective at engaging novices in learning programming. However, most offer only restricted 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 computers or accessing resources and data on the internet), the limited support for beginners to envision and create such distributed programs is a lost opportunity. We argue that it is feasible to create environments with simple yet powerful abstractions that open up distributed computing and other widely-used but advanced computing concepts including networking, the Internet of Things, and cybersecurity to novices. The paper presents the architecture of and design decisions behind NetsBlox, a programming environment that supports these ideas. We show how NetsBlox expands opportunities for learning considerably: NetsBlox projects can access a wealth of online data and web services, and they can communicate with other projects. Moreover, the tool infrastructure enables 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. In this way, NetsBlox offers an illuminating example of how tools can be designed to democratize access to powerful ideas in computing.
more »
« less
Utilizing Smartphones for Approachable IoT Education in K-12
Distributed computing, computer networking, and the Internet of Things (IoT) are all around us, yet only computer science and engineering majors learn the technologies that enable our modern lives. This paper introduces PhoneIoT, a mobile app that makes it possible to teach some of the basic concepts of distributed computation and networked sensing to novices. PhoneIoT turns mobile phones and tablets into IoT devices and makes it possible to create highly engaging projects through NetsBlox, an open-source block-based programming environment focused on teaching distributed computing at the high school level. PhoneIoT lets NetsBlox programs—running in the browser on the student’s computer—access available sensors. Since phones have touchscreens, PhoneIoT also allows building a Graphical User Interface (GUI) remotely from NetsBlox, which can be set to trigger custom code written by the student via NetsBlox’s message system. This approach enables students to create quite advanced distributed projects, such as turning their phone into a game controller or tracking their exercise on top of an interactive Google Maps background with just a few blocks of code.
more »
« less
- Award ID(s):
- 1949472
- PAR ID:
- 10408423
- Date Published:
- Journal Name:
- Sensors
- Volume:
- 22
- Issue:
- 24
- ISSN:
- 1424-8220
- Page Range / eLocation ID:
- 9778
- Format(s):
- Medium: X
- Sponsoring Org:
- National Science Foundation
More Like this
-
-
Abstract: The paper introduces a visual programming language and corresponding web- and cloud-based development environment called NetsBlox. NetsBlox is an extension of Snap! and it builds upon its visual formalism as well as its open source code base. NetsBlox adds distributed programming capabilities to Snap! by introducing two simple abstractions: messages and NetsBlox services. Messages containing data can be exchanged by two or more NetsBlox programs running on different computers connected to the Internet. Services are called on a client program and are executed on the NetsBlox server. These two abstractions make it possible to create distributed programs, for example multi-player games or client-server applications. We believe that NetsBlox provides increased motivation to high-school students to become creators and not just consumers of technology. At the same time, it helps teach them basic distributed programming concepts.more » « less
-
We rely on a vast network of devices that communicate autonomously to provide many of the services we use every day. However, the enabling technologies behind the Internet of Things (IoT) are often not taught in K-12 classrooms, in part due to the need for hardware. But most teens in the United States have smartphones. Thus, we introduce PhoneIoT, a mobile app that allows students to access their smartphones programmatically over the Internet. PhoneIoT supports access to live sensor data from the device and controlling a customizable display on the phone’s screen. PhoneIoT allows students to learn the fundamental concepts of distributed computing and networked sensing using NetsBlox, a simple but powerful extension of the Snap! block-based programming environment. Because both PhoneIoT and NetsBlox are free and open-source, instructors are able to teach these advanced computer science topics even remotely without extra hardware.more » « less
-
The paper introduces a visual programming language and corresponding web and cloud-based development environment called NetsBlox. NetsBlox is an extension of Snap! and builds upon its visual formalism as well as its open source code base. NetsBlox adds distributed programming capabilities by introducing two well-known abstractions to block-based programming: message passing and Remote Procedure Calls (RPC). Messages containing data can be exchanged by two or more NetsBlox programs running on different computers connected to the Internet. RPCs are called on a client program and are executed on the NetsBlox server. These two abstractions make it possible to create distributed programs such as multi-player games or client-server applications. We believe that NetsBlox not only teaches basic distributed programming concepts but also provides increased motivation for high-school students to become creators and not just consumers of technology.more » « less
-
This paper introduces NetsBlox, a visual programming environment for learning distributed programming principles. Extending both the visual formalism and open source code base of Snap!, NetsBlox provides two accessible distributed programming abstractions to simplify the process of creating networked applications: message passing and Remote Procedure Calls (RPC). Messaging passing allows NetsBlox applications to send data to other connected NetsBlox clients. Remote Procedure Calls enable seamless integration of third party services, such as Google Maps, weather, traffic and other public domain data sources, into NetsBlox applications. Other RPCs help coordinating distributed clients which may be difficult for novice programmers allowing the user to more quickly create captivating and sophisticated applications. These abstractions empower users to develop networked programs, including multi-player games and client-server applications. By providing networking support, NetsBlox not only allows users to learn distribute programming concepts but also makes programming more engaging by incorporating diverse services available on the web.more » « less