Students will study Android APIs and learn to build significant Android applications. The course will have a practical focus, with significant in-class programming, programming assignments and a large project (optionally with a partner). The course philosophy is that programming is learned by doing. While the course focuses on Android, we will learn general principles of software engineering and mobile app development.
The course assumes familiarity with programming and object oriented terminology. The course is taught entirely in Kotlin, the modern sibling of Java. We will spend a bit of time reviewing Kotlin, but you are expected to be familiar enough with Java that the transition will be seamless. It is expected that you will have to study Kotlin on your own as part of the class. The course does not assume any previous experience with Android programming.
| Prakhar Singh | psingh@cs.utexas.edu | Office Hours: Wednesday 4-5pm, see canvas for zoom link |
| Wangyang Li | wangyangli@utexas.edu | Office Hours: Tuesday 5-6pm, see canvas for zoom link | Zhaoyuan He | zyhe@utexas.edu | Office Hours: Friday 3pm-4pm, see canvas for zoom link |
| Emmett Witchel (he/him) | witchel AT cs DOT utexas DOT edu | GDC 6.432 | By appointment |
The required reading for this class is the demo code that I will push to the class' shared github repository (see below for details about git). You are expected to read and understand all of the code in this repository. We will spend significant time in class reviewing and understanding this code.
To incentivize you to read the code and to give some shape to our in-class interactions, I guarantee at least one error per non-trivial file of demo code. We will find and fix these errors in class. You can discuss them on piazza.
For this course the official Android documentation is essential, and I will often include links to their documentation.
You do not need an Android device for this class. However, you might enjoy using one for development. There are a variety of inexpensive devices available, some subsidized by showing you ads on the lock screen.
We have a CS 371M Mobile Computing class in piazza (piazza.com) for this course (link). We will use that forum to communicate about the course, and you are expected (required) to keep up with announcements on that site.
Piazza is great for general questions and clarification. It is not appropriate for you to post specific code and ask your fellow students to debug it. Please do not do that.
There is no textbook for this course, however, I highly recommend you get an Android programming book. When it comes to educating yourself, I believe in an "all of the above" approach. That means attending lecture, discussing the material with your peers, reading books, reading online sources, programming, experimenting, reading official documentation, etc. I've always found a book or two is a valuable part of learning.
There are many excellent Android programming books out there, and I encourage you to visit your local bookstore and figure out which one will work for you. They have different approaches, for example, some emphasize principles and some emphasize recipies. You should judge which approach works for your learning style. One trick that I use when evaluating a book is to have some specific question, like how does this book explain content providers? Then see if the book has a reasonable answer to your question. I've heard that Android Programming: The Big Nerd Ranch Guide (Big Nerd Ranch Guides) is good. Google is your friend.
If you have a laptop, please download and install Android Studio. It can be a time consuming process (and it can consume significant bandwidth). We will use Android Studio extensively for in-class programming. It will behoove you to have it updated before class because updating in class is time consuming and boring. Bear in mind that Android Studio updates freqeuently and the updates are worth tracking. Please plan ahead. For example, if we have a flipped classroom activity, you should update Android Studio the night before.
If you want to develop on your own machine (recommended), download the Java development platform, called Java SE SDK. Then download Android Studio as a development environment. We will spend most of our time in this class in Android Studio. Within Android Studio be sure to download the hardware-assisted emulator (most likely the HAXM installer for Intel x86), which is supported on most modern hardware. Here there is help on how to get started with downloading and installing Android Studio.
You also need to run the standalone SDK Manager from within the GUI and then update it seperately. Here is a link that explains how to update SDK tools. Use the stable channel. Enable Google Play services (in the SDK Tools tab)
Android studio contains a nice emulator for Android devices. We specify that all programming assignments will be graded on the following virtual device.
You should create a device with the above configuration for testing. If we are doing work that requires different devices (e.g., different screen sizes), we will tell you.
You probably want a directory on our laptop dedicated to course contents, which will consist of many git repositories.
The course uses the git software version control system. You can find much tutorial information for git on the Internet. For example, here is a nice visual tutorial on git branching, and here is a nice description of the model.
The course will host all code on github, so you must make an account. Go here..
Our workflow with github is documented here .
The course will have a Demo repository that will have code with at least one error per non-trivial file. This code is required reading. We will understand the code together in class and we will fix the errors. You are free to discuss these issues on piazza.
We use github classroom (link). I don't think you will spend too much time on this site specifically, but it is nice to know about.
Here are some command lines, for reference. Please remember to push your code after commit.
We will post an invitation link on Piazza for each homework and flipped classroom. Github will create a repo for you after you accept the assignment. The repo will contain an Android studio project (directory) with starter code for the exercise. You can open this project directory in Android studio. Inside this directory will be a README file that you need to fill in (e.g., with your eid). The name of your repository will have your github id. If your github id is supercoder, then you will clone hw1-supercoder. If we need to correct anything about the starter code, we will post it to piazza. Unfortunately, we can't change the starter code and push the changes to y'all.
We will hold many flipped classroom activities where students will program in class and the course staff will assist them. There will be a clear assignment and a starting point for the code. Your flipped classroom experience will improve if you have a good laptop.
Here are the rules for a flipped classroom.
The department student code of conduct is here. Here is a nice quotation, "The University and the Department are committed to preserving the reputation of your degree. It means a lot to you. In order to guarantee that every degree means what it says it means, we must enforce a strict policy that guarantees that the work that you turn in is your own and that the grades you receive measure your personal achievements in your classes."
If you are not sure about whether some form of collaboration is acceptable, please ask.
Students may not acquire from any source (e.g., another student or an internet site) a partial or complete solution to a problem or project that has been assigned. You cannot simply search for homework/lab answers and turn that work in as your own. You also may not have a person or service do your work for your. If you do so, you will be caught and you will get an F on the assignment and possibly in the course. I take academic honesty very seriously. I will look for any form of cheating and if found, I will persue it, and it will be painful for the guilty party.
Students with disabilities may request appropriate academic accommodations from the Division of Diversity and Community Engagement, Services for Students with Disabilities, 512-471-6259,
Assignments are due exactly at the indicated deadline. Any project submitted after the deadline, even by a trivial amount, will be counted as 1 day late. Technical failure of devices or services does not excuse you from a deadline, so please finish your work with time to spare.
If you are having difficulty submitting for some technical reason, the best course of action is to email the TA with your solution attached. Emailed solutions received after the deadline may still be counted as late.
For each day that an assignment is late the maximum score achievable will be reduced by 15% (with an eventual bottom around 8%). But no matter how late it gets, I encourage you to finish all course work. In this class it is always better to submit work than not to submit it. You will get some point value for all correct work submitted.
When you turn in a late assignment, it is imperative that you inform the TA (via email) that you have done so. Assignments are collected by a script which runs at the deadline, so late assignments may not be discovered by the grader unless you send an email.
I want you to do the work for this class. It is always better to turn in an assignment than not. Let course staff know if you are having problems keeping up.
All students are granted a total of 3 slip days over the course of the semester. A slip day negates the penalty of turning in an assignment late by one day (which is up to 24 hours from the due time). Slip days may not be used for the final project. Slip days are atomic, if you are 5 minutes late an entire slip day must be used.
Slip days will not be automatically used when you turn in a late assignment. In order to use a Slip Day, include that information in the README file and mention it in the email to the TA when you inform him or her that you have turned in a late assignment.
The home works start easy, but get quite difficult, so budget your time accordingly.
You are expected to be able to manage the source code for your homework and projects. That means you should make redundant backup copies, so the failure of the flash drive that you bring to campus (for example) should not mean that you have lost all of your work. This problem should be obviated by the course's git repository, which we encourage you to use for development. You must use it to submit your work.
A seemingly common problem when submitting code is that it simply will not build. These errors fall into two categories.
Your final grade for the course will be based on the following factors.
I use plus and minuses when I assign final grades. I am always at least as generous as UT's undergraduate grading scale and usually more generous.
This is a high workload course that does a lot to prepare you to be a professional software engineer. Student evaluations consistently rate the workload high but not excessive. The best way to stay on top of the course is to start assignments early. If you are having problems understanding course concepts, please ask questions on piazza and visit office hours. We are here to help.
I present approximate weights to give you some sense of the relative importance of assignments. I expect you to recognize that this breakdown is not infinitely precise. I might change these weights a bit as the course develops, for example, because we change a homework and it is too difficult so we count it a bit less.The homeworks and the project are the biggest contributors to your grade. The homeworks are not all worth the same. The first homeworks are easier and they count less, with each homework worth as much or more than the one before it.
Everybody makes mistakes. If you think your assignment was not correctly graded please contact the TA via email.
We thank UT's Mike Scott for his version of the course. I got a lot out of Derek Banas' youtube videos. A bit of the course is copied from Stanford's CS 193A, Android App Development (Winter 2015). We really appreciate that the course authors have released their content under a creative commons attribution 2.5 license. To comply with the license, we link to the license, give Stanford credit, do not use the materials for commercial purposes, and distribute our own version of the materials under the same license. We have modified the originals in a variety of places.
This syllabus is subject to change; students who miss class are responsible for learning about any changes to the syllabus.
You should update your voter registration if you have moved since you last registered. Austin/Travis County, or Remainder of Texas
Last updated: 2020-10-09 10:46:09 -0500 [validate xhtml]