Transfers ToCSUDescriptionThis course covers major programming concepts including theory, applications, and object-oriented programming, primarily in C++. Variables and basic data types, operators, bitwise arithmetic, control structures, input and output, arrays, multidimensional arrays, strings, an introduction to the Standard Template Library, functions, an introduction to recursion, structures, pointers, references, dynamic memory management, file handling, casting operators, namespaces, operator overloading, preprocessor directives, and exception handling are discussed in detail. Classes and object-oriented programming, including constructors and destructors, inheritance, virtual functions, polymorphism, interfaces through abstract base classes, and data encapsulation and modeling principles are also covered in detail. Differences between the Java language and C++ are discussed. Commenting of code and debugging are emphasized throughout the course. Examples from mathematics are included as well as a significant project requiring object-oriented design. Students gain practice in utilizing outside code via practice with a graphics API.