This home page, the CS184 Slack Channel, and maybe a CS184 Piazza, will be used as centers of communication for the class. Homework submission will occur through the CS184 GauchoSpace. Make sure you are enrolled!
While the webpage provides you with up-to-date information about assignments and what is currently going on in class, homeworks will be submitted via GauchoSpace and possibly Gradescope, Piazza serves as an open forum: questions, answers, suggestions, etc., and the Slack channel provides focused channels for special topics and project groups.
Class Hours: TR, 2:00pm-3:15pm | Section W 1:00pm-1:50pm (387-1015), 2:00pm-2:50pm (GIRV2115) or Friday 1:00pm-1:50pm, 2:00pm-2:50pm (HFH1135) Class Location: PSYCH1902 Instructor: Tobias Höllerer Office Hours: Wed, 4pm-5pm or by appointment e-mail: holl@cs... Discussion/Lab: W 1:00pm-1:50pm (387-1015), 2:00pm-2:50pm (GIRV2115) or Friday 1:00pm-1:50pm, 2:00pm-2:50pm (HFH1135)
TAs: Samridhi Maheshwari, Shubham Talbar, Satyam Awasthi e-mail: {samridhimaheshwari,shubham_talbar,satyam}@ucsb... Office hours: Samridhi: TBA, Shubham: TBA, Satyam: TBA
This course provides an introduction to developing applications for the Android mobile ecosystem.
Over the past 20 years, the use of information technology has undergone a clear transition from stationary office and desktop computing to mobile computing. This development was accompanied by the emergence of networked and social computing. The Sales of smartphones and tablet computers have by far outpaced the sales of conventional desktop PCs for years now. The way people today obtain computer literacy has changed: Apps and cloud computing have replaced desktop computing in many cases. Computing has shifted from office or home office work to an anywhere-and-anytime activity.
This course aims to prepare students for this extraordinary shift in commercial and societal focus. The possibilities of mobile device software development are endless. In this introductory course, we get your curiosity started and prepare you for more advanced app development.
Students will apply their gained knowledge in a series of practical assignments using the Android ecosystem that highlight selected portions of the software design cycle, as well as familiarize them with sound programming practices and effective tools and techniques to create successful applications. The course will also touch upon novel interaction concepts that go beyond what we normally see in today's mobile apps.
This class teaches the theory and practice of effective software design for Android. You will learn about principles, procedures, and programming approaches. You will create, iterate, and evaluate interaction designs.
As we are switching back to an in-person in-class experience, the exact course requirements will emerge over the first week, once the instructor has been able to form an idea about students' resources, backgrounds and expectations.
There will definitely be a series of design and implementation assignments that lead up to individual or group class projects. There _may_ be one exam (in week 8 or 9). We will continuously assign reading and tutorial material from online resources, which is supposed to help your design efforts and to stimulate class participation. Here is how your final grade will be determined:
In case you disagree with any grade, submit your grievance in writing
(email or paper) to the grader responsible, explaining and documenting your
case.
All assignments are due at midnight on the scheduled due date. To make
the deadlines more manageable, each student will be allowed three "late days" during the quarter for which lateness will not be penalized. Late days
may be applied to all assignments, including design sketches and
programming assignments, but not the final project! Your
late days may be used as you see fit -- one
or multiple per assignment -- but once you
used a late day it's good and gone, you cannot reapply it to another
assignment. Anything turned in after 12:00:00am until
midnight the next day is one day late. Every day thereafter that an assignment
is late, including weekends and holidays, counts as an additional late day.
Absolutely no late work will be accepted after
the deadline if you have used up all your late days. If you're not done on time
you must turn in what you have to receive partial credit. There will be no
exceptions from this rule. Please make sure you understand this policy.
When making use of your late days, the online submission provides the timestamp
that counts.
We will strictly enforce UCSB's academic misconduct policies. We use electronic tools to detect plagiarism among submitted homework solutions and sources from the internet. Read these guidelines before beginning each programming assignment. Any form of plagiarism, collusion, or cheating will result in an "F" in this course and may result in suspension from UCSB for two quarters. When in doubt about any forms of receiving help on your assignments, ask us!
I would like the course to be informative and enjoyable. Let us know what you find just, good and interesting about the course. Let us know sooner if you feel something could be improved. See us, send an e-mail, or leave us a note.
See the handout column in the class schedule!
Wk |
Class |
Date | Assigned Reading |
Topics | Handout | HW out |
HW due | |
1 | C1 | Tue | Mar 29 | Introduction,
Motivation, Class Requirements, Policies Kotlin
|
H2: Android Studio (AS) Chapters B1: Java Review |
Student Survey | ||
D1 | Wed/ Fri | Mar 30 | H1 | Hand out Kotlin
|
Section Drive Folder(for Slides) | |||
C2 | Thu | Mar 31 | H1 | HW 1 Android: Overview, Historic Context, Discussion |
H2 (update): Drive Folder with newer Android Studio Bumblebee Chapters | HW1 | ||
2 | C3 | Tue | Apr 05 | H2 | Kotlin Examples Android Studio
|
S2: Slides: Kotlin S3: Slides: Android and Kotlin and AndroidOverview
|
||
D2 | Wed | Apr 06 | H2 | More Kotlin Tips & Tricks Android Studio XML example towards HW2 |
Section Drive Folder(for Slides, Videos, & Code) | |||
C4 | Thu | Apr 07 | H2 | HW 2: First Android Program Layouts |
S4: Slides: Layouts
|
|||
Sun | Apr 10 | HW2 | HW1 | |||||
3 | C5 | Tue | Apr 12 | ConstraintLayout Device-Independent UIs |
S6: Slides: Event Handling / GUI Widgets | |||
D3 | Wed | Apr 13 |
Project Discussion
|
Section Drive Folder(for Slides, Videos, & Code) | ||||
C6 | Thu | Apr 14 | Activity Life Cycle |
|
||||
Sun | Apr 17 | HW3 | HW2 | |||||
4 | C7 | Tue | Apr 19 | State Saving with |
S8: Slides: State Saving with Android configChanges, Bundles, or Shared Preferences S9: Slides: Intents |
|||
D4 | Wed | Apr 20 | (cont>)(cont>) | Nested Layouts vs. complex ConstraintLayout |
Section Drive Folder(for Slides, Videos, & Code) | |||
C8 | Thu | Apr 21 | Intents Fragments |
S10: Slides: Fragments |
||||
Sun | Apr 24 | HW3 | ||||||
5 | C9 | Tue | Apr 26 | H3 |
|
|||
D5 | Wed | Apr 27 | H4 |
|
Section Drive Folder(for Slides, Videos, & Code) | HW4 | ||
C10 | Thu | Apr 28 | H4 |
Asynchronous Threads
|
S11: Mediaplayer |
|||
6 | C11 | Tue | May 03 | H4 | HW4: Animation Demo Permissions REST APIs
|
S13: Permissions S14: REST APIs |
||
D6 | Wed | May 04 |
|
Section Drive Folder(for Slides, Videos, & Code) | ||||
C12 | Thu | May 05 | H5 |
|
Example code posted in Slack | |||
Mon | May 09 | HW4 | ||||||
7 | C13 | Tue | May 10 | Wrap-up: REST APIs |
Example code posted in Slack
S15: Databases, SQLite
|
|||
D7 | Wed | May 11 | Projects: Agile Methodology (Scrum) Milestones
|
Group Project Idea | ||||
C14 | Thu | May 12 | Databases (2): Remote Databases |
S16: Firebase | ||||
8 | ||||||||
C15 | Tue | May 17 |
Google Maps Sensors |
S17: Google Maps, Location Sensing
|
||||
D8 | Wed | May 18 | Project Discussions | |||||
C16 | Thu | May 19 |
Lists
|
S18: Lists/RecyclerView | ||||
9 | C17 | Tue | May 24 | CardDemo Notifications |
||||
D9 | Wed | May 25 | Project Discussions | Room Change: 1132 Harold Frank Hall | ||||
C18 | Thu | May 26 | MotionLayout | Example Code posted in Slack | ||||
10 | C19 | Tue | May 31 | Outlook/Demo: |
Lecture Online Only. Please check our lecture recording list in the evening | |||
D10 | Wed | Jun 01 | Project Discussions |
Room Change Back to Original Section Rooms (Trailer 387-1015 @ 1pm and Girvetz 2115 @ 2pm)! | ||||
C20 | Thu | Jun 02 |
|
|||||
11 |
Final Slot |
Tue | Jun 07 | 4-7pm | Project Presentations | Overall Project Assessment | ||
Thu | Jun 09 |
|
Project Materials Due | Overall Project Assessment |