2.2. I Have a Dream Tutorial

This lesson engages the student in an instructor-led App Inventor tutorial that leads to the creation of a simple sound board app to play Martin Luther King's 'I Have a Dream Speech'. This is a great example of a socially-useful app which provides multimedia education on African-American history and the civil rights movement. It reinforces the enduring understanding that programs are developed by people for different purposes, including creative expression. In this first app, they also learn about App Inventor's event-driven programming model. Students test the correctness of their program by ensuring the speech plays when the button is pressed.

Professional Development

The Student Lesson: Complete the activities for Unit 2 Lesson 2.2: I Have a Dream Tutorial.


  • Presentation system (LCD projector/Interactive whiteboard)
  • Access to computer, laptop, or Chromebook (install the Companion app on Chromebooks)
  • Access to mobile device with the Companion app installed or access to the emulator installed on the computer or laptop. (suggested list of mobile devices)
  • I Have a Dream Tutorial (video or handout)

2.2.1. Learning Activities

Estimated Length: 45 minutes

  • Hook/Motivation (5 minutes): Display any App Inventor block — a programming element — of your choice and ask the students to try to figure out what it does. What does a program do?
  • Experiences and Explorations (25 minutes): Lead the students through the I Have a Dream Tutorial, which explains the basic features and elements of the App Inventor environment and leads the student through the steps involved in creating their first mobile app, the I Have a Dream app.The short handout found in the Text Version of the tutorial can help you to lead the app tutorial. This is a great example of a socially-useful app which provides multimedia education on African-American history and the civil rights movement. In addition, it is important for students to see diverse, culturally-relevant, or inclusive images and topics in their studies to help broaden participation in CS.
  • Rethink, Reflect and/or Revise (10 minutes): App Inventor is a blocks-based programming language. It differs from text-based languages that students may have heard of, such as Java and Python. Visual, blocks-based languages make programming more accessible to beginners. Programming with blocks helps avoid making frustrating typographical errors. Explain event-driven programming and draw a picture of the event-driven programming model.
    • Suggested discussion questions (2 minutes): Were you able to reproduce the "I Have a Dream" app? What challenges did you encounter? What did you do to address the challenges?
    • Think-Pair-Share (3 minutes): How could we describe “event-driven programming” to someone who is not familiar with this concept?
    • Individual portfolio reflection (5 minutes): Ask the students to write a reflection in their Google portfolio that explains event-driven programming. They might also reflect on UI components of other apps they have used.

AP Classroom

The College Board's AP Classroom provides a question bank and Topic Questions. You may create a formative assessment quiz in AP Classroom, assign the quiz (a set of questions), and then review the results in class to identify and address any student misunderstandings.The following are suggested topic questions that you could assign once students have completed this lesson.

Suggested Topic Questions:

  • Topic 1.2 Program Function and Purpose

Assessment Opportunities and Solutions

Solutions Note: Solutions are only available to verified educators who have joined the Teaching Mobile CSP Google group/forum in Unit 1.

Assessment Opportunities

  • Students will be able to reproduce the “I Have a Dream” app on a mobile device. Students will have an opportunity to reflect on the success of creating their first app
  • Class discussion
  • Google Portfolio reflection

Differentiation: More Practice

Here are some additional resources if students are struggling with lesson concepts. Students should be familiar with the App Inventor documentation by the end of the course and able to look up these concepts on their own, but it may be difficulut to read on their own the first few times. You can introduce them to it when they want to explore new concepts or need to review previous concepts. The AppInventor.org website also has a How Do You? page that has short reviews of key concepts in App Inventor programming.

Background Knowledge: More on Programming and Abstraction

  • A computer is a device that can be programmed. A computer program is a set of instructions that controls the computer's behavior. Special purpose computers, such as an ATM machine and the devices that control a car's braking system, are equipped with a fixed program that cannot be changed. General purpose computers, such as our laptops and smart phones, are able to run many different programs -- games, calendars, word processors, and so forth. Similarly, when you download an app from the Google play store or the iPhone Market, you are download a program to a general purpose computer. Today's smart phones are much more powerful computers than the personal computers of a generation ago.
  • Event-driven programming is an important computing concept for mobile apps. Events are generated from the phone's hardware (user touches the screen or the phone's accelerometer detects motion) or from the external environment (GPS or phone call or text message received) or from the program itself (display "hello" on the canvas). The phone's software (its operating system) is programmed to detect events and to distribute them to applications that request them. For example, in this app, when you put a when-Button.Click block into your program that, in effect, is telling the phone to "let me know if this button is clicked". Similarly, if you use a block that handles incoming text messages, that's telling the phone, "let me know when you receive a text message." App Inventor programs are designed to just listen for and respond to events -- the events drive the app's behavior.
  • Here's a video explanation (2:02) of the model as it applies to I Have a Dream and here's a schematic diagram that shows the levels of abstraction involved in the event-driven model. Events are detected by the device's hardware (touching the screen, incoming radio signals, incoming GPS signals) and passed up to the Android operating system. The operating system passes the event up to the current application and to other software installed on the phone. If the app has the correct event handler (e.g., App Inventor block) for handling that event, it will respond ("meow").

2.2.2. Professional Development Reflection

Discuss the following questions with other teachers in your professional development program.

  • How does this lesson help students toward the enduring understanding that programs are developed by people for different purposes and for creative expression? 
  • How do the lesson activities promote the CT (computational thinking) practices of creating and analyzing an app (a computational artifact)?

    I am confident I can teach this lesson to my students.
  • 1. Strongly Agree
  • 2. Agree
  • 3. Neutral
  • 4. Disagree
  • 5. Strongly Disagree