May 26, 2022  
2020-2021 Course Catalog 
    
2020-2021 Course Catalog [ARCHIVED CATALOG]

Add to Portfolio (opens a new window)

CIS 164 - Advanced C++

Credits: 3
Lecture Hours: 2
Lab Hours: 2
Practicum Hours: 0
Work Experience: 0
Course Type: Voc/Tech
This course is a continuation of C++. Additional concepts of object-oriented programming will be applied in a variety of programming exercises.
Prerequisite: CIS 161  
Competencies
 

  1. Evaluate the build process
    1. Describe the purpose of the preprocessor, compiler, assembler, linker and loader
    2. Interpret the use of macros in a program
    3. Demonstrate appropriate code organization in multi-class programs
  2. Examine file input and output (I/O)
    1. Use streams to read from/write to a file line-by-line
    2. Demonstrate the use of regular expressions in parsing/validating files
    3. Develop an application that uses text formatted CSV files
    4. Illustrate the difference between sequential and random access
    5. Demonstrate serialization/deserialization to/from a binary file
  3. Investigate advanced topics in OOP
    1. Demonstrate the use of runtime polymorphism
    2. Illustrate why virtual functions and classes are required to support runtime polymorphism
    3. Use operator overloading
    4. Show the advantages and disadvantages of multiple inheritance
    5. Implement function and class templates
    6. Design an application that uses the aggregation pattern
  4. Analyze memory management
    1. Illustrate memory layout and identify where different types of data are stored in memory
    2. Demonstrate appropriate and correct use of new, delete and delete[]
    3. Apply overloading of new and delete operators to manage dynamic memory
    4. Show the consequences of unsafe use of dynamic memory
    5. Utilize smart pointers to manage dynamic memory
    6. Identify where copy constructors and destructors are called
    7. Illustrate the difference between deep copies and shallow copies
    8. Discuss examples of memory leaks
  5. Evaluate the Standard Template Library (STL)
    1. Describe sequence and associative containers
    2. Design a program that uses an iterator to visit the elements of a list
    3. Demonstrate inserting and retrieving elements from a map
    4. Apply STL algorithms to solve a problem
    5. Identify the appropriate STL container or algorithm to solve a problem
  6. Illustrate GUI development
    1. Develop an application using widgets
    2. Demonstrate event handling
  7. Incorporate database connectivity
    1. Describe basic relational database terminology
    2. Query a database
  8. Analyze network connectivity
    1. Describe basic networking terminology
    2. Illustrate client/server communication
  9. Incorporate multi-threaded processing
    1. Discuss the fundamentals of multi-threading
    2. Modify a single-threaded program to use multiple threads
  10. Incorporate good programming practices
    1. Implement exception handling to throw and catch exceptions
    2. Use a debugger to set breakpoints and step through program execution
    3. Develop unit tests
    4. Describe current topics in security and common vulnerabilities (e.g., bufferoverflow)
    5. Discuss the use of a profiler to optimize performance
    6. Utilize version control for development
    7. Discuss Agile and other development approaches

Competencies Revised Date: 2020



Add to Portfolio (opens a new window)