Wednesday, January 25, 2012

University of Maryland's CMSC 436: A Student-Driven Effort to Develop Open-Source Android Teaching Materials


Quick Links: Open Source Teaching Materials used in CMSC436: Programming Handheld Devices.



Starting in the summer of 2008, I and several others developed and offered a course at the University of Maryland on programming mobile applications for the iPhone platform. The course was well-received and the students really enjoyed experimenting with this cool, new technology. After a while however, as Android phones became more popular and more widely-available, students began approaching me, asking, "iPhone only? What about Android?" I didn't really have an answer. It's a lot of work to put together a course and having just spent a year on the iPhone course, I wasn't too keen to do it all over again for Android.

Still, I knew in my heart that the students were right. Mobile application development skills were (and continue to be) in high demand, the Android platform had matured greatly since we started the iPhone course, and its user base was growing rapidly. So there was a ready market for Android development courses. Also, from an educator's point of view, Android, unlike iPhone, relies on tools and platforms that are already familiar and readily available to UMD students, such as Java, Eclipse, Junit and commodity PCs. This frees up about 25% of class time, allowing me to shift from teaching Apple-specific tooling to teaching deeper mobile application concepts.

So I made a deal with my students. I would organize a 1-unit seminar course on Programming the Android Platform; the students would each research different Android topics, develop presentations on those topics, and then present them to the class. As each student prepared their presentations, I worked with them, providing further technical resources, slide templates and presentation feedback. By the time the semester finished the students had created a initial set of slides covering a wide variety of Android topics.

I then extensively edited all the presentations: reorganizing material, refactoring some presentations into multiple smaller, more focused presentations, adding many source code examples, filling in gaps in topic coverage, etc. These materials continue to be a work in progress, but, hopefully, they're mature enough that others can benefit from them. 

Going forward, I will continue to expand this work. In particular, I am actively adding new topics, new conceptual material, and new infrastrucure and applications. Some examples of this include:
  • New topics: Android 4.0+, using the USB Open Accessory Kit, using Near Field Communication, and Device/Cloud Integration.
  • New conceptual information: With Dr. Jules White (Virginia Tech) I am developing materials to teach important background concepts underlying mobile application platforms such as key Design Patterns found in the Android platform (e.g., Listener, Cursor, Proxy, Command, Monitor, Completion Callback, Broker, and many more.).
  • New Infrastructure: With Drs. Jules White (Virginia Tech) and Aniruddha Gokhale (Vanderbilt), I am currently creating a large-scale mobile application testbed called ATAACK -- the Android Tactical Application Assessment & Knowledge Cloud. when finished ATAACK will support cloud-based Android emulation to run experiments integrating 1,000+ emulated and actual Android devices running on Virginia Tech's Cognitive Radio Network Testbed (CORNET).
  • New Applications: Once it's completed we will use the ATTACK cloud to teach advanced security and privacy concepts. For example, we will develop lessons about how information spreads in online social networks, such as Facebook or Google+, and why careful selection of privacy controls is important. The lessons will be accompanied by pre-configured experiments on ATTACK to illustrate the fast spread and durability of information in these networks.
Click here to see the latest version being used in CMSC436: Programming Handheld Devices . Feel free to browse, use and share any of these. I also welcome your comments, corrections and improvement ideas. You can reach me at aporter@cs.umd.edu.

Tuesday, November 1, 2011

Mobile Apps Development Course at the University of Notre Dame

Smartphones, tablets, and other powerful mobile devices are rapidly becoming omnipresent and users rely on mobile applications for their communications, business activities, entertainment, and countless other usage scenarios. Application development on mobile and wireless devices differs from programming of “traditional” computing systems in various ways and requires trained professionals that are familiar with the unique requirements of mobile systems and their development platforms and tools.

The goal of this course is to expose talented undergraduate students to hands-on experience with mobile systems, technologies, and applications, thereby preparing them for careers in mobile and wireless communication and computing domains. Specifically, concrete objectives of this course are:
  • To increase the number of professionals in the area of mobile applications and technologies.
  • To develop student skills and abilities in applying engineering and computing tools and methods to real-world problems.
  • To enhance students’ written and oral technical communication skills.
The course is co-taught by Professors Patrick Flynn and Christian Poellabauer; both members of the Wireless Institute and faculty in the Computer Science and Engineering department at the University of Notre Dame. The course was offered twice so far (with 9 students enrolled in 2010 and 30 students enrolled in 2011) and students are invited to develop projects around a specific theme. In 2010, the theme was “Notre Dame” and students developed apps on both Android and iOS platforms to help their peers on campus, e.g., one app provides easy access to dining options and nutritional information on campus, another app provides information about football weekends on campus, and the third app allows students to become instant reporters using their mobile devices for Notre Dame’s student-run newspaper, the “Observer”. In 2011, the focus was on apps that help individuals and businesses in the South Bend area, and 16 apps were developed in areas such as health care, biometrics, entertainment, communication, and security. For 2012, the theme will be “App Development for the Greater Good” and students are invited to develop mobile apps that (well aligned with Notre Dame’s mission statement) address challenges such as unemployment, injustice, access to health care, and many other social issues.

http://www.cse.nd.edu/courses/cse40333/www/

Instructors’ websites:
http://www.cse.nd.edu/~cpoellab
http://www.cse.nd.edu/~flynn

posted by Christian Poellabauer

Friday, October 7, 2011

University of Virginia

Teaching CS courses with the Android environment has become increasingly popular as more and more students are showing up to class carrying their own Android device.  At the University of Virginia, we were fortunate enough to start with a small set of phones that we lend out to students.  So, now that we know we have phones (either ours or from students) how can we best put them to work in our classes?

The most straightforward answer is a software engineering class doing some sort of team-based project.  But what we found at UVa that worked really well was to pair teaching Android and mobile with teaching web services.

The idea is that students would build a web service, and then consume that web service in their Android app.  Then they would repeat the cycle for a second service, using a different web platform or language. Finally, students would have include a web service from another team in the class in their app, encouraging them to provide reasonable documentation and API.

So far, we are running this class for the second time now with Android and it has been a phenomenal success!  Students are learning PHP and Ruby on Rails to create their web services, using SOAP/XML, and JSON to pass data between the services and the phones, and are also learning good mobile software design.  Students enjoy the class and have a project that is easy to show off to potential employers when it is done.

So, if you or your students have Android phones, consider combining mobile with web services.
http://www.cs.virginia.edu/~sherriff/cs4720/


posted by Mark Sherriff, Assistant Professor, Computer Science, University of Virginia

Tuesday, October 4, 2011

The Computer Science and Engineering department at the University of North Texas

The Computer Science and Engineering department at the University of North Texas (http://www.cse.unt.edu/) has begun its second year of CSCE 3410 - Advanced Programming: Android Devices. The class has been very popular, with each student responsible for creating an app over the course of the semester. Very few restrictions are placed on what the students can create, and several really good ideas have come from the class, including phone silencing based on location, communication with motorcycle helmets, and physics based games, with several apps available in the Market.

I try to approach the course from both a technology and business perspective, focusing not just on the code, but on interface, usability and usefulness. We have recently focused on apps for specific industries that students may have experience with outside the classroom based on their work or hobbies. We also frequently have industry visitors who share their needs for mobile technologies, and students have formed several partnerships with outside ventures and later secured jobs with these companies. The course has served to greatly strengthen the school's ties to industry.

The University of North Texas also has a very active set of game programming courses (http://larc.unt.edu/), and many students port their games to the Android platform.
I also created a small app to use as a demo and help the students learn Android programming:
https://market.android.com/details?id=com.mobileworldrecords.mwr

posted Ryan Garlick, PhD
Principal Lecturer, Advisor
Department of Computer Science and Engineering
University of North Texas

Thursday, August 18, 2011

Stanford MobiSocial Computing Laboratory

Our research group in the MobiSocial Computing Laboratory has been working on an alternative social network where users need not give up data ownership to a proprietary social network.  We have created a system called Musubi (Mobile, Social, UBIquitious) that appears quite promising.

It is a challenging task to create a practical, privacy-honoring open social network.  First, how does one create an economically feasible solution that does not monetize users' data?  Second, given 750 million users already have friends in Facebook, nobody would use an alternative unless it is more compelling beyond just offering privacy.

We have developed Musubi as an augmentation, rather than a replacement of today's social networks.  It is designed to better support private conversations between friends and people we meet.  While Musubi does not help people find friends and share widely, it also reduces the dangers of online social networking.  As a social network only to be used on mobile devices, Musubi takes advantage of the characteristics of mobile devices to provide a novel and compelling experience to end users and to provide privacy.

Musubi enables users to simply tap the phones, using NFC (near-field communication), and they can start socializing with each other.  Also a user can create a group, and share it with friends over any electronic medium, such as email, text messages, or Musubi messages.   Musubi also allows an encrypted and password protected group member list to be distributed to other users at the same GPS location.

Musubi is a group application platform designed to make it easy for all kinds of mobile applications to share information (locations, pictures, real-time finger painting, high scores) on friends' group feeds.  Musubi makes heavy use of contextual information to minimize the friction of interaction, e.g. photos can be automatically shared with a designated group without any extra key strokes at all.

In Musubi, user data are not stored in centralized servers.  The Musubi service simply routes encrypted messages between phones, providing a little bit of queuing where necessary in case the phones were not online.  Users are responsible for backing up content of interest to a server of their choice.  Without a central server that collects and stores users' information, Musubi complies with COPPA (Children's Online Privacy Protection Act) trivially, unlike networks like Facebook and Google Plus, thus allowing it to serve kids under 13.  The lightweight infrastructure means that it can be provided as a low-cost service perhaps offered by the operator, or it can be supported by the application platform, which traditionally charges 30% of the application revenues.

We have also conducted a series of five user studies over a five-month period. We saw extremely enthusiastic responses from a number of adults and college students who believe that Musubi is the social network design of the future.  By and large, however, most students in the study were unaware of privacy issues.  Even though the high-school students in our study  were indignant that their personal data were sold without their knowledge, only half expressed interest in using Musubi.  The user study with thirty elementary students indicates that Musubi is easy to use and compelling for kids who are not already on Facebook.

Musubi offers a solution to those who shied away from social networking for privacy concerns, or are using today's proprietary systems for lack of an alternative.  Musubi's support for private group communication may find new uses as well.  For example, soldiers may use Musubi to stay in touch with their family and play games with their children without the fear of disclosing their locations to the public inadvertently.

This study also suggests that it is important to encourage teenagers to use privacy-honoring systems as they start participating in social networking.  For example, schools can adopt privacy-honoring networks for class discussions and run collaborative learning software on top of such networks.  This reduces the need for students to take the effort to build up their friends' network in a proprietary, less-safe, system.  This may have the effect of increasing adoption of privacy-honoring social networks.

A prototype of Musubi is available on the Android market.  Further information can be found on http://mobisocial.stanford.edu.   Please check it out and let us know what you think.

Musubi is an open-source platform; we welcome collaboration at all levels -- user studies, apps and infrastructure development.

posted by Monica Lam

Monday, January 31, 2011

Univ of Washington Certificate program in Android Application Development

The University of Washington’s  Professional & Continuing Education Division is developing a new Certificate program in Android Application Development which will launch in Fall 2011. The program will be available as a classroom-based program in downtown Seattle and will also be available online. It was developed in conjunction with an advisory board consisting of both UW faculty and industry professionals. Participating companies on the board include Google, Samsung, T-Mobile, Cisco, Entertonement, Ubermind, Centurytel, Sogeti, and SURFIncubator. The goal of the Certificate Program is to provide industry professionals with the core development skills needed to develop an application on the Android platform and to facilitate communication designed to retrieve and store data and interact with other application The program concludes with deploying a complete application along with topics related to mobile application marketing, upgrading and app and entrepreneurship. Students will work on a variety of devices generously donated by several board member companies.

Course 1: Android Development Fundamentals
This course will introduce the student to the core development skills and practices needed to develop an application on the Android platform.  Code examples will be provided during instruction with the goal of development of an application by the student at the end of the course.  The language for the course is Java.

Course 2: Interaction and Communication with Android
The second course builds on the foundations of Android development. We will discuss topics on application communications to retrieve and store data, interaction between other applications, and development techniques that use advanced features of the Android platform. Communication and interaction are key concepts to building rich applications in the Android environment.

Course 3: Application Deployment, Marketing and Entrepreneurship
The third course in the Android development series focuses on the business functions that allow a developer to bring an application to the appropriate audience. We cover the aspects of application versions and upgrade management, marketplace hosting, and monitoring tools for your application.  We will look at the business costs associated with application hosting and ways to market your application.

posted by scott farrar

Monday, December 13, 2010

NLP on Mobile Devices

Inspired by APIs such as Google Translate, cutting-edge input methods (e.g.,Swype), and successes in embedded speech recognition, I chose Android for my Spring 2010 seminar at the University of Washington, MA program in computational linguistics.

Entitled "NLP on Mobile Devices", this course was designed to explore the use of computational linguistics on mobile devices such as smart phones. We surveyed current issues and technologies concerning mobile devices, including user interface challenges, processing limitations, various operating systems, and market share (all within a compling context).

The main assignment was for students to develop proof-of-concept apps for Android-based smart phones using the Android SDK. Students had the possibility to explore such topics as speech technology, text processing, and NLP-related web applications. Furthermore, since the fast-growing mobile market introduces many possible opportunities for the computational linguist, we explored entrepreneurship in relation to the fast-changing mobile landscape. I am actively developing round two of this course (Winter 2011) and will post materials soon.

posted Dec 13, 2010 6:33 PM by scott farrar 

Thursday, September 30, 2010

Johns Hopkins University Department of Computer Science


Our students used the Android platform for their final project in Wireless Embedded Sensing Systems to develop a WiFi localization and mapping tool. They developed user interfaces and used the built-in GPS and WiFi to collect signal strength readings which were then processed into location estimates, and presented to the user as points on a map. Students made use of a variety of techniques, including estimating distances from path-loss and AP broadcast strength, trilateration, and directing human users to perform targeted sampling tasks. The results were great: in some cases, they were able to make localization estimates with error on the order of meters. Being able to make use of the ADK and good high-level API's (SQLite, Apache HTTP, Maps, and the UI framework) enabled the students to build complex client-server applications in short order and contributed greatly to their success.

posted by terzis@cs.jhu.edu

Wednesday, September 22, 2010

MIT AITI

The Massachusetts Institute of Technology's Accelerating Information Technology Innovation (MIT AITI) is a multidisciplinary group that promotes software development skills and technology entrepreneurship in emerging regions. MIT AITI partners with universities in Africa and South Asia to offer mobile and Internet technology incubator courses instructed by MIT alumni and graduate students with MIT undergraduate teaching assistants. Additionally, MIT AITI builds networks of local investors, mentors, entrepreneurs, and developers centered on each program location that help our students to realize their startup goals.

During the summer of 2011, AITI, with the support of Google, organized programs in Nigeria, Ghana, Kenya, Rwanda and Sri Lanka. Over 170 students attended the programs in total. The technical curriculum focused on building software development experience, and introduced the students to real-world platforms such as Django, Google App Engine, and Android. The entrepreneurship curriculum is experience-based as well, with units covering ideation, team-building, pitching and presentation skills, and negotiation. Each course is organized around a group project, asking students to develop an innovative and viable mobile service startup. Each instructor team includes expertise in both technical and entrepreneurial areas, with mentorship an important component of the course structure.

The courses employed Android phones so that the students could get real-world experience with the Android platform and with mobile web. Students from each course used Android phones to test the prototypes for their projects, and to demo the prototypes for the public Demo Day at the end of the course.

The 2011 summer programs have already had high-profile outcomes since the short time since they have completed. Two student teams in Sri Lanka have signed partnerships with mobile operators to market and deploy their services. Four student teams in Rwanda have registered companies from their projects, and one team has won a Rwandan entrepreneurship competition and will be traveling to Europe to compete in an international competition. Finally, multiple teams from have been accepted into highly-selective local incubators to continue developing their startups.

posted by Michael Gordon of MIT

Tuesday, August 10, 2010

Barcelona Informatics School LSI Department

Within the AndroidEDU Google EMEA Program, the LSI department an the Barcelona Informatics School at UPC has organized an innovative Android programming workshop.  During ten weeks, twenty students (organized in small groups) come across and solve technical difficulties arising in the actual Android programming. By the end of the course, each group develops its own Android application. The patent motivation in Android among students has allowed us to apply proactive learning techniques with very good results. As teachers, this experience has enabled us to meet new challenges, since it has forced us to rethink our role, to create educational material accordant with the new communication media (web-based on-line forums, YouTube, etc.), and fostering a fruitful collaboration between teachers and students.

posted by Maria Serna