Teaching
ECE1778
Creative Applications for Mobile Devices
Fall 2025 · Upcoming: Winter 2027
ECE1778 is a graduate-level course in modern cross-platform mobile application development. Students build applications for iOS and Android using React Native, Expo, and TypeScript while developing experience with interface design, navigation, state management, persistence, notifications, backend integration, authentication, and deployment.
The course follows a progressive application-development sequence. Students move from React Native fundamentals and interface design to navigation, shared state, persistence, external services, and deployment. Four connected assignments allow them to evolve the same application as its structure and requirements become more sophisticated, before a collaborative project asks them to design and build a mobile application of their own.
My design focus is to give students experience with modern, professionally relevant mobile-development tools while creating a clear path from guided technical practice to independent product development. The common curriculum introduces recurring application patterns and development practices; the project then gives teams increasing responsibility for deciding what to build, which technologies and advanced features are appropriate, how the application should be structured, and how to communicate those decisions.
Course Design Principles
These principles shaped how I designed my first offering and provide the foundation for future revisions of the course.
Use a Modern Cross-Platform Stack
The course is built around React Native, Expo, and TypeScript, giving students experience with a contemporary development stack that supports the path from application development to production builds and deployment.
Build Understanding Through a Growing Application
Four connected assignments progressively extend the same application, allowing students to develop a shared technical foundation while encountering navigation, shared state, centralized state management, persistence, and other application patterns in response to increasingly complex requirements.
Move from Guided Practice to Independent Development
After establishing a common foundation through structured assignments, the team project gives students greater responsibility for defining an application, selecting appropriate features and technologies, integrating its components, and making their own implementation and design decisions.
Include Communication as Part of the Project
Project presentations ask teams not only to demonstrate what they built, but also to explain the application, its major technical and design decisions, and the choices that shaped the final product.
How I Designed My First Offering
I approached the course as a progression from a shared technical foundation toward increasingly independent mobile application design, with each stage intended to prepare students for the next.
Fall 2025
Creating a Technical Path for Creative Mobile Development
ECE1778 was originally developed and taught by Prof. Jonathan Rose as an interdisciplinary graduate course. When I took over the course in Fall 2025, I redesigned my offering around modern cross-platform mobile development for ECE graduate students. My goal was to create a coherent technical path from familiar React concepts to complete mobile applications while preserving the open-ended and creative character of the course.
What I was trying to address
I wanted students to learn mobile development through a stack that reflects contemporary professional practice while still allowing them to build substantial applications across both major mobile platforms within a single term.
How I designed for it
I centered the course on React Native, Expo, and TypeScript. This gave students a modern cross-platform development environment spanning application development, native device capabilities, testing, and production builds for iOS and Android.
What I was trying to address
Students needed a progression that connected familiar React ideas to the additional structural and development concerns introduced by mobile applications.
How I designed for it
I organized the course from a React refresher and React Native fundamentals through UI design, navigation, shared state, persistence, notifications, backend integration, authentication, and deployment.
What I was trying to address
Concepts such as navigation, shared state, and persistence make more sense when students encounter the application pressures that create a need for them rather than learning each mechanism as an isolated API.
How I designed for it
I designed four connected assignments around the same Fitness Tracker App. Students first built the application with local component state, then added multi-screen navigation, moved application state into shared Context, and finally adopted Redux Toolkit and persistent storage as the system became more sophisticated.
What I was trying to address
Students needed substantial guidance while learning an unfamiliar mobile-development environment, but the course also needed to prepare them to take greater ownership of a larger collaborative application.
How I designed for it
Assignments used detailed specifications, starter code, and automated grading to establish a common technical foundation. The team project then shifted more responsibility to students for defining the application, selecting appropriate features and technologies, integrating its components, making implementation and design decisions, and managing development collaboratively through GitHub.
What I was trying to address
A common curriculum could establish core competencies, but requiring every project to implement the same advanced features would unnecessarily constrain the creative and technical possibilities of the course.
How I designed for it
The project combined shared technical expectations with freedom to explore features appropriate to each application, including backend services, authentication, notifications, real-time behavior, device capabilities, and other advanced mobile functionality.
What I was trying to address
Completing a mobile application involves more than implementing features; students also need experience preparing a product for testing, distribution, and communication to others.
How I designed for it
The course included deployment with Expo EAS Build and concluded with project presentations in which teams demonstrated their applications and explained their major technical and design decisions to the class.
The first offering established a course structure that moves from a shared technical foundation toward greater student ownership in collaborative application development. The common progression gives students experience with the building blocks and recurring structural patterns of modern mobile apps, while the team project gives them room to decide what kind of product to build, which technologies best support it, how its components should fit together, and how to manage the development process collaboratively.