teaching machines

CS 491 Lecture 1: AppInventor


Welcome to CS 491, Mobile Software Development. In this class, we’re going write software for mobile devices, which have changed a bit.

We’ll be focusing on Android. Without getting political, let me explain why:

  • iOS development requires Apple hardware. We don’t have any. We don’t have room for any.
  • You must pay $99/year for the privilege of installing any iOS software you write on a device.
  • I’m scared of Apple’s manner.
  • You know Java already. Objective-C is different enough to sideline us.

I cut my teeth on Apple. I miss the Apple, Inc., of my youth.

What are we going to cover in the course?

  • app lifecycle
  • event-driven programming
  • database interaction
  • persisting data
  • preferences
  • web services
  • concurrency
  • mobile web
  • OpenGL
  • Bluetooth
  • integrating social media
  • sensors, maybe
  • telephony and SMS
  • what else?

This course is strange

This class is a big experiment and you are all a bunch of guinea pigs.

Lecture format

Let’s talk about some things:

  1. What do you like about lecture-based classes?
  2. What do you not like about lecture-based classes?

I have certain feelings about lecture-based classes:

  • They’re comfortable and predictable. I, the professor, have a good amount of control over what happens.
  • Students often don’t take care of their minds and bodies outside of lecture. They have not had enough sleep, and they rely on the professor to distill out the important points from the textbook they didn’t read.
  • “But the power of instruction is seldom of much efficacy, except in those happy dispositions where it is almost superfluous,” said Edward Gibbon.

You’ll notice we’re in a lab. This semester I’m going to try and “flip” our classroom. You can expect the following in each of our meetings:

  • You will do some preparation before each class, by watching a video or doing a reading. Half the class will do lesson A, half will do lesson B.
  • You will teach other. A student from group A will be randomly paired with a student from group B. That’ll be the first 15 minutes.
  • As pairs, you will work on hands-on, in-class exercises. These will take 30-40 minutes.
  • We’ll end the class with demos and discussion.
  • My in-class lecturing will be pretty short.
  • You will be uncomfortable. I will be too. This will take some adjustment.


A second strange thing about this class is the grading. My 330 class last spring said it would be okay to foist this new approach to grading on you.

The deal is laid out in the syllabus. My motivation for trying out something new comes from seeing the disgusting cross section of your homework that I get when a deadline cuts through.

Semester project

Instead of a final exam, we are going to have a group-based final project, which you will present during the final exam period. The details are still being hashed out, but it’s probable that your project will center around Sphero.

Sphero from Sphero on Vimeo.

The Spheros we use are on loan. Please don’t do this to them:

Sphero – The Shotgun Proof Robot from Sphero on Vimeo.

Your turn

Check out AppInventor. Your task is to take 30 minutes and produce something interesting with your randomly-assigned partner. A few of you may be selected to demo your project toward the end of class.


  • Complete TODO homework.
  • Watch your email for preclass responsibilities.


Mobile freed us nerds.
We emerged from our basements.
Caves are much darker.



Leave a Reply

Your email address will not be published. Required fields are marked *