Overview

The archived course outline is available on the course outline website.

Description

ℹ️

CS 346: Application Development

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.

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 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.

Course Progression

CS 346 is designed as a direct successor to CS 246, and an informal pre-cursor to CS 446. It is also one of the courses that can be applied towards the Software Engineering specialization.

Course progression

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 automated tests as an essential part of the development process.
  • Apply debugging and profiling techniques as required during development.