Syllabus#
Introduction to full-stack application design and development. Students will work in project teams to design and build complete, working applications and services using standard tools. Topics include best-practices in design, development, testing, and deployment.
The course outline is also published on outline.uwaterloo.ca.
Prerequisites#
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 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 also 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.
The use of Generative AI is allowed but not required in this course (see Policies for details). If you choose to use it, you may incur an additional cost of approximately $20 CDN per month, depending on which model you choose to use.
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 & tests. Grades are recorded here. |
![]() |
Piazza Forum software. Course announcements, ask questions. |
![]() |
GitLab Store your project materials here. |


