CS 398: Application Development

This course is being offered as CS 398: Topics in Computer Science in Winter 2022. It will be added to the undergraduate calendar as a regular course, CS 346: Application Development, starting in Fall 2022.

This website will be under near-constant revision leading up to the start of class. If you have any questions or comments about the course, please contact me and I’d be happy to address them!

Course Description

This course explores knowledge, skills and strategies required to build complex full-stack applications. Using an iterative development methodology, students will work in project teams to design, develop, and test applications and services. Standard development tools and approaches will be used to ensure code quality and performance at every step of the development cycle.

Prereq: CS 246; Computer Science students only


You must have completed CS 246 prior to taking this course, and you should be able to:

  • Design, code and debug small C++ programs using standard tools (e.g. GCC on Unix).
  • Write effective unit tests for these programs (e.g. informal I/O tests, unit tests).
  • Demonstrate programming proficiency in C++, which includes: understanding of fundamental OO concepts (e.g. abstraction, encapsulation; knowing how to use classes, objects, method overloading, and single inheritance; polymorphism; understanding how to use assertions, and how to manage exceptions.

Learning Objectives

On successful completion of the course, students will be able to:

  • Work effectively as a member of a software development team.
  • Use an interactive process to manage the design, development and testing of software projects.
  • Design and develop different styles of application software in Kotlin, using the appropriate architectural and design patterns.
  • Design services that can provide remote capabilities to your application.
  • Apply debugging and profiling techniques to address design and performance issues.
  • Produce unit and integration tests as part of the development process.

Successor Courses

This course is not a prerequisite for any other courses. However, you may find that the skills that you learn here, such as working on a team, managing a project, designing and building a complete application, are useful in a number of other programming and software engineering courses.

Related courses