Teaching a course on App Inventor? This site provides a framework for doing so, based on the materials I've created and collected teaching App Inventor at the University of San Francisco. I've taught introductory CS for non-majors (CS0), but the materials could be adapted for a CS1 course for majors as well. You can pick and choose from the seven available modules, or just give a two or three week intro to App Inventor with the introductory module.
The course-in-a-box includes:
Each teaching module assigns readings from the O'Reilly textbook App Inventor: Create your own Android Apps,
There are some dependencies between modules. For instance, the introduction should be provided before the other modules and its a good idea to give your students some experience with module 2 (Games) and/or 3 (Apps using technology) before moving onto modules 4 and 5 which require abstract thinking and programming. Module 6 on procedures could be given earlier, but I prefer to give it once students have written a number of event-handling apps without thinking of sub-procedures. Module 7 includes fairly complex parsing of web results so should definitely be presented after the other modules.
Module 1: Introduction to Event-Driven Apps
The introduction acclimates students with the App Inventor environment, leads them to building their first apps, and provide an introduction to event-handlers, calling functions, variables, and drawing canvases. The students learn that an app is something that responds to events such as the user clicking a button or an SMS text being received, and they're introduced to the architecture of an app including components, properties, behaviors, function calls, and parameters.
The students first create a course portfolio using Google Sites-- this is where they'll post all their work during the semester. They then build the canonical App Inventor app where a kitty that meows, along with a drawing program that lets you take a picture and draw on it. After building the tutorials, the students break into groups and discuss a set of post-tutorial questions. I walk around and eavesdrop, then after each question or two lead a class-wide discussion/lecture to answer the questions.
The students are also assign some reading about App Inventor so they can put the work they're doing in context-- App Inventor is truly revolutionary in how it democratizes programming, and its good for students to understand this. I also like to expose students to some cool mobile apps just to get them thinking-- augmented reality apps like wikitude and Google Goggles.
Like with all modules, a creative project is assigned. For this introductory module, its a soundboard-like app of the student's choice-- any app with multiple images and sounds that play when the images are clicked. This project is fun and fairly easy, and allows for a lot of creativity. The students also get working experience with finding images and sounds on the web, which can lead to great discussions about copyright and sites like Creative Commons.
Module 2: Games
The second module introduces students to animation, timer events, image sprites, incrementing a number (score), game-like events (e.g., CollidedWith) and conditional (if) blocks. The students first create MoleMash, a game in which a mole jumps randomly around the screen and the player gets points for touching it. After building the game using the tutorial, the students break into groups and discuss some questions concerning the game. I then assign some customizations or allow them to think of their own. The customizations are fun and range from simple ones like changing the mole to a picture of your brother or adding a background, to complex ones like making the mole go faster when the score reaches a certain point.
After MoleMash, we move to the development of more complex games. Ladybug Chase introduces multiple imageSprites and Orientation Sensor. The Shooter game introduces collision and edge events as well as abstract formulas, e.g., moving the bullet to the top of the shooter wherever that shooter might be.
Module 3: Texting, Location and Other Mobile Technology
In Module 3, students learn how to program some of the phone's advanced technology: responding to SMS texts, making use of location sensors, scanning barcodes, text-to-speech, and dealing with URLs. They also are introduced to persistence, e.g., storing a user's custom response to be sent to incoming texts. In terms of computer science concepts, this module doesn't add too much, but it is highly motivating and gives them more experience with building event-handling apps.
Module 4: Quizzes and Other Informational Apps
This module introduces students to list data and using an index to traverse a list. The quiz app is a fun one that can be customized by every students for practical use (study guides, fun quizzes about their favorite movies, etc). It is also more abstract than the previous apps-- dealing with a list variable and and index is conceptually challenging but obviously very important in learning how to program.
Module 5: Input Forms, User-Generated Data and Persistence
This module introduces students to dynamic user-generated data. Such apps present a significant challenge to the beginning programmer because of their abstract nature. The module can begin using one (or both) of two relatively simple apps with user-generated data-- a single user notetaker, or a xylophone apps that records musical notes and replays them.
Next, students can explore a Broadcast Hub app that allows people to join a group (on the hub phone), then allows them to broadcast messages to the entire group. This app is of great interest to students and is often chosen as a basis for final projects. Students can also explore a dynamic quiz in which a teacher can add fresh quizzes.
Module 6: Software Engineering and Procedural Abstraction
This module discusses procedures and modular programming. It can fit in as early as module 2, depending on when you want to discuss procedures. This module also contains the chapter on engineering and debugging, which explains tracing programs and using some of the tools in the App Inventor environment like comments and watching variables.
The MoleMash app in module 2 introduces procedures. I only briefly discuss procedures there, and wait until later in the semester to discuss fully. My reasoning is that procedures and parameters add a layer of complexity which beginners are not developmentally ready for in the first few weeks of class.. They can build small apps without them, and the event-handling blocks (when-do) provide modularity already (code is split between event-handling "procedures").
Module 7: Apps that access web data
This module introduces APIs and accessing data from the web. The students have already dealt with URLs in Module 3 when they access Google Maps. Here we go over apps that call an API then process the data that is returned.
The first app is a Stock Market app that gets data from Yahoo Finance. It works as a first foray into APIs because the data returned is a simple list of comma-separated data. It uses the Web component in App Inventor.
The Amazon app uses the TinyWebDB component. TinyWebDB is really for web databases, but a programmer (or teacher) can build a tinywebdb web service that serves as an API. I built one for the Amazon Books API. Students can use it to access book data that is returned in list form. Advanced students can go further and access more complex APIs. Here, you'll need to teach them XML or JSON parsing. I don't have examples of those.
App Inventor "Course in a Box" by David Wolber is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.