This page discusses methods used in Professor Wolber's USF course, "Computing, Mobile Apps, and the Web", which is a core (gen-ed) course targeting mostly Business and Humanities students. Much of the curriculum of the course is available in the AI course-in-a-box.

Build-Conceptualize-Customize-Create

The course uses a "Build--Conceptualize--Customize--Create" model. Each module follows a do-first structure that has worked well in motivating students to learn.

Build

Introduce a topic but keep it brief. Within minutes, get the students building an interesting app, using a step-by-step tutorial.

Conceptualize

After the students complete the tutorial, break them into small groups to discuss conceptual questions about the app, then discuss as a class.

Customize

After the discussion session, assign customization tasks in which students add interesting features to the app they just built.

Create

After two or three iterations of the Build-Conceptualize-Customize process, give the students the freedom to choose an app of personal interest to them.

A Creative Classroom

Small-Group Discussion and Coding-On-Paper

A key part of the model involves breaking students into small groups for discussing concepts and coding-on-paper. When students code on the computer with App Inventor, they sometimes follow a tutorial or sample too mechanically, or get too much help from their peers. With coding-on-paper, they are led to slow down and contemplate their programming activities and the concepts behind them.

I find that students are far more apt to join in the larger class discussion when they 1) have just tried to solve a problem, and 2) already been talking to their partner or group. Even a few minutes of small group problem-solving tends to turbo-charge the class discussions and get everyone involved.

I generally encourage students who are near the same level to work together. Pairing top students with students who are struggling can work, but in my experience it usually doesn't.

Tracing Code

Besides conceptual and coding questions, I also have the students trace code. I have them draw "memory cells" for the pertinent properties and variables, then show how the data in the cells changes after each row of blocks. I'm never amazed when the "light-bulb" turns on during one of these sessions either in class or office hours.

Portfolio-Based Learning

One great thing about App Inventor is beginners can build useful and interesting apps. You can take advantage of this and significantly heighten motivation by having the students create portfolios of their work-- web sites that show off the apps they build in class. I strongly encourage students to show their apps to their friends and families, and think of their portfolios as something they can show prospective employers. I also encourage students, in their creative projects, to design and build apps to really be used by someone, and not just serve as a sample (this is easier said than done!)

I run app contests throughout the semester and regularly have students demonstrate their apps to the class. In the fall semester, students demonstrate their final projects at the USF CS Department's "CS Night", which is attended by students, faculty, alums, and others from the university and broader community. It is quite interesting that beginners, most of whom are not CS majors, are able to build interesting enough apps to demo alongside the Senior and Master project class students! Needless to say the alums are blown away and the upper-class students are jealous: "why didn't we get to do such cool stuff when we started?"

Student-Centered Course Website

My course website shows pictures of the students. When you click a picture, it brings you to the student's portfolios where you can see the apps they've built. The students submit their creative projects by posting them to their Google Site. The course site and students sites are built with Google Sites, which is convenient. I haven't done a great job providing templates, or requiring that students beautify their app pages, so the sites don't look great. Providing such templates and a process/tool to build this would be great both for the students and for promoting the class and the student work.

App Inventor Gallery as a Learning Studio

There is an App Inventor Gallery at Gallery.appinventor.mit.edu. The Gallery provides a method for students to share their apps with the broader community and learn from the apps of others. Students publish their apps there and download the apps of others for remixing. Think of the gallery as an open-source, on-line learning studio.

We are currently working with MIT to integrate a gallery into MIT App Inventor, an event that will make the gallery and sharing an integral part of the App Inventor experience. The integrated gallery is slated to be deployed by the end of July, 2014. In the meantime, I strongly encourage you to use the current gallery.

Quizzes and Code Camp

I give the students a 20-minute quiz just about every week of the semester. The students can attend code-camp and earn 1/2 the points they miss on each quiz. Code-camp is essentially office hours in which students "program" on the whiteboard with myself and other students watching/commenting. I assign them the problems they missed on the quiz or similar ones, or advanced ones if they seem ready for it. It works out great because whiteboard programming forces the students to think through a problem and really understand the code they write.

I have evolved to frequent quizzes over mid-terms because of the "builds-on-itself" nature of (App Inventor) programming. Like Math, if you get behind, it is very difficult to catch up, especially for beginners who are primarily from the Business and Humanities schools. The frequent quizzes and code-camps have really worked in terms of getting students in early to office hours instead of after a first midterm weeks into the semester.