CS 246 – Objectives
At the end of the course, you will be able to:
Design, implement, test, and debug C++ programs to solve problems requiring hundreds of lines of code, making appropriate use of:
types, variables, arrays, strings, and dynamic memory
loops, conditionals, and other control structures
structures, unions, and enumerations
procedures and functions
the preprocessor
formatted and unformatted I/O (input/output)
classes, objects, overloading, and single inheritance
a subset of the STL (standard template library), including vector, list, and map
assertions and exceptions
basic software development tools, including makefiles, a shell, a revision control system, and a debugger
test suites for unit testing, white and black box testing
structured programming, incremental development
interface design, abstractions, information hiding, cohesion and coupling
a subset of UML (unified modelling language) to specify classes, objects and relationships between them
a selection of design patterns, including adapter and template.
Explain the following properties of the memory model used in C++, including their impact on time and space efficiency when designing code: bytes vs. words, memory as an array, run-time stack and stack frames, memory allocation on the heap vs. automatic allocation on the stack, pointers as memory addresses, and the representation of objects in memory.