App Inventor is a Good Programming Language for Learners

In a recent blog post in the Communications of the ACM Mark Guzdial identified Five Principles for Programming Languages for Learners.    In a nutshell, the five principles suggest that a good programming language for learners should be low threshold, high ceiling,  a phrase coined by Seymour Papert, the creator of the Logo programming language, a language that Mark recognizes as a good model of the five principles.

How well does App Inventor, Mobile CSP ‘s programming language,  do in satisfying Mark’s principles?

1. Connect to what learner’s know.   Today’s high school and college students practically live on their smart phones.  The Mobile CSP course tries to meet them where they live and help them transition from users of mobile technology to creators of real mobile apps.  This is part of the low threshold. 
2. Keep cognitive load low.  As Mark acknowledges, blocks-based languages do “a terrific job of lowering cognitive load.”  App Inventor is an excellent example of this.  App Inventor’s components and blocks (its programming tools) are powerful abstractions that meet students at a level where they can immediately begin creating their own apps. Students are able to create a mobile app from scratch and run it on their mobile device on their first day of programming.   So here too App Inventor presents a low threshold for entry into a learning experience.
3. Be honest.  In App Inventor and in the Mobile CSP course, students are building real appsStudents are encouraged (well, required really) to create apps that benefit their friends, families and communities.  Currently App Inventor apps run only on Android devices, but we expect that to change soon.  The 2018 edition of the Mobile CSP course expects to support both Android and iPhone programming in App Inventor.  This is part of the high ceiling.
4. Be generative and productive.  A good language for learning to program must enable the learner to generate new ideas and be productive in exploring new domains.  In the Mobile CSP course we are trying to promote computer science for all.  We don’t expect all students to become professional software developers.  They should be able to apply their new knowledge and skills to explore their interests.  And this is what we see in the Mobile CSP course:  students’ final creative projects span a broad range of interests in art, psychology, science, math, education or other domains.  This too is part of the high ceiling  — there is no limit on what students can achieve.
5. Test don’t trust.   The idea here is to see what works.   Our experience has shown that students  and teachers respond positively to App Inventor.  For example, in an analysis of our pre- and post-surveys from the 2016 course, 85% of students reported that they enjoyed programming and getting their apps to work.
I think it’s pretty clear that App Inventor satisfies Mark’s criteria as a good programming language for learners.  But this is not surprising given its genesis.   App Inventor was created by Hal Abelson who worked with Seymour Papert in implementing and using Logo in education.  So, as described in this video, you can sort of see App Inventor as a Logo for the mobile age!