Lectures‎ > ‎Week 1: May 30-June 5‎ > ‎

02-Hello Android & Key Concepts

Homework in preparation for this lecture

  1. Read HA: Chapter 1 and 2
    1. Do the hands-on coding exercise from Chapter 1... Don't cut and paste, really type it in so you can hit problems and have to solve them. If you want you can play around with the code and make some changes.
    2. Deliverable: Check-in source code to Github
    3. Deliverable: Screencast of you demoing and talking about the code
    4. Add links to both to your homework log

A Taxonomy of mobile applications

Depending on need, mobile apps can be structured quite differently

  • Untethered
    • Example: Angry Birds game
    • Server: never or rarely requires one
    • UI paradigm: must be a Local App
    • Difficulty: Can be the easiest, although there are super complex and rich games
  • Mashup like
    • Example: iPhone stock application
    • Server: uses other people's servers, using web services. See programmable web
    • Connection required, either constantly or to cache information
    • Login/Authentication. Privacy.
    • UI paradigm: local or web based UI
    • Difficulty: additional complexity because your app is talking to someone else's server
  • Pure web-ui
    • Example: GMail application on iPhone
    • Server: requires your own server, and connected all the time
    • UI paradigm: web based UI, by definition
    • Difficulty: You save a lot of trouble by not having to develop local app. Much less mobile platform dependence
  • Mobile front end to rich web app
    • Example: Facebook app on iPhone and Android
    • Server: your own server, providing it's own user experience, plus a connection to the mobile app
    • UI paradigm: web based or local app
    • Difficulty: One of the most difficult. You need to design two separate and complete user experiences
  • Rich app
    • Example: Instagram
    • Server: requires your own server, with intermittent or constant connection
    • UI paradigm: local App by definition. There is no user interface for the 'server' or 'service'
    • Difficulty: Significant challenge to provide all the functionality over limited device.
Quick discussion: (5 minutes) Break into subgroups by sponsored projects - 2-3 people each and discuss which kind type of mobile application you have. 

Hands-on Lab

  • Take out your computer; follow along if you can; but most important is to follow!
  • You should have Java, Eclipse, and the Anrdoid SDK installed (pg 3-8)
  • Create project (pg 8-15)
    • In Eclipse: File/New/Project...
    • Enter information for your product, and run the emulatore
    • Create AVD (Android Virtual Device)
  • Take a look around. Discuss why each is needed:
    • Build target - what version of Android OS am I building
    • Package name - java package name - why needed?
    • Initial Activity - high level description of what an activity is. Diagram of an iTunes-like application on board.
    • Min SDK version - assumption about what the target machine needs to have
    • Directory tree - let's look at what is going on
  • Lets make some tiny changes
    • Change initial message to something much longer
    • Change name of the app
    • Re Run to see the changes applied
  • Let's study the directory structure
    • Look at the diagram attached at the bottom of this page
  • Let's take a look at the UI Examples
    • Create a new project, indicate the SDK version
    • Select sample: UISamples
    • Look at: Basic elements of the User Interface, the back button

Take a look at the UI Samples


  • Introduction to Agile Methodology
    • Not a survey; just learning how to use a particular tool
    • Agile => Extreme Programming, Scrum, and many other variants. Read http://agilemanifesto.org/
    • Other methodologies: waterfall. "BDUF". Read: http://en.wikipedia.org/wiki/Big_Design_Up_Front
    • Concepts from Scrum:
      • Stories
      • Backlog
      • Product Owner
      • Scrum Master
      • Sprints (for us, 4 day sprints)
      • Velocity
      • Pair Programming
      • Continual Integration
      • Standup meetings
      • Test Driven Development
      • Intro to pivotal tracker
  • Sponsoring of project ideas
    • Any new product ideas with sponsor presentations
    • Nonbinding vote and group formation on white board. Groups of at least 3 people.
Pito Salas,
May 31, 2011, 6:33 PM