C++ ProgrammingCST 180
Prerequisite: CST 173 or CST 177 or permission of instructor. Uses the C++ language to solve software problems. Develops solutions to computing problems through algorithm design, development, implementation, and testing. Includes control structures, arrays, files, strings, pointers, and fundamental object-oriented programming. Credit may be earned in CST 180 or CST 181 but not both. (45-0)
Outcomes and Objectives
Design software solutions for a variety of problems.
- Create a logic plan to map design of a software solution.
- Read and interpret algorithms represented in pseudocode or flowchart form.
- Interpret requirements and specifications for a software problem to initiate accruate design of a computer program.
- Construct program code to implement program design specifications.
Demonstrate computer literacy skills to successfully use software development environments.
- Utilize an integrated development environment to create a project workspace.
- Enter and edit C++ source code using a text editor.
- Manage multiple project, data, and source code files.
- Use a compiler to check program diagnostics and correct syntax errors.
- Implement a software application on more than one operating system.
Apply basic structuring concepts of C++ to build working programs.
- Describe the basic program format and structure of a C++ program.
- Describe and accurately apply rules for variable and identifier naming in C++.
- Define and apply C++ primitive data types including the integer and floating point data type families.
- Describe results and potential side effects for using mixed data type operations.
- Effectively use and distinguish between variables and constants.
- Define the uses and value of global constants.
- Recognize usage of preprocessor directives and header files for required functionality.
- Implement user-friendly console input and output with C++ programs.
- Format program output using appropriate console formatting manipulators.
- Describe C++ arithmetic operators including operator precedence and associativity.
- Distinguish between operands and unary, binary, and tertiary operators.
- Apply C++ arithmetic operators to build and evaluate arithmetic expressions.
- Define issues with integer and floating-point division.
- Convert basic mathematical formulas to C++ arithmetic expressions.
- Utilize standard C++ function library including math and string functions.
- Define and utilize the C++ Boolean data type for logical operations.
- Describe C++ relational operators and use them to construct relational expressions.
- Describe C++ logical operators (AND, OR, NOT) including their truth tables.
- Apply C++ logical operators to construct compound logical expressions.
- Build selection statements with appropriate C++ if/else/switch constructs.
- Define the most appropriate use of while, do/while, and for loops.
- Build repetition statements with C++ to construct iterative algorithms.
- Define and apply the basic random number generation feature available in C++.
Design modular programming solutions.
- Implement programming problem sub-tasks into user-defined functions.
- Describe rules for C++ function implementation including the use of prototypes.
- Distinguish between void and value-return functions and correctly design functions using both.
- Distinguish between value and reference parameters and define the uses and restrictions of using both.
- Effectively pass value and reference parameters to and from functions.
- Distinguish between global and local variables and define variable scope.
- Define the value and purpose of separation of user-defined function specifications and implementations into multi-file projects.
- Implement functions using separate specification (.h) and implementation (.cpp) files.
Use data organization techniques.
- Allocate arrays and properly define index ranges for array processing.
- Describe the risks and precaurtions necessary for safe array processing.
- Process data elements of an array using looping algorithms.
- Describe use of arrays for basic list processing algorithms.
- Describe fundamental searching algorithms including the linear search and binary search.
- Describe and apply fundamental sorting algorithms.
- Desing and implement algorithms to process two-dimensional arrays using nested for-loops.
Build software solutions that apply input/output features.
- Open, read, process, and close a sequential text input file stream.
- Utilize loops to read and process the contents of a text file.
- Write program output to a text output file.
- Compare and contrast text files with binary files.
- Compare and contrast sequential access files with direct access files.
- Allocate pointer variables and access data using indirection.
- Perform basic pointer operations including assignment, address-of, and dereferencing.
- Pass pointers to and from functions.
- Apply C++ pointers for dynamic data allocation with appropriate use of keywords "new" and "delete."
- Desing and implement solutions using record structures.
- Correctly utilize a record structure including use of member selections of record fields.
- Pass record structures to and from functions.
- Allocate C++ character strings and manipulate strings using string character array processing.
- Utilize standard C++ string functions to assign, compare, and concatenate strings.
- Apply string functions and methods to solve character string manipulation problems.
Build software solutions that apply fundamental object-oriented programming concepts.
- Define and discuss the object-oriented approach to programming.
- Recognize specific terminology related to object-oriented programming.
- Compare and contrast between procedural and object-oriented programming paradigms.
- Define modularity and procedural abstraction.
- Describe the purpose of information hiding.
- Identify limitations of global variables.
- List advantages of encapsulation as related to object oriented programming.
- Discuss relationship of objects and classes.
- Design an abstract data type from specifications.
- Build a C++ class as an implementation of an abstract data type.
- Implement a C++ class including both specification and implementation files.
- Effectively apply a C++ class as data object for a specific problem.
Perform critical analysis to create C++ software solutions.
- Analyze alternative solutions to a given programming problem and select the best approach.
- Develop and implement a variety of testing strategies to verify correctness of C++ programs.
- Diagnose and debug syntax, run-time, linker, and logic errors to create a working and correct software solution.
- Document program source code for clarity and readability using accepted documentation standards including comments, indentation, and other techniques.
- Integrate and re-use previously working program code into new software development.
- Develop systematic test plans, create test cases and test data to verify program correctness.
- Execute tests and correct logic errors based on test results.
- Build user-friendly computer programs for a variety of real-world problems.