Please enable JavaScript to view this page.

C++ Programming

CST 180

C++ Programming

CST 180

Course Description

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.

Objectives:

  • 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.

Objectives:

  • 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.

Objectives:

  • 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.

Objectives:

  • 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.

Objectives:

  • 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.

Objectives:

  • 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.

Objectives:

  • 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.

Objectives:

  • 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.