- Time and location: TuTh 8-9:35, Earth & Marine B206
- Instructor: Luca de Alfaro
- Office hours: Tuesdays, 1-2, Engineering 2, Rm 339A
- TAs:
- Rakshit Agrawal, ragrawa1@ucsc.edu Office hours: Tuesdays 2:30-3:30, and Thursdays 12-1, E2-385
- Jared Duval, jduval@ucsc.edu Office hours: Mondays 1-2pm, and Fridays 2-3pm, E2 309
- Shobhit Maheshwari, shmahesh@ucsc.edu Office hours: Wednesdays 8am - 9am, Baskin Engineering, Room 119, and Wednesdays 5-6:30pm, Enginnering 2, Room 480.
- Review Session: J Baskin Engineering 152, Wednesdays 5:20-6:55pm
- MSI Sections: Will be announced.
- 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 will need an Android device running Android 4.0.0 or later for this class.
- You will need a laptop capable of running the Android Studio and Apache Cordova development code (see below for details). Laptops with at least 8 GB RAM are recommended. Financial help might be available (warning: the help might be in the form of a loan).
What's new in 2017
Every year, I change how I teach my classes. This is what is new for this year:
- The class will cover:
- Apache Cordova (30%, new for this year)
- Server backend development (10%)
- Android development (40%)
- Projects are optional, and in fact, by instructor permission.
- There will be a paper-and-pencil final exam for those who don't do the project.
- In addition to regular homework assignments, I plan to give frequent small quizzes on notions learned in the same or recent week.
There are two tracks:
- Project Track. In the project track, the homework assignments count 50%, and the project counts 50%. Students will present their project during one of two 3-hour time slots I will reserve during finals week.
- Homework track. In the homework track, the homework counts for 85%, and the final exam counts for 15% (percentages subject to tweaking).
The final exam will be a pencil and paper exam. You may be asked to answer in English to questions, write small portions of code, write pseudocode to indicate how to perform some tasks, look at code and answer questions about it, and similar. Here is the list of topics for the final exam.
In order to do a project, students need to submit a project proposal; we expect to be able to accommodate about 30-35 projects.
- Please submit project proposals using this form.
- Project proposals will be due around week 3 of the class (the precise deadline will be announced on Piazza).
- Can include server-based portion.
- Must be substantially original.
- 1-4 members.
- Projects can be done in either Android (using Android Java), or in Apache Cordova.
You need to do these things to turn in the project:
- Homework 1, due Wednesday April 12, 11:00pm
- Homework 2, due Thursday April 27, 11:00pm
- Homework 3, due Friday April 28, 11:00pm
- Homework 4, due Monday May 8, 11:00pm
- Homework 5, due Tuesday May 16, 11:00pm
- Homework 6, due Tuesday June 6, 11:00pm
- Homework 7, due Tuesday June 6, 11:00pm
Homework upload and grading instructions
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:
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.
- Apache Cordova: your app as a single-page web page.
- Javascript.
- Vue.js
- How to organize a single-page app.
- Building a server API.
- Basic structure of Android applications.
- Applications and activities.
- Activities life-cycle and threads of control.
- User interface elements: views, layouts, buttons, widgets.
- Preferences, saving state.
- Webviews.
- Sharing state across activities.
- Using the internet, and background asynchronous processing.
- File access.
- Communication with cloud servers. User authentication, login, data communication.
- Services and working in the background.
- Sensors.
- Building simple animations.