Agenda
What’s covered each week in-class, including links to slides and course content.
Week 01: Introduction
Course overview; how to form project teams and setup your project.
Wed Lecture
- Welcome to the course and what to expect! (20)
- Teamwork and how to work together (23)
You will have time at the end of class to meet people and form teams.
Fri Lab
- Form a Team to register your team
- Setup Project to create your GitLab project space, and add initial content
- Documentation practices that you will use through the course
This is another chance to meet people! If you have a team, you can work on these tasks.
n/a
Week 02: Requirements
Structure of a software project; defining and documenting requirements.
Wed Lecture
- Course registration & team formation - checking in
- Software engineering and running a software project. (47)
- Determining requirements for a project. (38)
Fri Lab
- Review the course project requirements in more detail.
- Review the project proposal milestone and discuss grading.
- How to track your project in GitLab.
- How to manage individual work and what to track.
Setup Your Project is due by 6:00 PM
Week 03: Learning Kotlin
How to write programs in Kotlin! Installing the development toolchain.
Wed Lecture
- Team Formation - complete your project setup ASAP
- Kotlin 1: Introduction to Kotlin (40)
- Kotlin 2: Object-Oriented Kotlin (20)
- Kotlin 3: Functional Kotlin (20)
Fri Lab
- Installing the development toolchain
- IDE installation; JDK version and installation; Plugins
- Opening sample projects; Running and debugging
- Git branching and managing feature branches
- Demonstrate the GitLab workflow
Quiz 1 is due by 6:00 PM
Week 04: Architecture
How to structure programs to meet requirements. Build systems and dependencies.
Wed Lecture
- Software architecture (38)
- Build systems & Gradle (28)
- Creating a Gradle project for your team
- Managing project dependencies e.g., libraries and plugins, shared projects.
Fri Lab
- Project proposal presentation is due in-class, see demo times
Project proposal submission is due by 6:00 PM
Week 05: Testing
Writing tests and test-driven development.
Wed Lecture
- Testing (25)
- Sprint 1 Kickoff (6)
Fri Lab
- Pair programming for fun and profit.
- mm-console demo
Quiz 2 is due by 6:00 PM
Week 06: User Interfaces
Building graphical user interfaces with Compose.
Wed Lecture
Fri Lab
- Sprint 1 demo is due in-class, see demo times
Sprint 1 source code must be submitted by 6:00 PM
Week 07: Reading week
Wed Lecture
- No lecture!
Fri Lab
- No lab. Nothing is due. Enjoy the week!

Week 08: Platforms
Desktop and Android functionality.
Wed Lecture
Fri Lab
- mm-desktop demo
- mm-android demo
Quiz 3 is due by 6:00 PM
Week 09: SQL databases
Designing and using a SQL database for local data.
Wed Lecture
- Data representation (25)
- Databases (70)
Fri Lab
- Sprint 2 demo is due in-class, see demo times
Sprint 2 source code must be submitted by 6:00 PM
Week 10: Web services
How to pull and integrate data from a remote web service.
Wed Lecture
- Networking: TCP/IP, HTTP, HTTPS
- Web services (27)
- Refactoring (21)
Fri Lab
- Building a multi-service application. Dependency injection & mock testing.
Quiz 4 is due by 6:00 PM
Week 11: Concurrency
How to write concurrent code.
Wed Lecture
- Concurrency (54)
- Error-Handling - exceptions, exceptions and error-handling w. coroutines
- Flow, Stateflow, SharedFlow
Fri Lab
- Sprint 3 demo is due in-class, see demo times
Sprint 3 source code must be submitted 6:00 PM
Week 12: Packaging
How to package and/or containerize your application for deployment.
Wed Lecture
- Containerization
Fri Lab
- Q&A
Quiz 5 is due by 6:00 PM
Week 13: Wrapup
Final Q&A.
Wed Lecture
- Review of final submission guidelines
- Post questions on Piazza and we’ll address them in-class.
- No formal lecture.
Fri Lab
- Sprint 4 demo is due in-class, see demo times
Sprint 4 source code must be submitted by 6:00 PM
Week 14: Final Release
Tues is the last day of classes, so there are no lectures or labs this week.
Your final software release is due by Tues Dec 2 @ 6:00 PM