# CS 346 Application Development

Modern software is often too complex for a single person to design and build on their own. By working together, we can pool everyone’s talents to tackle much larger, more complex projects. In this course, you and your project team will use best-practices to design and build a commercial-quality, robust, full-featured application, using a modern technology stack.

Software Development Lifecycle (SDLC)
Software Development Lifecycle (SDLC)

# Class Sections

Classes are offered at the following times. You must be enrolled in corresponding sections i.e. all mornings, or all afternoons.

Sections Wed Classes Fri Classes
LEC 001 & LAB 101 10:30a - 12:20p (TBD) 10:30a - 12:20p (TBD)
LEC 002 & LAB 102 2:30p - 4:20p (TBD) 2:30p - 4:20p (TBD)

# Prerequisites

This course is restricted to Computer Science students only, and you must have completed CS 246. Prior to taking this course, 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. basic I/O 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

Learning objectives
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 iterative process to manage the design, development and testing of software projects.
  • Design and develop different styles of application software in Kotlin, using 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.

# Resources

Required course materials are all online and include:

  • Lecture slides and sample code in our public GitLab repository.
  • Expanded course notes and course information from this site.
  • Quizzes and grade information from our Learn site.
  • A Piazza forum where you can ask questions to course staff.

Everyone enrolled in this course will require access to a computer to work on the course project.

  • This computer should be capable of running our required software stack.
  • You will require administrative access on this computer to install and update your development tools.

Unfortunately, you will not be able to use lab machines for this course, since they do not permit software to be installed or updated. Please check your system requirements early in the course, and ask the instructor if you have any concerns.