Mar 28, 2024  
2018-2019 Course Catalog 
    
2018-2019 Course Catalog [ARCHIVED CATALOG]

Add to Portfolio (opens a new window)

CIS 164 - Advanced C++

Credits: 3
Lecture Hours: 3
Lab Hours: 0
Practicum Hours: 0
Work Experience: 0
Course Type: Voc/Tech
Review and extend the concepts of class hierarchies, encapsulation, inheritance and polymorphism. Explore class libraries, templates, streamable classes and exception handling. Develop a code for both DOS and Windows applications.
Prerequisite: CIS 161  
Competencies
  1. Demonstrate how to manage multi-file projects
    1. Discuss project organization to organize disk directories
    2. Introduce concepts of source controls
    3. Illustrate the use of source controls
  2. Examine the accessibility of members of classes
    1. Distinguish between private, public and protected members
    2. Examine the role of constructor, destructor, accessor and implementor functions
    3. Discuss copy constructors and the assignment operator
    4. Discuss pitfalls of generated default constructors
    5. Design a program that illustrates the use of protected members
    6. Design a program that passes arguments by reference while using the const modifier to protect the referenced variable
  3. Investigate function and operator overloading
    1. Create a program that uses the new and delete operators to allocate memory and free it up
    2. Show how new returns an address of dynamically allocated memory
    3. Use the pointer access operator (arrow operator) to exercise member functions indirectly
    4. Overload the new and delete operators to trap “out of memory errors.”
    5. Illustrate the difference between deep copies and shallow copies
    6. Discuss memory leaks: autopointer and a reference counter pointer class
  4. Review the concepts of inheritance to derive classes from one or more base classes.
    1. Examine the derivation of the stream classes
    2. Write a program that contains one or more user defined manipulators
    3. Illustrate the use of the fstream class for file input and output
    4. Review the advantages and pitfalls of multiple inheritance
  5. Demonstrate the use of polymorphism
    1. Write a program to illustrate polymorphism and the use of virtual functions
    2. State the purpose of pure virtual functions
    3. Discuss the differences between pure virtual inheritance and ?override? inheritance
    4. Design an “interface” class using pure virtual functions
  6. Investigate several examples of template classes
    1. Review basic template concepts
    2. Examine the standard container classes
    3. Examine the algorithm portion of the Standard Template Library (STL).
    4. Write a program using an algorithm to process a template container
  7. Understand the fundamental principles of performance enhancement
    1. Discuss the use of profilers to optimize performance
    2. Discuss when it is best to keep data in internal memory versus keeping it in external storage
    3. Demonstrate making a temporary copy of data or subset of the data to increase access speed
    4. Discuss advantages and disadvantages of using data compression when sending information over a network connection
    5. Discuss how system resources, such as RAM, ROM and CPU clock cycles, can affect performance
  8. Understand Unit Test Frameworks and how they are used
    1. Discuss how Unit test frameworks can contribute to almost every stage of software development, including software architecture and design, code implementation and debugging, performance optimization, and quality assurance
    2. Discuss common patterns used when writing unit tests
    3. Examine a simple unit test framework and discuss its components
  9. Examine database connectivity issues
    1. Demonstrate the use of SQL to select and update data
    2. Write an application that connects to a database to read and write data
  10. Understand the complexity of using multiple threads in a C++ application
    1. Discuss the fundamentals of threads, used to write more efficient and capable programs
    2. Modify a single-threaded program to use multiple threads



Add to Portfolio (opens a new window)