# 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. Our goal is to use best-practices to design and build a commercial-quality, robust, full-featured application, using a modern technology stack.

SDLC
SDLC

# Sections

Classes are offered at the following times. You must be enrolled in the corresponding sections.

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)

# Course Requirements

This course is restricted to Computer Science students. 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 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 on this site.
  • Quizzes and grade information on our Learn site.
  • A Piazza forum where you can ask questions to course staff.

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

  • This computer should be capable of running our toolchain.
  • You will require administrative access on this computer to install and update these 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.