How do you write an app to handle a (seemingly) endless stream of data from an LLM, or your multiplayer game, or your GPS reader? How do you prevent your app from getting bogged down by an avalanche of data? How do you ensure your UI is not janky? How do you correctly and efficiently update all aspects of your app with incoming data?
In this course, we'll create observable states with automated change propagation to reliably update all your app. We'll write functions that work asynchronously without expensive operations involving the operating system. We'll ingest streaming data as asynchronous flow, to let components efficiently react to data changes. Programming assignments will assume mobile front ends. If you have never written a line of mobile code? Don't worry, we will start from how to use a mobile IDE all the way to how to build reactive native mobile apps.
This is a combined course with EECS 498-002, Mobile App Design and Development; they share combined lectures. You can not get credits for both. Only the projects and exams are different between them. The MDE course (498) has a team-defined semester-long project and no exams. The ULCS course (398) has smaller projects throughout the term, with two exams, like other ULCS courses. You can sign up for either, but not both. If you have any questions about either of both course, please feel free to ask Prof. Sugih Jamin (uniqname: sugih).
Sugih's by-apppointment office hours will be held in 4737 BBB. GSI's office hours will be held in the BBB Learning Center, Table 1. We also have a Discourse discussion forum.
There is no textbook. Instead, the lab specs and lecture notes are both required readings. We will post important course-related information and answers to FAQs on the Announcement page on Discourse.
Acts of cheating and plagiarizing will be reported to the Engineering Honor Council. Cheating is when you copy, with or without modification, someone else's work that is not meant to be publicly accessible. Plagiarizing is when you copy, with or without modification, someone else's work that is publicly available without acknowledging the original author. Please further review the College of Engineering Honor Code.
You will have ONE opportunity to fix bugs in each graded lab by the assigned office hour following the lab's due date. Corrected code can be credited up to 50% of its original grade points. Code not submitted by deadline will be ineligible for regrade. To be eligible for regrade, do not modify the code on your git repo past the due date. Code with commit time past the deadline will not be eligible for regrade.
Other than the labs, you have two business days from when a grade is communicated to you to ask for regrade. To ask for regrade, you must submit a written request explaining the technical reasons that would make a regrade necessary. A regrade means regrading your whole work and may result in an overall lower grade.
Due to the nature of the assignments, no late work will be accepted. If you do not turn in an assignment by its due date, you will receive a zero for the assignment.
Extensions will be given only for documented medical and family emergencies. Cloud services such as compute engine (AWS or GCP) and git repo (GitHub) have been known to become inaccessible for 24 hours or more. Your laptop could crash or you could be locked out by Bitlocker or other security measures on your laptop. CAEN/ITCS computer labs could be full or closed and machines slowed down due to overload. NO extension will be given for any of these reasons. Plan on them happening and have your work done a couple of days before any due dates. Extensions will also not be given for job interview nor any other non-emergency activities. Keep a backup of your work off-site, for example, on a remote git repo, and keep your backup fresh.Completing in-lecture code excercies allow you to earn extra credits which can be used to top up your overall course grade.