Syllabus#
The application of software engineering practices to full-stack application design and development. Students will work in project teams to design and build complete, working applications 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 330 Management Information Systems before taking this course. The key prerequisite before CS 330 is an imperative programming course, i.e. CS 106 or CS 116. We will build on the programming skills you learned then, in CS 430. We will also teach you about project management.
Note, CS 430 is not open to CS Major students.
Learning Objectives#
This course includes a mix of lectures, demos and project activities. The course project is the major element of the course. On successful completion of the course, students will be able to:
- Engage and collaborate with software development team members to solve problems.
- Manage the design, development, and testing of software projects using iterative processes.
- Identify and assess designs using principled architectural decision-making practices.
- Design and develop different styles of application software in standard tools, e.g. TypeScript with Preact.
- Produce automated 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 not allowed in this offering (see Policies for details).
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 hard 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. |


