skip to main content


Title: A Visual Programming Environment for Learning Distributed Programming
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
Award ID(s):
1644848
NSF-PAR ID:
10036415
Author(s) / Creator(s):
; ; ; ; ; ; ; ; ;
Date Published:
Journal Name:
Proceedings of the 2017 ACM SIGCSE Technical Symposium on Computer Science Education
Page Range / eLocation ID:
81 to 86
Format(s):
Medium: X
Sponsoring Org:
National Science Foundation
More Like this
  1. 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
  2. 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
  3. When transferring sensitive data to a non-trusted party, end-users require that the data be kept private. Mobile and IoT application developers want to leverage the sensitive data to provide better user experience and intelligent services. Unfortunately, existing programming abstractions make it impossible to reconcile these two seemingly conflicting objectives. In this paper, we present a novel programming mechanism for distributed managed execution environments that hides sensitive user data, while enabling developers to build powerful and intelligent applications, driven by the properties of the sensitive data. Specifically, the sensitive data is never revealed to clients, being protected by the runtime system. Our abstractions provide declarative and configurable data query interfaces, enforced by a lightweight distributed runtime system. Developers define when and how clients can query the sensitive data’s properties (i.e., how long the data remains accessible, how many times its properties can be queried, which data query methods apply, etc.). Based on our evaluation, we argue that integrating our novel mechanism with the Java Virtual Machine (JVM) can address some of the most pertinent privacy problems of IoT and mobile applications. 
    more » « less
  4. null (Ed.)
    The AP Computer Science Principles (CSP) high school course introduces students to computer science and programming. What should motivated students study after successful completion of AP CSP? The AP CSA class teaches Java programming and it has traditionally not attracted students from underrepresented groups. We are working on an alternative, projects-based course that will teach cutting edge CS concepts, such as distributed computing, computer networking, cybersecurity, the internet of things and machine learning, in a hands-on, accessible manner. Such an approach enables students to work on problems that interest them making computing more relevant and the curriculum more engaging. We utilize NetsBlox, a collaborative, block-based programming environment that extends Snap! with a few carefully selected abstractions that open up the vast array of resources freely available on the internet for student programs. Moreover, the tool enables students to work together on the same project remotely similarly to how Google Docs operate. This demonstration will introduce the environment and highlight its utility in creating distributed applications such as a shared whiteboard app and projects that access public domain scientific data sources and visualize them in various ways using online services such as Google Maps or charting. More information is available at https://netsblox.org. 
    more » « less
  5. 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