Skip to main content
MIT App Inventor - Related Research
- M. Tissenbaum, J. Sheldon, E. W. Patton, A. Gupta, E. Zhang, and D. Gopinath, “Off the screen, and into the world of everyday objects: Computational thinking for youth with the Internet of Things,” presented at CTE 2017, Hong Kong, Hong Kong, Jul, 2017.
Abstract: This paper discusses the opportunities presented by the growth of the Internet of Things (IoT) to provide youth opportunities to develop their computational thinking and digital empowerment. This paper argues that to support youth in developing these literacies, we need to develop platforms that reduce the barriers of entry while still allowing them to explore and develop their computational identities. To this end, this paper introduces an extension to App Inventor by MIT that enables students to quickly design, develop, and implement IoT applications. We outline one IoT activity for youth and future directions for both curricular and technical development.
Peer Reviewed Paper
- D. Bau, J. Gray, C. Kelleher, J. Sheldon, and F. Turbak, “Learnable programming: Blocks and beyond,” Comm. of the ACM, vol. 60, no. 6, pp. 72-80, Jun, 2017.
Abstract: A global push to broaden participation in computer science has led to an explosion of interest in blocks-based programming. Visual blocks are used by numerous programming tools. Millions of students receive their first exposure to programming via these tools in courses and activities like Code.org’s Hour of Code. Blocks allow beginners to compose programs without struggling with the frustrations of syntax (Figure 1). There is increasing interest in developing and studying blocks languages. At VL/HCC 2015, a small workshop session called Blocks and Beyond ballooned to a large event, with 51 submissions and 36 presenters. Researchers shared work in new blocks languages, interface innovations, domain-specific applications of blocks, and ways to make blocks languages more effective and accessible for diverse coders. This article explores how blocks impact the learnability of programming. We begin by reviewing studies on the effectiveness of blocks languages. Then we discuss the key features of blocks languages and how they relate to learning. Finally, we look at applications of blocks in new domains and discuss tools for creating your own blocks language.
Peer Reviewed Paper
- L. L. Ruan, E. W. Patton, and M. Tissenbaum, “Evaluations of programming complexity in App Inventor,” presented at CTE 2017, Hong Kong, Hong Kong, 2017.
Abstract: To understand computational thinking in App Inventor, it is important to be able to effectively evaluate computational complexity in block-based programming languages. In the past, there have been a handful of complexity measures proposed for text-based languages (Weyuker, 1988). In this paper, we will attempt to implement 2 such measures, Halstead’s Programming Effort and statement count, in App Inventor on a dataset of projects from 50 random users. The goal is to determine whether or not text programming standards for complexity can be generalized to block programming languages. This paper shows that the 2 complexity measures we implemented are not adequate measures for complexity in App Inventor. This result indicates a need for different measures of complexity that more accurately portray block programming proficiency. We hope this study will be a gateway into a better understanding of the intricacies of App Inventor’s block programming language and its unique contributions to the development of computational thinking.
Peer Reviewed Paper
- N. Lao, “Developing cloud and shared data capabilities to support primary school students in creating mobile applications that affect their communities,” M.Eng thesis, Elect. Eng. Comput. Sci., Massachusetts Inst. of Technol., Cambridge, 2017.
Abstract: As technology and society become further intertwined, it is imperative that we democratize the creation of technology and educate people to be capable of harnessing the full power of computational thinking. As such, developing meaningful tools and curricula for incremental learning of computational thinking concepts starting in primary education is an important endeavor . My work focuses on making Cloud technology, one of the most powerful new computer science concepts, understandable and usable by anyone without the need for extensive computer science training. I used MIT App Inventor, a blocks-based mobile application development tool for teaching computational thinking to young students, as the platform for my research. I developed CloudDB, a set of coding blocks for MIT App Inventor that allows users to store, retrieve, and share various types of data in tag-value pairs on a Redis server for their mobile applications. I created middle and high school level curricula based on CloudDB along with assessment tools to evaluate my materials and the extent to which young students can understand and utilize the concepts around shared data. Finally, I ran one of those workshops with middle school students in the MIT area. My findings indicate that teaching shared data as a core computational thinking concept is entirely feasible to students as young as middle school level. Students are capable of inferring and extrapolating other use cases and potential problems with the Cloud, such as storage limits and security concerns. When given the context of solving a problem in their lives, they are very driven and able to design and create complex independent mobile application projects using MIT App Inventor and CloudDB.
- X. Deng, “Group collaboration with App Inventor,” term paper, Elect. Eng. Comput. Sci., Massachusetts Inst. of Technol., Cambridge, 2017.
Abstract: Collaboration becomes increasingly important in programming as projects become more complex. With traditional text-based programming languages, programmers typically use a source code management system to manage the code, merge code from multiple authors, and optionally lock files for conflict-free editing. There is a limited corpus of work around collaborative editing of code in visual programming languages such as block-based programming. I present a collaborative programming environment to MIT App Inventor, a web-based visual platform for building Android applications with blocks, which enables many programmers to collaborate in real time on the same MIT App Inventor project. I design and implement three collaboration models to evaluate the efficacy of these different collaborative models for users of App Inventor so as to understand which approach best enables collaboration. Our results demonstrate that real-time programming decreases the completion time of a task, improves the interaction between users, and increases users’ likeability towards collaborative programming. I anticipate that this new collaborative programming environment will change the way users use MIT App Inventor, and more curriculum based on the collaborative tools will be designed.
- J. Im, “User-defined blocks for MIT App Inventor,” term paper, Elect. Eng. Comput. Sci., Massachusetts Inst. of Technol., Cambridge, 2017.
Abstract: MIT App Inventor is an open source web platform that lets users build their own Android Apps quickly by using blocks-based programming. MIT App Inventor currently has diverse types of components, from general blocks to specific task oriented components like sensors. However, it does not provide every type of block that an user needs. For example, currently there are no components for intricate graph visualization in App Inventor. However, there is a limitation to keep adding new categories of blocks, not only because the complexity of maintaining the system will increase, but also because an individual user’s need is necessarily not a general need for others. In order to keep lowering the barriers of creating special goal oriented apps and to foster the learning of computational thinking, while also preventing the situation of adding every possible block to the system, a new feature called “user-defined blocks (customizable blocks)” has been implemented during 2017 Spring semester.
Student Term Paper
- L. Tang, “Creating customized user interfaces for App Inventor,” term paper, Elect. Eng. Comput. Sci., Massachusetts Inst. of Technol., Cambridge, 2017.
Abstract: Many of App Inventor’s users pick up App Inventor outside of a formal learning environment by going through online walkthroughs and tutorials. By using a block-based programming language, App Inventor democratizes technology by lowering the bar of entry for people around the world. For my thesis, I plan to create and test a feature that allows for the formation of customized component and block sets in App Inventor.
Student Term Paper
- G. Campbell, “Extending cloud data store component for MIT App Inventor,” term paper, Elect. Eng. Comput. Sci., Massachusetts Inst. of Technol., Cambridge, 2017.
Abstract: MIT App Inventor required a new cloud storage component to provide cloud sharing capabilities for Android applications built with App Inventor. I helped design and implement such a component, named CloudDB, which allows App Inventor users to store application data and media files on an MIT hosted Redis server. The component initially provided key-value storage and basic list operations. I improved it by adding advanced list operations, image, sound and other media file storage, as well as ensuring that data stored on the server would be transmitted securely to and from user devices via SSL.
Student Term Paper
- E. Giurleo, “Keyboard interactions in block-based coding environments,” term paper, Elect. Eng. Comput. Sci., Massachusetts Inst. of Technol., Cambridge, 2017.
Abstract: App Inventor is a website that allows users to make their own Android apps using a block-based coding language. While App Inventor has almost 3 million users, it contains few accessibility features. In particular, there is no way for a user to navigate the block workspace on the App Inventor site without using their mouse; this poses a significant problem for users who use screen readers or who cannot operate a mouse. I have designed and implemented a set of keyboard shortcuts that allow users to operate the App Inventor website in an intuitive way. I have also conducted a usability study to determine the effectiveness of this keyboard-accessible interface. Based on the results of the study, I conclude that much of the interface is intuitive to users with experience using the keyboard in other domains, but that there are changes that can be made to make the design even more intuitive.
Student Term Paper
- W. Li, “Helping the helpers: A Toolkit for mobile humanitarian assistance apps,” M.Eng. thesis, Elect. Eng. Comput. Sci., Massachusetts Inst. of Technol., Cambridge, 2016.
Abstract: My research investigates the following question: How can relief workers be empowered to create useful mobile apps to support the work of first responder teams? Mobile devices are reshaping the disaster management domain and they make fast and targeted support possible. However there is the major obstacle of relief workers and volunteers often lacking the technical abilities to build and deploy the right mobile app in response to a particular disaster. In addition, data interoperability is often missing in many of the applications since they were developed without any prior agreement on the data schema. Linked Data technology solves the data interoperability problem by defining a method of publishing structured data and these structured data can be interlinked and become more useful. In order to explore and provide a solution to the gap between the knowledge of the relief workers and volunteers and the technical abilities needed to create an app, I conducted a participatory design workshop with the people at the International Committee of Red Cross and developed two mobile applications with one of the project managers there. In addition, I have created a DoItYourself (DIY) toolkit that includes: (1) a Mobile Linked Data App Kit: a streamlined process for creating mobile apps and (2) an appbuilding methodology: a set of principles for relief workers to follow while creating apps using the toolkit. The goal of this toolkit is to enable aid workers to create vital and necessary mobile apps and to empower the humanitarian community. User testing of the framework with first responders has shown that the idea of “using, modifying, and creating” an app is greatly favored by our participants, that mobile Linked Data applications can aid humanitarian organizations by increasing their impact and effectiveness, and that humanitarian workers can successfully develop and deploy mobile applications by using this toolkit.
- A. Colter, “Evaluating and improving the usability of MIT App Inventor,” M.Eng. thesis, Elect. Eng. Comput. Sci., Massachusetts Inst. of Technol., Cambridge, 2016.
Abstract: MIT App Inventor is a blocks-based programming language for Android apps designed to teach programming skills to middle school and high school students. We aim to make app development accessible for all. Anyone learning to program must learn computational thinking methods; App Inventor users must also learn how to use the service. Our target users, teenagers and people without programming experience, often conflate the two learning processes: they think App Inventor is hard because learning to program is hard. As such, App Inventor needs a user interface that matches the conventions of commercially- available software our users already know how to use. Such an interface will allow them to focus on learning how to program and to transfer their knowledge and skills to other programming languages and environments. I designed several tasks and conducted a usability study on the existing, publicly- available App Inventor service. Users encountered 75 unique issues and a total of 157 issues. This is an average of 5 unique issues and 10.5 total issues per user. I made changes to the App Inventor source code that addressed 34 of the most common issues encountered. My intent was to make App Inventor both more usable to novice programmers and more similar to the programming environments that experienced programmers use. Finally, I conducted a usability study with the same tasks on the modified version of App Inventor. Users encountered 65 unique issues, including 19 issues encountered in the first study, and 107 total issues. Based on user comments and behavior, I conclude that my solutions resolved 21 of the original issues, partially mitigated 9 issues, and did not improve the usability of 4 issues.
- B. Xie, “Progression of computational thinking skills demonstrated by App Inventor users,” M.Eng thesis, Elect. Eng. Comput. Sci., Massachusetts Inst. of Technol., Cambridge, 2016.
Abstract: I analyze skill progression in MIT App Inventor, an open, online learning environment with over 4.7 million users and 14.9 million projects/apps created. My objective is to understand how people learn computational thinking concepts while creating mobile applications with App Inventor. In particular, I am interested in the relationship between the development of sophistication in using App Inventor functionality and the development of sophistication in using computational thinking concepts as learners create more apps. I take steps towards this objective by modeling the demonstrated sophistication of a user along two dimensions: breadth and depth of capability. Given a sample of 10,571 random users who have each created at least 20 projects, I analyze the relationship between demonstrating domain-specific skills by using App Inventor functionality and generalizable skills by using computational thinking concepts.
I cluster similar users and compare differences in using computational concepts. My findings indicate a common pattern of expanding breadth of capability by using new skills over the first 10 projects, then developing depth of capability by using previously introduced skills to build more sophisticated apps. From analyzing the clustered users, I order computational concepts by perceived complexity. This concept complexity measure is relative to how users interact with components. I also identify differences in learning computational concepts using App Inventor when compared to learning with a text-based programming language such as Java. In particular, statements (produce action) and expressions (produce value) are separate blocks because they have different connections with other blocks in App Inventor’s visual programming language. This may result in different perceptions of computational concepts when compared to perceptions from using a text-based programming language, as statements are used more frequently in App Inventor than expressions.
This work has implications to enable future computer science curriculum to better leverage App Inventor’s blocks-based programming language and events-based model to offer more personalized guidance and learning resources to those who learn App Inventor without an instructor.
- S. Tsai, “Understanding App Inventor forums,” M.Eng. thesis, Elect. Eng. Comput. Sci., Massachusetts Inst. of Technol., Cambridge, 2016.
Abstract: MIT App Inventor is a visual blocks language that allows users to create mobile applications for Android. App Inventor users have the option of posting in a public support forum to discuss anything from specific programming issues to education is- sues. In order to leverage the information on the forums to improve App Inventor, we must first understand what is being discussed. In this thesis, we used unsupervised machine learning methods to automate discovery of discussion topics. First, we transformed posts into feature vectors using a bag-of-words model. Next, we clustered posts using k-means clustering and evaluated our results both quantitatively, by calculating the average silhouette of the posts, and qualitatively, by simply looking at the clusters of posts. Finally, we used LDA topic modeling to determine the topics being discussed and compared the extracted topic words to a manual evaluation of each cluster. Using this technique, we were able to uncover common problems with App Inventor that users encountered. We hope to use this information to improve users’ experience with App Inventor.
- K. Asmus, “A system of applications for the integration of BLE beacons in museums,” M.Eng. thesis, Elect. Eng. Comput. Sci., Massachusetts Inst. of Technol., Cambridge, 2016.
Abstract: There is great potential for BLE beacon technology to be incorporated into museum exhibits to provide more enriching content to visitors and gather feedback to improve the museum overall. I developed a system of three applications to accomplish these goals: one for museum staff to easily deploy and update beacons, another for visitors to engage with the supplemental material transmitted by beacons at various exhibits, and a third for museum staff to understand visitors’ interactions and feedback provided by the beacons.
I implemented two versions of the system according to two different beacon protocols: Eddystone- UID, which broadcasts to a dedicated mobile app; and Eddystone-URL, which broadcasts to mobile browsers via the Physical Web.
Each system was tested in a real-world context through experiments hosted by the MIT Museum. I analyzed the success and potential of such systems based on observations, participant responses, and data gathered via the system during the experiments. The reliability of BLE connections remains an issue, and beacon content only appealed to a small subset of visitors; however, those who interacted with the system valued the experience highly and the MIT Museum expressed interest in providing a richer experience for these visitors.
- B. Xie, I. Shabir, and H. Abelson, “Measuring the usability and capability of App Inventor to create mobile applications,” in PROMOTO 2015, Pittsburgh, PA, 2015, p. 108.
Abstract: MIT App Inventor is a web service that enables users with little to no previous programming experience to create mobile applications using a visual blocks language. We analyze a sample of 5,228 random projects from the corpus of 9.7 million and group projects by functionality. We then use the number of unique blocks in projects as a metric to better understand the usability and realized capability of using App Inventor to implement specific functionalities. We introduce the notion of a usability score and our results indicate that introductory tutorials heavily influence the usability of App Inventor to implement particular functionalities. Our findings suggest that the sequential nature of App Inventor's learning resources results in users realizing only a portion of App Inventor's capabilities and propose improvements to these learning resources that are transferable to other programming environments and tools.
Peer Reviewed Paper
- R. Morelli, C. Uche, P. Lake, & L. Baldwin, “Analyzing year one of a CS principles project,” in 46th ACM Technical Symposium on Computer Science Education, Kansas City, MO, 2015, pp. 368-373.
Abstract: The Mobile Computer Science Principles (Mobile CSP) project is an NSF-funded CS 10K project. Its goal is to train a new cohort of high school computer science teachers to teach an Advanced Placement (AP) level course based on the emerging Computer Science Principles (CSP) framework. Mobile CSP uses App Inventor, a graphical programming language for Android devices, to engage students in app building as a means to get them interested in computer science. This paper reports on the first year of this effort. In addition to describing the project’s Professional Development (PD) course, a 6-week, full-time summer course for teachers, and the Mobile CSP curriculum, the paper provides a preliminary analysis of demographic and performance data obtained from high school students who took the course during the 2013-2014 academic year.
Peer Reviewed Paper
- F. Turbak, M. Sherman, F. Martin, D. Wolber, and S. Crawford Pokress, “Events-first programming in App Inventor,”Journal of Computing Sciences in Colleges, vol. 29, no. 6, Jun, 2014, pp 81-89.
Abstract: Events are a central concept in computer science. They are becoming more important with the prevalence of mobile and web platforms that use event-based programming. Yet, events are typically taught late in the CS curriculum -- e.g., in a web programming or operating systems course. We have introduced events to CS0 students from day one using MIT App Inventor, a blocks-based programming environment that enables students to create apps for Android devices. This paper presents the system's event-based model, along with typical coding problems and best-practice approaches for solving them. We advocate for increasing early emphasis on events in the CS curriculum.
Peer Reviewed Paper
- D. Y. Miao, “PrivacyInformer: An automated privacy description generator for the MIT App Inventor,” M.Eng. thesis, Elect. Eng. Comput. Sci., Massachusetts Inst. of Technol., Cambridge, 2014.
Abstract: With the Advent of “smart” mobile phones and ubiquitous mobile applications, the pace at which people generate, access, and acquire data has accelerated significantly. In this thesis, we first examine how privacy concerns in the mobile apps market compromise the well-being of both app consumers and developers. Then, we study the problem with the lack of usable privacy documents in mobile apps. Subsequently, we propose a technical solution named PrivacyInformer, as an extension to the MIT App Inventor, a do-it-yourself mobile app building platform. This platform has a vast international user base, as well as a growing impact on the democratizing of mobile app building. We show that by analyzing the source code of mobile apps, PrivacyInformer can produce simple and useful privacy descriptions in both human-readable and machine-readable format. Finally, we conduct an exploratory user study to evaluate the effectiveness of PrivacyInformer from the app developer's perspective, as well as discuss the policy impact of such a tool in the mobile app development community.
- D. Wolber, H. Abelson, and M. Friedman, “Democratizing computing with App Inventor,” Mobile Computing and Communications Review, vol. 18, no. 4, pp 53-58, Oct. 2014.
Abstract: MIT App Inventor is a visual blocks language that enables beginners and non-programmers to create apps for their phones and tablets. It has empowered thousands to create software with real-world usefulness, and see themselves as creators rather than only consumers in the mobile computing environment. Educationally, it offers a ”gateway drug” that can help broaden and diversify participation in computing education.
Peer Reviewed Paper
- J. Schiller, F. Turbak, M. Friedman, H. Abelson, J. Okerlund, J. Dominguez, and A. McKinney, “Live programming of mobile apps in App Inventor,” in Programming for Mobile and Touch (PRoMoTo), Portland, OR, 2014, pp. 1-8.
Abstract: MIT App Inventor is a programming environment that lowers the barriers to creating mobile apps for Android devices, especially for people with little or no programming experience. App Inventor apps for a mobile device are constructed by arranging components with a WYSIWYG editor in a computer web browser, where the development computer is connected to the device by WiFi or USB. The behavior of the components is specified using a blocks-based graphical programming language. A key feature in making App Inventor accessible to beginning programmers is live programming: Developers interact directly with the state of the evolving program as it is being constructed, and changes made in the web browser are realized instantaneously in the running app on the device. This paper describes the live programming features of App Inventor and explains how they are implemented.
Peer Reviewed Paper
- F. Shih and J. Boortz, “Understanding people’s preferences for disclosing contextual information to smartphone apps,” in International Conference on Human Aspects of Information Security, Privacy, and Trust (HAS 2013), Las Vegas, NV, 2014, pp 186-196.
Abstract: Smartphones have become the primary and most intimate computing devices that people rely on for their daily tasks. Sensor-based and network technologies have turned smartphones into a “context-aware” information hub and a vehicle for information exchange. These information provide apps and third party with a wealth of sensitive information to mine and profile user behavior. However, the Orwellian implications created by context-awareness technology have caused uneasiness to people when using smartphone applications and reluctance of using them . To mitigate people’s privacy concerns, previous research suggests giving controls to people on how their information should be collected, accessed and shared. However, deciding who (people or the application) gets to access to what (types of information) could be an unattainable task. In order to develop appropriate applications and privacy policies it is important to understand under what circumstances people are willing to disclose information.
Peer Reviewed Paper
- F. Zhang, F. Shih and D. Weitzner, “No surprises: Measuring intrusiveness of smartphone applications by detecting objective context deviations,”in ACM CCS Workshop on Privacy in the Electronic Society (WPES 2013), Berlin, Germany, 2013, pp 291-296.
Abstract: We address the challenge of improving transparency for smartphone applications by creating tools that assesses privacy risk. Specifically, we invented a framework for qualitatively assessing and quantitatively measuring the intrusiveness of smartphone applications based on their data access behaviors. Our framework has two essential components. The first component is the Privacy Fingerprint, a novel visualization that is concise yet holistic. It captures each app's unique access patterns to sensitive personal data, including which types of behaviors and under which privacy-relevant usage contexts the data are collected. The second component is a new Intrusiveness Score that numerically measures out-of-context data collection, based on real data accesses gathered from empirical testing on 33 popular Android apps across 4 app categories. Specific attention is paid to the proportion of data accesses that occurs while the user is idle, raising the perceived level of intrusiveness and exposing the profiling potential of an app. Together, these components will help smartphone users decide whether to install an app because they will be able to easily and accurately assess the relative intrusiveness of apps. Our study also demonstrates that the Intrusiveness Score is helpful to compare apps that exhibit similar types of data accesses.
Peer Reviewed Paper
- A.K. Saigal, “Information accountability for mobile financial applications,” M.Eng. thesis, Elect. Eng. Comput. Sci., Massachusetts Inst. of Technol., Cambridge, 2010.
Abstract: In this thesis, I designed and built three sets of applications for three different demographics - young people, elderly people, and people in the developing world - to enable them to be involved in their personal banking. Members of these demographics are not actively involved in their personal banking when compared to others. We believe that part of the discrepancy lies in the lack of convenience and accountability. Thus, we have developed applications, whereby the issues of convenience and accountability are addressed. The applications are built around mobile devices, which will likely make them accessible since members of these demographics are often on mobile devices. The applications are also built around rules that can be set by a responsible party, so that the users know exactly what can and cannot be done with their money (such as a father restricting the amount of money his son can withdraw, or what the money can be used for). Finally, we keep a history of every transaction, who initiated it, and an explanation given by the initiator so we can understand why it occurred. Using our applications, built around convenience and accountability, will allow banks to reach youth, elderly people, and people in the developing world in ways that they have not been able to previously.
- F. Shih, O. Seneviratne, D. Miao, I. Liccardi, L. Kagal, E. W. Patton, P. Meier, and C. Castillo, “Democratizing mobile app development for disaster management,” in AIIP Workshop on Artificial Intelligence Problems and Approaches for Intelligent Environments and Workshop on Semantic Cities, Beijing, China, 2013, pp 39-42.
Abstract: Smartphones are being used for a wide range of activities including messaging, social networking, calendar and contact management as well as loca- tion and context-aware applications. The ubiquity of handheld computing technology has been found to be especially useful in disaster management and relief operations. Our focus is to enable developers to quickly deploy applications that take advantage of key sources that are fundamental for today’s net- worked citizens, including Twitter feeds, Facebook posts, current news releases, and government data. These applications will also have the capability of empowering citizens involved in crisis situations to contribute via crowdsourcing, and to communicate up-to-date information to others. We will leverage several technologies to develop this application framework, namely (i) Linked Data principles for structured data, (ii) existing data sources and ontologies for disaster management, and (iii) App Inventor, which is a mobile application development framework for non-programmers. In this paper, we describe our motivating use cases, our architecture, and our prototype implementation.
Peer Reviewed Paper
- R. Morelli, D. Wolber, S. Pokress, F. Turbak, and F. Martin, “Teaching the CS principles curriculum with App Inventor” (abstract only),” in Special Interest Group on Computer Science Education 44th Association for Computing Machinery Technical Symposium on Computer science education, Denver, CO, 2013, pp. 762-762.
Abstract: The CS Principles Project is an NSF-funded initiative to develop a breadth-first advanced placement (AP) course in computer science. App Inventor is a visual, blocks-based programming language that makes sophisticated computing concepts accessible to a broad range of students. This hands-on workshop, aimed at high school and undergraduate teachers, will introduce participants to lessons, homework exercises, project assignments, and assessment materials (quizzes, grading rubrics) that can be used in an App Inventor-based CS0 course. Participants will develop simple Android apps, using devices provided by the workshop, and will use them in the context of lessons and assignments that fit within the CS Principles framework.
Peer Reviewed Paper
- MS. Crawford Pokress and J. J. Dominguez Veiga, “MIT App Inventor: Enabling personal mobile computing,” presented at Programming for Mobile and Touch (PRoMoTo), Indianapolis, IN, 2013.
Abstract: MIT App Inventor is a drag-and-drop visual programming tool for designing and building fully functional mobile apps for Android. App Inventor promotes a new era of personal mobile computing in which people are empowered to design, create, and use personally meaningful mobile technology solutions for their daily lives, in endlessly unique situations. App Inventor's intuitive programming metaphor and incremental development capabilities allow the developer to focus on the logic for programming an app rather than the syntax of the coding language, fostering digital literacy for all. Since it was moved from Google to MIT, a number of improvements have been added, and research projects are underway.
Peer Reviewed Paper
- F. Shih and W. Li, “Unlocking smartphone data for educational use in teaching and learning environment,” presented at the Smart University Workshop in Eighth International and Interdisciplinary Conf. on Modeling and Using Context, Annecy, France, 2013.
Abstract: We address the challenges of applying smartphone data to improve the experiences of teaching and learning in the university environment. Specifically, we created a framework to collect, monitor and analyze student behavioral data and increase social interactions for educational uses. The framework has three essential components. The first component is App Inventor, a web-based platform with drag-and-drop tools for novices to create mobile apps that collect personal and environmental data. The second component is Reactive Data Store, an intuitive mechanism that connects multiple data sources and automates the tasks for analyzing personal data. The third component is a push notification mechanism that delivers personalized or group messages as the results of the real-time analysis and triggers more actions accordingly. Together, these components will transform people's campus experiences by unleashing the values of smartphone data. Lastly, we introduced the framework to a group of teachers in higher education with a focus group discussion to identify the plausible use cases in terms of performance assessments, pedagogy design and collaborative learning.
Peer Reviewed Paper
- A. Bhagi, “Android game development with App Inventor,” M.Eng. thesis, Elect. Eng. Comput. Sci., Massachusetts Inst. of Technol., Cambridge, 2012.
Abstract: Ever since App Inventor found a new home at MIT's Center for Mobile Learning in early 2012 (it was previously housed at Google), it has been receiving significant attention from educational communities that hope to use the tool to facilitate technology learning in the classroom and beyond. Much of App Inventor's current user base is teachers in high-schools and colleges, and as the tool continues to attract more users, it is likely that many of these users will be teachers of students in grades 3 thru 12 (i.e. students who are old enough to know how to use computers and design/develop apps, yet not experienced enough to get their hands dirty with the Android SDK). Students of this age group are quite fond of gaming, and so we anticipate that there will be a strong demand for developing graphically appealing, interactive single-player and multiplayer games using App Inventor in the coming years. It is therefore important that the App Inventor team at MIT prepare for the imminent growth of the App Inventor game development community. Accordingly, this thesis looks at where App Inventor currently stands with respect to game development and how its game development capabilities can be improved and extended.
- F. Turbak, S. Sandu, O. Kotsopoulos, E. Erdman, E. Davis and K. Chadha, “Blocks languages for creating tangible artifacts,” in Institute of Electrical and Electronics Engineers Symposium on Visual Languages and Human-Centric Computing, Innsbruck, Tyrol, Austria, 2012, pp 137-144.
Abstract: Logo turtles and Henderson’s picture language have long been used to teach computational thinking by inspiring learners to construct programs that create complex geometric designs. We have developed visual blocks-based versions of these languages, TurtleBlocks and PictureBlocks, that allow users to transform their designs into tangible artifacts produced by laser cutters and vinyl cutters. Our languages embody two novel features. First, they use constructive area geometry to convert the geometric designs generated by our programs into formats suitable for laser and vinyl cutters. Second, they leverage static typing and polymorphism to provide a new way to reference the names of procedure parameters and local variables in a blocks language.
Peer Reviewed Paper
- A.K. Saigal and A. Saigal, “Saathimobile and the rapid deployment of prototypes to build applications for social enterprise in the developing world,” in 1st International Conference on Wireless Technologies for Humanitarian Relief, Amritapuri, Kollam, Keralla, India, 2011, pp. 351-356.
Abstract:This paper describes a sales, marketing, and inventory management application, SaathiMobile, for the distribution of low-cost sanitary napkins, made out of waste banana fiber, to women in rural areas. It is being pilot tested in Hubli, Karnataka. This product has the potential to have great impact on the health and economic welfare of women in these areas. The product was developed using App Inventor, a rapid prototype deployment environment for Android.
Peer Reviewed Paper
- B. Magnuson, "Building blocks for mobile games: A multiplayer framework for App Inventor for Android," M.Eng. thesis, Elect. Eng. Comput. Sci., Massachusetts Inst. of Technol., Cambridge, 2010.
Abstract: Building Blocks for Mobile Games is a client-server multiplayer game building framework for the App Inventor for Android platform. The framework includes an App Inventor component and a game server running on Google App Engine. The client side component packages the complexity of web service calls, data transfer and game state management into a set of graphical code blocks that allow users without programming experience to create Android applications that can access the game server API. The default game server provides basic functionality that can be used to create simple multiplayer games and message passing applications, such as a multi user bulletin board. By using custom server modules, the game server can be enhanced to provide server commands that implement a wide range of operations. Custom modules were used with the system to develop a multi- player card game, a version of Bulls and Cows with a shared scoreboard, an application that accesses Amazon’s book search API and a pair of applications for creating, managing and voting in polls. Using App Inventor and the game framework, each of these applications can be created with only a basic understanding of mobile phones and client-server principles.
Contains a text string.
This string can contain any characters (letters, numbers, or other special characters). On App Inventor it will be considered a Text object.
Appends all of the inputs to make a single string. If no inputs, returns an empty string.
Returns the number of characters including spaces in the string. This is the length of the given text string.
Returns whether or not the string contains any characters (including spaces). When the string length is 0, returns true otherwise it returns false.
compare texts < > =
Returns whether or not the first string is lexicographically <, >, or = the second string depending on which dropdown is selected.
A string a considered lexicographically greater than another if it is alphabetically greater than the other string. Essentially, it would come after it in the dictionary. All uppercase letters are considered smaller or to occur before lowercase letters. cat would be > Cat.
Removes any spaces leading or trailing the input string and returns the result.
Returns a copy of its text string argument converted to all upper case
Returns a copy of its text string argument converted to all lower case
Returns the character position where the first character of piece first appears in text, or 0 if not present. For example, the location of ana in havana banana is 4.
Returns true if piece appears in text; otherwise, returns false.
split at first
Divides the given text into two pieces using the location of the first occurrence of at as the dividing point, and returns a two-item list consisting of the piece before the dividing point and the piece after the dividing point. Splitting apple,banana,cherry,dogfood with a comma as the splitting point returns a list of two items: the first is the text apple and the second is the text banana,cherry,dogfood. Notice that the comma after apple doesn't appear in the result, because that is the dividing point.
split at first of any
Divides the given text into a two-item list, using the first location of any item in the list at as the dividing point.
Splitting i love apples bananas apples grapes by the list [ba,ap] would result in a list of two items the first being i love and the second ples bananas apples grapes.
Divides text into pieces using at as the dividing points and produces a list of the results. Splitting one,two,three,four at , (comma) returns the list one two three four. Splitting one-potato,two-potato,three-potato,four at -potato, returns the list one two three four.
split at any
Divides the given text into a list, using any of the items in at as the dividing point, and returns a list of the results.
Splitting appleberry,banana,cherry,dogfood with at as the two-element list whose first item is a comma and whose second item is rry returns a list of four items: [applebe, banana, che, dogfood,]
split at spaces
Divides the given text at any occurrence of a space, producing a list of the pieces.
Extracts part of the text starting at start position and continuing for length characters.
Returns a new text string obtained by replacing all occurrences of the substring with the replacement.
Replace all with She loves eating. She loves writing. She loves coding as the text, She as the segment, and Hannah as the replacement would result in Hannah loves eating. Hannah loves writing. Hannah loves coding.