CIS 33 — Software Architectures and Algorithms
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.