Agenda#

Week 01 - Introduction#

Introduction to the course material! Setup scaffolding for a software project.

Goals

  • Your main goal this week should be to meet people & form project teams.
  • Once that’s done, you can move on to setting up your GitLab project.

Due This Week

  • Nothing needs to be submitted in week 01.

Week 02 - Coding with AI#

Learn how to use AI for all stages of your project, and how to apply a “specification-first” approach in your project.

Goals

  • Once you have a team, brainstorm ideas and choose a project.
  • Document your project and tasks in your GitLab project.
  • Lectures

    • Requirements - slides, video
    • Coding with AI - slides, video
    • Documentation (optional) - slides, video
    • Design Thinking (optional) - slides, video
  • How To…

Due


Week 03 - Kotlin Programming#

Learn about the Kotlin programming language and ecosystem.

Goals

  • Get the Kotlin toolchain installed for your team.
  • Setup a Kotlin project for your target platform. Get a basic build working.

Due

  • Demo 1 is due.
    • See demo schedule for date/time.
    • We will grade what’s present in your GitLab project after your presentation.
  • Quiz 2 is due by Friday @ 11:59 PM.

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.
  • Lectures

    • Architecture - slides, video
    • Dependencies & DI - slides, video
  • How To…

Due

Week 05 - Design Patterns#

Learn helpful implemenation patterns. Also, feature branching.

Goals

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

    • Design Patterns - slides, video
    • Version Control (Git) - slides, video
  • How To…

Due


Week 06 - Testing#

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.
  • Lectures

  • How To…

    • Prepare for Demo - web

Due

  • Demo 2 is due.
    • See demo schedule for date/time.
    • We will grade what’s present in your GitLab project after your presentation.
  • Quiz 5 is due by Friday @ 11:59 PM.

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.
  • Lectures

    • User Interfaces - slides, video
    • Desktop applications - slides, video
  • How To…

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, video
  • 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.
  • Lectures

    • Concurrency - slides, video
    • Flows (optional) - slides, video
  • How To…

Due

  • Demo 3 is due.
    • See demo schedule for date/time.
    • We will grade what’s present in your GitLab project after your presentation.
  • Quiz 8 is due by Friday @ 11:59 PM.

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…

    • TBD

Due


Week 11 - Web Services#

How to access web services.

Goals

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

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

    • TBD

Due


Week 12 - Wrapup#

This is the last week of classes! The goal this week is to finish everything.

Goals

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

  • How To…

    • Prepare your final submission - web ↗

Due

  • Demo 4 this week! See demo schedule for date/time.
    • We will grade what’s present in your GitLab project after your presentation.

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