Lecture plans
Week-by-week lecture plans, with links to course slides and notes.
Week 01 - Introduction, Design thinking
Welcome to the course! We have a lot of material to cover in the first few weeks so it’s important that you attend class. Please email the instructor or post on Piazza if you have questions.
Lectures
Introduction
Project topics
- Requirements - notes
- Teamwork - notes, slides (team contract and team roles only)
- Finding a team - notes
Software process
Project goals
Your project goals this week are focused on finding a project team!
- Meet people in-class; Jeff will provide time at the end of lectures.
- Search for teammates in this Piazza post.
- Form a project team this week.
- Review the requirements with your team and start brainstorming project ideas.
- Quiz 1 opens this week, covering all Week 01 content. It will be available in Learn starting Friday @ 6:00 PM, and you have one week to complete it. The deadline to submit it is Fri Jan 17 @ 6:00 PM.
Week 02 - GitLab, Kotlin
How to setup your GitLab project. Getting started with Kotlin!
Lectures
GitLab & project setup
Kotlin language
- Toolchain setup - notes, slides
- Introduction to Kotlin - notes, slides
- Object-oriented programming - notes, slides
- Functional programming - notes, slides
Project goals
You should complete your project setup. This is due Friday.
Once that is done, you should start working on your project proposal. This is the first part of the Design Thinking process, and involved identifying and interviewing users, creating personas and extracting user stories.
- Submit your project setup.
- Start working on your project proposal. Start early!
- Quiz 1 closes this week. Make sure it’s submitted before Fri @ 6:00 pm.
- Quiz 2 opens Friday @ 6:00 pm and remains open for a week.
Week 03 - Gradle, Architecture & Design
How build systems work and how to configure Gradle to build your project. How your application should be structured; benefits of “good design”.
Lectures
Build systems
- Gradle - notes, slides
- Demo - open a project in the GitLab public repo to make sure that Gradle works!
Architecture & design
Project goals
Review project setup feedback in Learn. Things to watch out for:
- Projects should open to the README.md file. It’s supposed to be the landing page and act as a TOC for other documents.
- Project documentation content should be stored in Wiki pages. If you need images, attach them directly to the document. Please don’t attach external files as links to Wiki pages e.g., Word documents.
Submit your project proposal. This is due Friday.
Start working on your design proposal! This continues from your project proposal and provides details on your proposed solution, including low-fidelity prototypes of your screens.
- Submit your project proposal by Friday @ 6:00 pm.
- Quiz 2 closes this week. Make sure it’s submitted before Fri @ 6:00 pm.
- Quiz 3 opens Friday @ 6:00 pm and remains open for a week.
Week 04 - User interfaces, Applications
How to build user interfaces for desktop and mobile applications using Compose.
Lectures
User interfaces
Applications
Project goals
Review project proposal feedback. TAs have finished grading and will have provided feedback that you should consider.
Submit your design proposal, which is due Friday.
- Make sure to address feedback from the project proposal.
- You will have some time in-class to work on this.
(Optional) Prepare for project kickoff in Week 05!
- Create issues in GitLab for each of your requirements.
- At the start of Week 05, you will plan the release. This includes collectively making decisions on what to implement for the upcoming iteration, and assigning work (i.e., issues) to team members.
- Submit your design proposal by Friday @ 6:00 pm.
- Quiz 3 closes this week. Make sure it’s submitted before Fri @ 6:00 pm.
- Quiz 4 opens Friday @ 6:00 pm and remains open for a week.
Week 05 - Unit testing, Project kickoff
How to add unit tests to your project; planning for Demo 1.
Lectures
Development topics
Project goals
This is the kickoff for your first iteration! You will choose which features to work on for the next two weeks, and demo these completed features to your TA on Fri Feb 14 (see the team schedule for details).
Project kickoff - slides
Phases of each iteration
Live Coding
Friday is an open class to work on your project with your team. i.e. no planned lectures. Jeff will be in class to help if you need it! When not answering questions, he’ll be live coding changes to his courses project. Plans for today:
- Migrating API keys into a settings class and a local configuration file.
- Adding regex support to the front-end.
- Automatic database caching of historical data.
Here’s another sample: my TODO application from last term. It demonstrates how to setup the architecture.
- Quiz 4 closes this week. Make sure it’s submitted before Fri @ 6:00 pm.
- Quiz 5 opens Friday @ 6:00 pm and remains open for a week.
Week 06 - Databases
How and why to use relational (and document) databases.
Lectures
Development topics
- Databases - notes, slides
- Demo: courses application - repository
Project goals
Friday is your Demo 1 deliverable!
- Demos are all done during class time.
- See the online schedule for your team’s exact time, and plan to be here 5 mins early.
- Follow the project iteration guidelines:
- There are explicit steps to follow.
- You need to have a software release built, and you should plan on demoing your application from one machine.
- Everyone on the team must attend the demo in-person (unless you have coordinated with me ahead-of-time).