|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.
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.
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.
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.
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?
|Last Updated ( Wednesday, 01 July 2020 )|