Fall 2025
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 without getting bogged down? How do you ensure your UI is not janky? How do you correctly and efficiently update all aspects of your app? Have you built a mobile app that interacts with the device's camera, mic and speakers, GPS, and biometric sensors? Can you build a backend server that handles audio, image, and location data?

In EECS 398-001: Introduction to Asynchronous Reactive Programming, we use observable states with automated change propagation to reliably update your app. We use functions that work asynchronously without expensive operating system operations. We ingest streaming data as asynchronous flows and let components react to data changes efficiently. Programming assignments will assume mobile front ends.

In EECS 498-002: Mobile App Design and Development, you will work in a team of 5-7 students to build mobile apps that take full advantage of the device's capabilities. What features shall you include in your app? How good is your UI/UX design, really? We will adopt a data-driven approach to answer these and other design questions.

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. Note: Students who have taken EECS 441 Sections 3&4 cannot take either course for credit. Students cannot earn credits for **both** EECS 398-001 and EECS 498-002 (combined lectures).

Tutorials (optional)

Preliminaries:

 Projects (398 only)

 References