Labs Due Date Points
Lab 01: "Hello World" App
Lab 02: UI Control, Layout, and Theme
Lab 03: Fragment, Master/Detail Flow, and ViewPager
Lab 04: ListView and RecylerView
Lab 05: Tool bar, Action Bar and Menu
Lab 06: Navigation Drawer and Dialog
Lab 07: AsyncTask and Server-side programming
Lab 08: Graphics and Animation
Lab 09: Advanced Animation
Lab 10: Custom View
Lab 11: TBA

Lab 12: TBA

Final Project Idea


  • All labs are individual labs. You are encouraged to discuss with others, but each student must independently carry out the tasks in the labs. We will compare the similarity of the code among the submissions.
  • Each homework is customized, so it is different from the previous semsters. If you copy from the students in the previous semesters, we will immediately tell.
  • Students who are caught cheating will receive zero for that homework, and the final grade will only be B or lower, regardless how good the overall score is.
  • If students are caught cheating, they must immediately split from their current project group, if they work in a group. Namely, they must work alone on the final project from then on.
  • Students who provide code for others to cheat will receive K grade deduction, with K being the number of people who copy their code. For example, if a student would get an A, but give his code for two people to copy or give his two homeworks for one person to copy, the student will receive a C, which is 2 grade deduction.

Lab Environment

There are three ways to test your Android apps. One is to use the emulator provided by the Android SDK (this method is free but slow), the second method is to use a real Android device (this method is expensive but fast), and the third method is to use Android virtual machines. We will use the third method, i.e., using VMs, which is much faster than the emulator, and at the same time, free. Even if you have a real Android device, you still need these VMs, as we often need to test apps in different envrionments, such as on devices with different screen size. Students are expected to finish installing the lab environment in the first week.

  • App Development Environment: Install Android Studio
  • Genymotion: We are going to use the Android virtual machine images provided by Genymotion. To install Genymotion, you should go to its web site, sign up a new account (free) and download.
  • Virtual Machine Software: Install VirtualBox (newest version). This is a free software. Genymotion depends on VirtualBox.
  • Android VMs: Follow the instructions provided by Genymotion to install and run Android virtual machines.
  • (Optional) Install the Play Store App: If you want to install Google Market app in your Android VM, so you can download apps from the Play Store, you can following this instruction.

Notes: The new Android Studio (Version 1.5.1) provides another choice to run Android apps: it uses Intel Hardware Accelerated Execution Manager (Intel® HAXM) to run Android x86 images. This should be like the Genymotion VM approach. However, not all computers support HAXM (mine doesn't support it). If you are interested in this option, you can find more information from the Intel HAXM web site. If you get this approach work, you can test your apps in these images, instead of using Genymotion.

Testing Environment

Although it is a good practice to test your apps on devices with different configurations, we will not use that as a criterion when grading your apps. This way, you can concentrate on the main tasks in each homework. We will only use the following Genymotion image to test your apps:

  • Google Nexus 5 - 5.1.0 - API 22 - 1080 X 1920
  • Note: Feel free to use more recent versions; what is more important is the size of the screen. If you develop your apps in a device with a large screen and your layout looks fine there, when we test your apps on Nexus 5, the layout may look ugly, and you end up losing points. If you use Nexus 5, but run Android 6.0, it should be ok.

Submission Requirement

For each homework, you need to submit your apk file via the Blackboard. The TA will load your apk file into his Genymotion image, run it, give you a grade, and provide a written feedback. Please follow the guidelines below (your homework will not be graded if you don't follow it):

  • You need to put the solutions to all the questions in a single apk file. You can't submit multiple apk files. To help the TA navigate to the solutions to different questions, you can use buttons, drop-down menus, fragments, activities, etc. Here is an example. If the TA has trouble navigating inside your app, there will be deduction, because a good UI design makes navigation easy and intuitive for users.
  • You should rename your apk file using the combination of your first and last names. For example, if your name is John Doe, you should right-click the apk file and rename it to JohnDoe.apk. It should be noted that the apk name and the app name are different. If your name is very long, you can use abbreviation, as long as we can identify who you are.
  • For the app name, you need to modify it in your code. Find string.xml in project/App/res/values/; there is a line <string name="app_name">HelloWorldApp</string>. You can give your app name there. The app name should also include your first and last names. This assumes that app_name is what you use in the manifest file. If you have changed it there, you need to make changes accordingly.
  • Don't use the default Android icon as your app icon. Find an image from Google image, and use it as your app icon, or make your own image. You can set your own icon by modifying AndroidManifest.xml (look for android:icon).