Agenda#

Week 01 - Introduction#

Introduction to the course material. How to manage a software project.

Goals

  • Your main goal this week should be to meet people & form project teams. Once that’s done, you can start thinking about project ideas!

Due This Week

  • Nothing needs to be submitted.

Week 02 - Coding with AI#

Defining product requirements. How to use AI effectively!

Goals

  • Setup GitLab, and start documenting your product requirements.

Due


Week 03 - Kotlin Programming#

Learn about the Kotlin programming language and ecosystem.

Goals

  • Document your project proposal and log tasks in GitLab prior to your demo.
  • Get your personal toolchain running, so you can compile code.

Due


Week 04 - Architecture#

Learn about software design at the macro and micro levels.

Goals:

  • Learn how to structure your application to support flexibility and testability.
  • Add common base classes and structure to your project.
  • Kickoff your sprint! Plan which features to address.

Due

Week 05 - Design Patterns#

Learn helpful implementation patterns. Also, feature branching.

Goals

  • Select suitable design patterns that you will use.
  • Create feature branches for your current tasks.

Due


Week 06 - Testing#

How to approach testing, and what tests are critical.

Goals

  • Add unit tests to your existing codebase, and ensure adequate coverage.
  • From this point forward, you are expected to develop and maintain unit tests.

Due


Week 07 - User Interfaces#

The structure of a user-interface, and integrating it into a larger application.

Goals

  • Learn how the Compose framework works.
  • Get a basic user interface running for your desktop application.

Due


Week 08 - Mobile Applications#

Mobile development, including Android architecture.

Goals

  • Expand your project to include Android and/or iOS targets.
  • Migrate code to common so that you are actively supporting multiple targets.
  • Lectures

    • Android Applications - slides, video
    • KMP & Compose Multiplatform - slides, video
    • Design Systems (optional) - slides
  • How To…

Due


Week 09 - Concurrency#

Execution models, and learn how to leverage concurrency and Kotlin flows.

Goals

  • Introduce concurrency where makes sense for your application e.g., login screens, database queries.

Due


Week 10 - Databases#

How to use a SQL database for data storage.

Goals

  • Add your database, using the architectural patterns discussed.
  • Add mocks to support testing your database classes.
  • Get basic queries working with live data.
  • Lectures

  • How To…

Due


Week 11 - Web Services#

How to access web services.

Goals

  • Add a web service to your project, if applicable.
  • Lectures

    • Web Services - slides, video
    • Clean Architecture (optional) - slides
  • How To…

    • TBD

Due


Week 12 - AI Agents#

Building custom AI agents to interact with your application.

Goals

  • Finish your features and finalize your software release for Demo 4.
  • Lectures

  • How To…

    • Prepare your final submission - web ↗

Due


Week 13 - Final Submission#

Goal

  • Hand-in your final project submission, including documentation. This is outside of class, so be careful with the dates.
  • Lectures
    • Classes end Tues Dec 8. No scheduled classes this week.

Due