Dec 26, 2024  
2024-2025 Course Catalog 
    
2024-2025 Course 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  with a minimum grade of C- 
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 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. Write a class using the Rule of 5 by implementing a destructor and copy, move, copy assignment and move assignment constructors
    4. Discuss the concepts encapsulation, abstraction, inheritance, information hiding and run-time polymorphism
    5. Use operator overloading
    6. Show the advantages and disadvantages of multiple inheritance
    7. Implement function and class templateS
  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. Show the consequences of unsafe use of dynamic memory
    4. Utilize smart pointers to manage dynamic memory
    5. Discuss the concept of RAII and how it applies to safe memory management
    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. Use smart pointers to provide polymorphism when using containers
    5. Apply STL algorithms to solve a problem
    6. 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)