Using App Inventor in a K-12 Summer Camp SIGCSE 2013 Denver, CO – March 9, 2013 Amber Wagner, Jeff Gray, Jonathan Corley University of Alabama David Wolber University of San Francisco NSF CAREER
Overview Introduction and Motivation App Inventor Java Bridge Lessons Learned
Summer Camps at UA CampPre-requisitesContentAttendance Week 1: Intro to Java No experience needed; Grades 9-12 Taught intro to Java using Greenfoot and Media Comp 2011: : 33 Week 2: Robotics Existing knowledge of Java or attendance of the first camp Taught Java using Lego NXT and Lejos 2011: : 25 Week 3: Android App Inventor Existing knowledge of Java or attendance of the first camp App Inventor Block Language and App Inventor Java Bridge 2011: : 24 Residential camps with both commuter and dorm options 2012 Camps had students from 12 states, plus students from Beijing and Hong Kong
2012 Summer Camps
Why App Inventor? Smartphone adoption around 58% 1 (ages 13-17) Android has largest market share (70% in 4Q-12) 2 Novel ways to engage through the “creative hook” and tinkering; “I wish I had an app for that” Social networking and crowd sourcing a daily activity among teens Increasing adoption of smartphones in science and medical applications
Camp Itinerary DayTask Monday Introduction to App Inventor: “HelloPurr”, “PaintPot”, “MoleMash” Tuesday Final project explanation More projects from Dave’s textbook Wednesday Introduction to the Java Bridge: “PaintPot” Students present project ideas Thursday Final project time Friday Project presentations
App Inventor
Java Bridge import com.google.devtools.simple.runtime.components.HandlesEventDispatching; import com.google.devtools.simple.runtime.events.EventDispatcher; import com.google.devtools.simple.runtime.components.android.*; public class MyApp extends Form implements HandlesEventDispatching { /* Declaration of GUI components goes here */ void $define() { /* GUI components constructed and added to Form */ EventDispatcher.registerEventForDelegation( this, "MyApp", "SomeEvent" ); } public void dispatchEvent(Object component, String id, String eventName, Object[] args) { if( eventName.equals( "SomeEvent" ) ) if( component.equals( someComponent )) someComponent_DoAction(); /* Other event dispatching goes here */ } private void someComponent_DoAction() { /* Some specific event handler code here */ } } Created by Mark Friedman (Google) as a way to explore App Inventor in Java
Illustration
Student Projects AppInventorJava Bridge
Artifact Assessment Learning ObjectiveNumber of projects How Android apps can be written23 Objects23 Programming environments (Block Language and Java) 23 Events23 Decision statements15 Loops3 Method calls23 Method creation7 Understanding how to read documentation14 Creating a GUI23 Using components23
Successes Creativity soared Students really engaged Team projects highly collaborative Grasped concepts well (from artifact assessment) – Objects – Events – Decision statements – Method calls – Creating a GUI – Using components
Improvements Begin the series of camps with AI at the end of the first week (during Java camp), as a teaser for the App Inventor week Introduce Java Bridge earlier in the week, perhaps, afternoon of Day Two More focus on the following concepts: – Loops – Method creation – Reading documentation
Conclusion App Inventor Provides a relevant context igniting creativity Students can learn programming concepts first Java Bridge Provides smooth, natural progression to Java Components in App Inventor translate well Next Steps Offer as teaser in first week Give students more time to work in Java
For More Info App Inventor Website – Java Bridge – USF site to automatically generate Java code – Site of translated apps to Java Bridge – translation/downloads/list translation/downloads/list UA Summer Camps Website –