- Time and location: TuTh 10-11:45, Classroom Unit 001 (map)
- Instructor: Luca de Alfaro
- Office hours: Tuesdays, 1-2, Engineering 2, Rm 339A
- TA: Rakshit Agrawal
- Email: ragrawa1@ucsc.edu
- Review Session: Tuesdays 6-7:10pm, Kresge 327
- Discussion group: Piazza. Please use Piazza for all general class questions, reserving email for personal communications.
- If you need a permission code, please request one using this form (you need to be logged in via your @ucsc.edu account to access the forms).
- You can mostly look at last year's home page for the course content.
- You will need an Android device running Android 4.0.0 or later for this class.
The class grading is 50% homework, and 50% class project.
There will be 4 or 5 homework assignments.
Project requirements:
- 1-4 collaborators
- Written in native Android (no frameworks like Unity or Apache Cordova)
- Can include server-based portion, but the mobile portion should be key / substantial
Steps to do the project:
- Submit a project proposal (the form will be made available later).
- Work on the project.
- Present the project in the last class or on final's day.
- Submit the project code.
You will need an Android device for this class. A cellular plan is not required: a wifi-only device is perfect. A device running Android 4+ is recommended. In general, you will be much happier with a device that runs a clean Google build, such as this. These devices in general have more predictable behavior, more extensive logging and diagnostic messages, and more support. Nevertheless, most Android devices work. The problem is that some devices have quirks, due to how Android has been built for them: some phones have limited diagnostic logging, others have peculiar threading limits, and so on and so forth.
We will develop using Android Studio. You need to have a laptop or PC where you can install Android Studio.
These resources will be updated during the class.
The class consists in a hands-on introduction to Android application development. Topics include:
- Introduction to the class, and to creating mobile applications.
- Basic structure of Android applications.
- How to avoid writing an Android application: Apache Cordova (aka Phone Gap)
- Applications and activities.
- Activities life-cycle and threads of control.
- User interface elements: views, layouts, buttons, widgets.
- Preferences, saving state.
- How to almost avoid writing an Android application: Webviews.
- Sharing state across activities.
- Using the internet, and background asynchronous processing.
- File access.
- Communication with cloud servers. User authentication, login, data communication.
- Developing web + mobile applications.
- Using cloud APIs.
- Services and working in the background.
- Audio, video, camera, sensors.