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! slides
- Review online resources. course website
- Teamwork. slides
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 opportunity to meet people! If you have a team, you can work on the tasks above.
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.
- Determining requirements for a project.
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
Logistics
- Team formation - current roster; extended demo times
- Setup Your Project - check requirements before you submit!
Kotlin
- Kotlin 1: Introduction to Kotlin
- Kotlin 2: Object-Oriented Kotlin
- Kotlin 3: Functional Kotlin
- Kotlin 4: Ideomatic Kotlin
Fri Lab
- Installing the development toolchain
- Git branching and managing feature branches
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
- Build systems & Gradle
- 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: User interfaces
Writing tests. Building graphical user interfaces.
Wed Lecture
Fri Lab
- Adding unit tests to your project
- courses demo
- Pair programming for fun and profit.
Quiz 2 is due by 6:00 PM
Week 06: Platforms
How to build desktop and mobile applications.
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: Concurrency
How to run tasks concurrently, and in parallel.
Wed Lecture (75)
- Refactoring (21)
- Concurrency (54)
- Error-Handling - exceptions, exceptions and error-handling w. coroutines
- Flow, Stateflow, SharedFlow
Fri Lab
- Refactoring your project to support concurrency.
Quiz 3 is due by 6:00 PM
Week 09: SQL databases
Designing and using a SQL database for local data.
Wed Lecture (95)
- 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 (28)
Fri Lab
- Building a multi-service application. Dependency injection & mock testing.
Quiz 4 is due by 6:00 PM
Week 11: Packaging
How to package and/or containerize your application for deployment.
Wed Lecture
- Building installers
- Containerization & Docker
Fri Lab
- Sprint 3 demo is due in-class, see demo times
Sprint 3 source code must be submitted 6:00 PM
Week 12: Wrapup
Reviewing submission guidlines.
Wed Lecture
- Review of final submission guidelines
- Post questions on Piazza and we’ll address them in-class.
Fri Lab
- Q&A
Quiz 5 is due by 6:00 PM
Week 13: Wrapup
Final Q&A.
Wed Lecture
- No formal lecture.
- Jeff will answer in-class Q&A.
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