App Inventor Under Scrutiny
Written by Sue Gee   
Wednesday, 01 July 2020

An analysis of almost ninety thousand App Inventor Projects reveals that while some reach over 60,000 blocks most are comparatively modest. Compared to Scratch projects, those based on App Inventor lack loops and conditionals and are predominantly event driven.

App Inventor is a really easy way to create Android apps. In case you missed its back story, it originated at Google when MIT's Hal Abelson was there on a sabbatical and decided that Android would be a good target for an educational language. He took the Scratch graphical block programming language and customized it to produce Android apps.

App Inventor was first demoed to the world in 2010, and as we reported at the time, see Easy Android Apps, using it to create an app all you had to do  was to drag some UI controls onto a surface and then create the program logic by dragging blocks. It was, and is, very suited to getting beginners to program something impressive. 

appinvent3

The next part of the story is that, in 2011  as part of the closure of Google Labs, Google handed App Inventor over to MIT where it has been under development ever since as an open source project. Although not as popular as Scratch it has been adopted as an educational tool, which is what Abelson intended, and has also been used as a prototyping tool, a role that was proposed, and utilized by Mike James - see App Inventor Version 2 - Easy Android Apps

This study of App Inventor Projects comes from the Department of Informatics and Statistics Federal University of Santa Catarina and is intended to contribute to K12 curriculum development by guiding decisions on the selection of a visual programming language for teaching computing.

According to the paper from Nathalia da Cruz Alves et al., who were supported in their research by the MIT App Inventor team: 

[App Inventor] is used by a wide range of people of all ages and backgrounds with more than 1 million unique monthly active users from 195 countries who created almost 35 million mobile apps. App Inventor projects can be shared via the App Inventor Gallery  under the creative commons license, containing over 150 thousand projects in April 2020. 

For this study 88,606 projects were scraped from the App Inventor Gallery and were analyzed in terms of size, utilization of programming built-in blocks, design components, and components blocks.

In terms of size, the researchers discovered that while many projects were small, 25% with 15 or fewer blocks, some were  "surprisingly large projects" with more than 60,000 blocks. While the mean number of blocks per project was 162.5, 75% were made up of fewer than 137 blocks, indicating that the average was severely skewed by the long tail of the distribution.

Looking at the use of different kinds of blocks the researchers found that event blocks, to handle interface events, timers, sensors, etc., are by far the most used ones, being present in more than 91% of the projects.

APPINVB1

By way of comment the paper notes:

This confirms the event-driven nature of the App Inventor programming language.

It also calls attention to the finding that:

Set and Get, and Call Methods are also widely used to customize App Inventor components and perform complex functions that are encapsulated by the call methods.

APPINVdccb

Making the distinction between design components versus component blocks, the report explains that fewer design components are used than programming blocks:

as typically, to work properly, several programming blocks are necessary for each design component in an App Inventor project.

APPINVdc

Design components are relied on most heavily for User Interface and for Layout where their use swamps that of component blocks.

The report also makes interesting comparisons between App Inventor and Scratch, using the results of an analysis of 233,491 Scratch projects reported by Aivaloglou and Hermans in "How Kids Code and How We Know: An Exploratory Study on the Scratch Repository", it finds:

In general, App Inventor projects seem to be larger in terms of the number of blocks per project than Scratch projects. Although the mean number of blocks per project (162.50 blocks in App Inventor projects and 154.55 blocks in Scratch projects) do not differ much, the median of blocks per project in App Inventor (54) is almost twice the median of blocks per Scratch project (29). Therefore, it seems that App Inventor projects, in general, seem to be more complex than programs created with Scratch.

What I find more interesting is to do with conditionals and loops - App Inventor projects have far fewer of both these constructs than Scratch projects. The paper attempts to explain this in terms of App Inventor's emphasis on event handling, pointing out that  in App Inventor projects some conditional behaviors are expressed implicitly through event blocks (e.g., when a button is clicked, do something). Also due to the event-based model of App Inventor, many iterative processes that are expressed through loops in Scratch are represented using event blocks in App Inventor. 

Their analysis leads the researchers to state:

Adopting App Inventor, students are introduced to an event-based processing model building mobile apps, which makes some concepts easier to learn than others, such as component properties and event parameters. On the other hand, other concepts like conditionals and/or loops are less required and, therefore, much less covered when teaching computing using App Inventor.

Event handling is suited to mobile apps, perhaps, and it is the core of almost all user interfaces - but, is it good for teaching computer science?

mitappinv

 

More Information

A Large-scale Analysis of App Inventor Projects

by Nathalia da Cruz Alves, Christiane Gresse von Wangenheim and Jean Carlo Rossa Hauck, Federal University of Santa Catarina, Brazil.

Related Articles

Machine Learning With App Inventor

Getting started with MIT App Inventor 2 

Thunkable Forks MIT App Inventor 

App Inventor Returns to MIT

App Inventor Version 2 - Easy Android Apps 

 

To be informed about new articles on I Programmer, sign up for our weekly newsletter, subscribe to the RSS feed and follow us on Twitter, Facebook or Linkedin.

Banner


Wasmer 5 Adds iOS Support
12/11/2024

The Wasmer team has released Wasmer 5.0. The WebAssembly runtime adds experimental support for more back ends including V8, Wasmi and WAMR. It also now has iOS support, and upgraded compilers includin [ ... ]



GitHub Universe AI Announcements - Copilot And Spark
30/10/2024

GitHub has announced several improvements for developers at Universe, its annual conference. Developers will get multi-model Copilot and GitHub Spark, an AI-native tool for building applications in na [ ... ]


More News

Last Updated ( Wednesday, 01 July 2020 )