Course Syllabus

Course Description

Software development for mobile devices has special needs and challenges. Devices are constrained in many ways, including a limited display size, processor speed, amount of storage, energy budget, as well as sporadic network connectivity. Yet mobile devices also have a wider variety of available sensors than many desktops, including cameras and microphones, alongside location and motion sensors. This allows for significantly different usage patterns and capabilities, all of which affect application development.

This course will introduce you to the tools, language, software architectures, and user interface requirements needed to develop applications for Android phones, tablets, and other devices. You will build small to mid-sized Android applications using the Kotlin language, addressing the implementation of user interfaces and interactivity, networking, sensor access, and data storage and retrieval.

Prerequisites: CSE 143; INFO 340 (Client Side Development) or equivalent.

Learning Objectives

After completing this course, students will be able to:

  • Utilize development tools and IDEs to implement Android applications
  • Understand the fundamental components and lifecycle of an Android application
  • Specify user interfaces for applications through a variety of interactive widgets and modalities
  • Harness sensors common to mobile device in applications
  • Develop applications that work across a heterogeneous set of devices
  • Be familiar with patterns used in industry for the development of Android applications.

Course Components

This course will be offered online in an asynchronous format. That means that we will provide learning resources (including video lecture/demos), and assignments for you to complete at (more or less) your own pace.

However, this structure will require you to take more responsibility for your own learning than you may be used to: it is up to you to read/watch the course materials, attempt the assignments, plan your schedule, and to be willing to ask questions and seek help if there are any problems. You are accountable for your own learning—but we are here to help!

As with any form of computer programming, the best way to learn Android development is by doing it. Moreover, the Android platform changes every year (sometimes dramatically as you'll see), so professional developers need to constantly learn new tools and techniques on their own—from the documentation Google provides (just as you will be doing). So while this may be challenging, it is an appropriate structure for the topic since it is what you'd need to do professionally.

Assignments

Find complete assignment details and due dates on the Assignments page.

You will be completing a number of smallish Android projects in this course, each intended to give you a chance to practice and learn particular tools and techniques. This will be the primary source of work and assessment in the course.

Correspondence

The hardest part of a remote course is keeping in contact. We'll be communicating with you through a couple of mediums:

We will send out official course announcements and information by email, so you should check your email daily (it may not be hip, but it's accessible and effective!) Note that this email will go to your uw.edu address. If you prefer to read your email on another account, you should set your UW account to forward your email to your preferred account.

You are welcome to email me at any time. When emailing, please make sure to sign your emails! This will let me know who is writing and will help us to better answer questions.

We will be using Piazza for questions and help. Piazza is a Q&A message board specifically designed for helping you get help fast and efficiency from both teaching staff and your classmates. You can find our class page at https://piazza.com/washington/fall2020/info448—you will need to sign up with your UW account; let us know if there are any qustions. I strongly encourage you to use Piazza to ask questions (rather than sending me an email). It will allow you to better structure questions and facilitates the kinds of back-and-forth that come up when talking about programming. This also lets you get support from all of the teaching staff as well as any of your classmakes!

  • Yes, this means that if you know the answer to a question, you should share that!
  • Note that while you can easily post code snippets, please don't post solutions to assignments or exercises; don't deprive others of the chance to learn!
  • If you need any help joining or using Piazza, please let us know.

The best way to get questions answered will be on Piazza. If you post a message, I will try to get back to you as soon as I can. But like everyone else, I'm also dealing with need to lock down and care for my family and loved ones. Please be patient if I'm not able to respond to any messages immediately; I may need time to get to and focus on your questions.

I will also be holding regularly "office hours" on Zoom. My official office hours are listed on the home page, but I'm also more than happy to try and schedule separate appointments at a time that work well for you if needed. Don't be shy; please ask for help if you need it.

You are NOT expected or required to learn everything on your own! The best way to learn is to ask questions. Please don't be shy or embarrassed; ask for help if you need it! I am here for you!

Grading

Honestly, grades in a course should be the least of your worries. This is an elective course—strive to learn the material and the grades will follow.

To this end, assignments will be graded on a general rubric, assessing at a high level whether you've be able to successfully understand and apply the concepts. While there are a lot of details you need to remember and perform, our goal is not to be overly "nitpicky" in grading. See the individual assignment specifications for details.

Final grades are determined based on the iSchool Standard Grading Scheme. Overall, I urge everyone to focus not on the grade itself but on learning what's necessary to earn high scores; the grades will follow from that.

Late Assignments

Assignments should be completed by the listed due dates. Deadlines are there to make sure you keep on pace with the course, as well as to enable us to grade and give you feedback in a timely manner. Work submitted more than 24hr late will be scored with a 10% penality.

We also can and will provide extensions/etc. if illness or other external circumstances mean that you cannot make a deadline. But you need to let us know ahead of time! We will be unable to make adjustments at the last minute. If you get sick, please give us a quick heads-up to let us know so we can be ready to help.

Resources & Accommodations

During this time of an international health and social crisis, students are encouraged to be attentive to their needs for health and well-being (physical and mental). Beyond the present risks associated with COVID-19, individuals are also susceptible to flu, colds, or other common illnesses due to stress, overwork, and disruption of routines (diet, exercise, sleep). Caring for family and friends who are ill adds another responsibility competing for your time. Please do your best to attend to your self-care during this time.

If health-related needs are delaying you from completing coursework, please contact your instructor. For Autumn quarter, faculty in the iSchool have been encouraged to be accommodating and give deadline extensions of up to one week without any academic penalty. If you need more time, please propose a schedule to your instructor that indicates how you can return to keeping current with your assignments. Allowing extensions is entirely at the instructor’s discretion.

If your personal illness or family need is severe and will prevent you from completing the class, please let your instructor know and then contact your Academic Advisor to discuss all your options.

A number of challenges from a variety of directions can affect your ability to bring your optimal attention and energy to a course. Student Resources is a set of links to campus resources that UW makes available to students in trying to mitigate and cope with some of these challenges. This includes disability accommodations, physical and mental health, and community connections among others. If you are having any difficulties, please contact your academic advisor for support, or Health & Wellness at http://livewill.uw.edu. Furthermore, please notify the professor if you are comfortable in doing so. This will enable me to provide any resources that I may possess.

Washington state law requires that UW develop a policy for accommodation of student absences or significant hardship due to reasons of faith or conscience, or for organized religious activities. The UW’s policy, including more information about how to request an accommodation, is available at Faculty Syllabus Guidelines and Resources. Accommodations must be requested within the first two weeks of this course using the Religious Accommodations Request form available at https://registrar.washington.edu/students/religious-accommodations-request/

I encourage all students having difficulty, whatever the reason, to consult privately with me at any time.

Academic Conduct

The standard iSchool and UW academic policies that apply to all of our courses, apply here as well.

Diverse backgrounds, embodiments, and experiences are essential to the critical thinking endeavor at the heart of higher education. We expect you to be respectful of the many social and cultural differences among us, which may include, but are not limited to: age, cultural background, disability, ethnicity, family status, gender identity and presentation, citizenship and immigration status, national origin, race, religious and political beliefs, sex, sexual orientation, socioeconomic status, and veteran status. Please talk with me right away if you experience disrespect in this class—from any source (including teaching staff)—and I will actively work to address it.

Collaboration

The iSchool encourages and supports collaboration. The goal of this course is to learn the material—to be able to create new web-based information systems on your own. You are encouraged to utilize any available resources, including your classmates, to learn these skills. You are welcome to discuss exercises and problems with others, to work through challenges in pairs, to seek help if you get stuck, and to share guidance and expertise if requested. Help each other to become experts!

But "collaboration" does not mean just copying other people's code and trying to pass it off as your own. You can discuss problems and even work through solutions together, but the final product (the code you create and submit) should come from your own brain and your own hands.

The point of assignments is for you to learn to complete them. This includes the entire process of getting the solution—including the false starts, bugs, misconceptions, and mistakes—because the learning occurs in the doing. Completely apart from the ethical issues, copying a solution without understanding deprives you of the whole point of the assignment, and frankly is a waste of your time.

A good rule of thumb: When working on an individual assignment, no other student's code should ever be on your computer. Not ever shown on your screen (including as an image or screenshot), not saved to a file on your harddrive, not found in an email under your account, etc.. You can verbally talk through the code to write, but make sure you understand what and why your implementation works—and if you're not sure, ask!

  • DO: Ask people for help finding bugs.
  • DO NOT: Let someone else type code for you.
  • DO: Give credit when you get help or advice from someone.
  • DO NOT: Copy or adapt an assignment from a previous quarter.

Code Reuse

Android development includes a lot of "boilerplate" code. And although professional developers often reuse code they find on the web, they also take the time to understand what that code is doing, customize it to their specific context, and cite the source so that they can find it again later. They "make it their own". If you want to use a snippet of code you find on the web, you MUST do the following:

  1. Include a reference to where you found the code (a URL in a comment is fine). Including more than a line or two of un-cited code, or otherwise failing to give appropriate credit, is a form of plagiarism and so is considered cheating.
  2. Take the time to understand how and why the code works (otherwise you aren't actually learning anything!). Adding detailed comments explaining what the code does in your own words is a good way to demonstrate that you actually understand it.
  3. Make the code your own; do not just copy and paste it directly into your project. Choose exactly what pieces of a sample are necessary for your work (you usually don't need everything). Adjust variable and function names so they are appropriate for your situation. Ensure that the code matches the style and usage guidelines required for the class.

This course is about learning Android development; you won't learn anything from just copying other people's code—even if the final product "works". It's fine to learn from other sources, just be honest about it.

Academic Honesty

The consequences of academic dishonesty are not worth the risks. The simple rule is: do not claim anyone else's work, code, words, or ideas as your own. If you're in doubt, come talk to me in advance.

If we determine that you violated the collaboration policy and plagiarized code, you will get an automatic zero on the assignment, and will force us to file an academic misconduct report with the Associate Dean of Academics. Note that both students will be considered to be at fault in the case of unauthorized code sharing.

If you're having problems in the course, come and speak with me; never take the shortcut of copying someone else's work. It isn't worth it.

Course Summary:

Date Details Due