Computer Science consists of the design of software and the implementation of software designs. It incorporates study in Mathematica and Physics to enable the student to design models of systems that often cannot be directly measured or observed. This enables the creation of algorithms; an unambiguous specification of how to solve a class of problems. This skill is combined with instruction in implementation (coding), analysis of software designs, and use of a strongly typed programming language to create programs. These two distinct skill sets form the basis for continued study in Computer Science, Computer Engineering, or entry into the technology workforce as a software developer.

Software Architectures and Algorithms is the second transfer level course in the Computer Science major. Where the first course addressed control structures, objects, fundamentals of program design, and fundamentals implementation, this course introduces you to the existing Body of Knowledge (BOK) in data structures, algorithms, debugging, testing, and integration of your code with existing software frameworks. This combination of well understood data structures and well tested algorithms enables you to focus on placing the software you create into an architecture that supports correct operation and meets performance goals.

Design and development of large programs: Systematic data abstraction, strongly typed data and data structures, object declaration models, inheritance and polymorphism, information hiding, managed frameworks and libraries such as the Standard Template Library (STL), object life cycles and garbage collection, recursion, well-defined algorithms, collections and iterator abstraction, strategies for code re-use, testing, UML and software engineering principles.