Students must be able to:
- Define software systems and software engineering.
- Understand the cost error detection in the development process.
- Understand the relationship between system development cost, the number of system functions/components and interfacing/integration.
- Know how to view a data type from the application, abstract and implementation viewpoints.
- Understand the concepts of encapsulation and information hiding for abstract data types.
- Understand the graphic symbols used in a structure diagram representing a program design.
- Know how to identify structure chart diagrams that corresponds to C++ code.
- Know how to identify C++ code that corresponds to structure chart diagrams.
- Distinguish between and identify static / dynamic memory allocation and accesses.
- Declare and define C++ pointer varaibles and types.
- Apply the C++ dereference and address operators.
- Use the NULL address to initialize pointers and check for illegal NULL dereferences.
- Understand pointer arithmetic and pointer expressions.
- Identify valid and invalid pointer expressions and pointer arithmetic.
- Match pointer expressions to equivalent array expressions and vice-versa.
- Understand the graphical representation of basic C++ pointer code.
- Correctly distingush the type of a pointer variable and pointer expression.
- Be able to allocate and de-allocate dynamic memory using pointers and the C++ new and delete operators.
- Identify C++ code that contains alias pointers.
- Identify C++ code that contains illegal memory address references.
- Identify C++ code that contains undefined pointer dereferences.
- Identify C++ code that contains dangling pointers.
- Identify C++ code that contains dynamic memory leaks (garbage).
- Determine exact memory addresses from given exact pointer references/addresses/expressions.
- Know how to correctly pass pointer parameter variables using the C++ const modifier to limit access.
- Identify incorrect pointer parameter passing and determine the correct C++ const pointer paramter mechanism to correct invalid compilation errors.
- Identify valid and invalid accesses through const pointers, pointers to constant targets, const pointers to const targets, value passed pointers and referenced passed pointers.
- Understand the operation of the C++ class construct.
- Identify class data and function members.
- Identify class public and private members.
- Instantiate class objects or arrays of objects.
- Know when class constructor and destructor functions are automatically invoked.
- Understand the difference between default and parameterized constructors.
- Identify compilation errors in ill-formed classes.
- Extend a class with non-class functions.
- Correctly pass class object parameters.
- Identify overloaded class function invocation.
- Know how the use of initialized arguments effects constructor composition and invocation.
- Determine valid and invalid object operations.
- Know when member functions should be declared as const member functions.
- Understand how to invoke class member functions.
- Overload C++ assignment, boolean/logical, and arithmetic language operators in a class as appropriate and necessary for logical class operation and completeness.
- Compose and identify inline class member functions.
- Categorize class member functions acccording to the N. Dale function member taxonomy.
- Identify valid and invalid class member accesses.
- Understand how encapsulation and information hiding are achieved through the class construct.