Syllabus
The course outline is also published on outline.uwaterloo.ca.
Prerequisites
This course is restricted to Computer Science students, and you must have successfully completed CS 246 Object-Oriented Programming before taking this course. You should be able to:
- Design, code and debug small C++ programs using standard tools. e.g. GCC and GDB.
- Write effective unit tests for these programs. e.g. checking for a range of invalid conditions.
- Demonstrate programming proficiency in C++, which includes:
- understanding of fundamental OO concepts. e.g. abstraction, encapsulation
- using classes, objects, method overloading, and single inheritance; polymorphism
- understanding how to use assertions, and
- knowing how to manage exceptions.
You must be enrolled in one of these programs: H-BBA & BCS Double Degree, H-Computer Science (BCS), H-Computer Science (BMath), JH-Computer Science (BCS), JH-Computer Science (BMath), H-Computing & Financial Management, H-Data Science (BCS), or H-Software Engineering.
Learning Objectives
This course includes a mix of lectures, demos and project activities. The course project is a significant element of the course. On successful completion of the course, students will be able to:
- Work effectively as a member of a software development team.
- Use an iterative process to manage the design, development and testing of software projects.
- Design and develop different styles of application software in Kotlin, with appropriate architectural choices.
- Include online and offline capabilities in your application, leveraging local and remote storage.
- Design services that can provide remote capabilities to your application.
- Produce unit and integration tests as an essential part of the development process.
- Apply debugging and profiling techniques as required during development.
Required Resources
There is no required textbook for this course. All required course materials, including lecture slides, are freely available on the course website.
Computer Specifications
To participate in coding and other project activities, each person on your team requires a capable and relatively modern computer. You must have administrative rights on this machine, which disqualifies the use of lab computers. A notebook computer is recommended so that you can work on your project in-class.
Recommended minimum specifications
- Windows, macOS or Linux
- 8 GB of RAM or more
- 75 GB of free drive space
Online Resources
We use the following online websites.
![]() |
Learn Team registration and quizzes. Grades are also recorded here. |
![]() |
Piazza Forum software. Course announcements, chat, ask questions. |
![]() |
GitLab Store your source code and other project materials. |


