2.2. I Have a Dream Tutorial

Time Estimate: 45 minutes

2.2.1. Introduction and Goals

I Have a Dream! is an educational "soundboard" app that plays the famous speech of Martin Luther King. This is a great example of a socially-useful app which provides multimedia education on American history and the civil rights movement.

(Teacher Tube version)
Learning Objectives: I will learn to
  • follow a tutorial to create the I Have a Dream app on a mobile device
  • develop your understanding of what an MIT App Inventor program is
  • navigate the MIT App Inventor programming platform
  • develop your understanding of event handlers
  • identify elements of the user interface (UI)
Language Objectives: I will be able to
  • use target vocabulary, such as input, output, and program function while describing an app, its features, and user interface with the support of a word bank
  • summarize event-driven programming for the portfolio reflection questions with the support of concept definitions and vocabulary notes from this lesson

2.2.2. Learning Activities


To get started, open the I Have a Dream Starter project with the embedded tutorial in MIT App Inventor and login with your Google account into MIT App Inventor. Follow along with your teacher or the following video tutorial. You can also use the embedded tutorial in the template or the text-version of this tutorial or the short handout.

NOTE: The video below asks you to open a starter app, but if you use the link above the IHaveADreamStarter app will already be loaded and you can start following the video at time 1:12.


Our mobile devices and computers are built to interact with us. The mobile apps that you create will also communicate with users by getting input from the users and displaying output
to the users. Input is data sent to a computer for processing by a program, and output is the data sent back from the program to the device. Program output is usually based on a program’s input or prior state (e.g., internal values or variables). Input and output can come in many forms, such as tactile (for example touching a button or the device vibrating), audible (a sound), visual (an image), or text. Try listing all the forms of input and output in the I Have a Dream app!

Designing a good user interface (UI) for a program is very important! User Experience (UX) designers are very much in demand. Most programs and apps these days are event-driven programming, which means they display the UI and wait for a user event, for example for the user to touch a button as input. In event-driven programming, program statements are executed when triggered rather than through the sequential flow of control. Events are triggered when a key is pressed, a mouse is clicked, a program is started by another application, etc., and they supply input data to a program and trigger different blocks of code in the program that influence its behavior. A program needs to work for a variety of inputs and situations!

2.2.3. Summary

In this lesson, you learned how to:

2.2.4. Still Curious?

Did you enjoy creating your own app? In this course, you will get the chance to build lots of apps like this with the help of tutorials and you'll even have the chance to work on your own original app idea! If you finish this lesson early and want to try creating another app now, check out these fun beginner tutorials from MIT App Inventor.

2.2.5. Self-Check


Here is a table of the technical terms we've introduced in this lesson. Hover over the terms to review the definitions.

event-driven programming
event handler
integrated development environment (IDE)
program function
user events
user interface (UI)
UI components

Check Your Understanding

Complete the following self-check exercises. Please note that you should login if you want your answers saved and scored. In addition, some of these exercises will not work in Internet Explorer or Edge browsers. We recommend using Chrome.

2.2.6. Reflection: For Your Portfolio

Answer the following portfolio reflection questions as directed by your instructor. Questions are also available in this Google Doc where you may use File/Make a Copy to make your own editable copy.

If you are using a Google Sites portfolio, see the videos on the portfolio help page on how to embed your google document in your web page.

You have attempted of activities on this page