Skip to content

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

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:

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 Learn
Team registration and quizzes. Grades are also recorded here.
Piazza
Piazza
Forum software. Course announcements, chat, ask questions.
GitLab
GitLab
Store your source code and other project materials.