|  | Oct 31, 2025 |  |  | 
	     
			
		  	|  | 
              
                | CIS 164 - Advanced C++ Credits: 3Lecture 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
 
 
	Evaluate the build process
	
		Describe the purpose of the preprocessor, compiler, assembler, linker and loaderInterpret the use of macros in a programDemonstrate appropriate code organization in multi-class programsExamine file input and output (I/O)
	
		Use streams to read from/write to a file line-by-lineDemonstrate the use of regular expressions in parsing/validating filesDevelop an application that uses text formatted CSV filesIllustrate the difference between sequential and random accessDemonstrate serialization/deserialization to/from a binary fileInvestigate advanced topics in OOP
	
		Demonstrate the use of runtime polymorphismIllustrate why virtual functions and classes are required to support runtime polymorphismUse operator overloadingShow the advantages and disadvantages of multiple inheritanceImplement function and class templatesDesign an application that uses the aggregation patternAnalyze memory management
	
		Illustrate memory layout and identify where different types of data are stored in memoryDemonstrate appropriate and correct use of new, delete and delete[]Apply overloading of new and delete operators to manage dynamic memoryShow the consequences of unsafe use of dynamic memoryUtilize smart pointers to manage dynamic memoryIdentify where copy constructors and destructors are calledIllustrate the difference between deep copies and shallow copiesDiscuss examples of memory leaksEvaluate the Standard Template Library (STL)
	
		Describe sequence and associative containersDesign a program that uses an iterator to visit the elements of a listDemonstrate inserting and retrieving elements from a mapApply STL algorithms to solve a problemIdentify the appropriate STL container or algorithm to solve a problemIllustrate GUI development
	
		Develop an application using widgetsDemonstrate event handlingIncorporate database connectivity
	
		Describe basic relational database terminologyQuery a databaseAnalyze network connectivity
	
		Describe basic networking terminologyIllustrate client/server communicationIncorporate multi-threaded processing
	
		Discuss the fundamentals of multi-threadingModify a single-threaded program to use multiple threadsIncorporate good programming practices
	
		Implement exception handling to throw and catch exceptionsUse a debugger to set breakpoints and step through program executionDevelop unit testsDescribe current topics in security and common vulnerabilities (e.g., bufferoverflow)Discuss the use of a profiler to optimize performanceUtilize version control for developmentDiscuss Agile and other development approaches Competencies Revised Date: 2020
 
 Add to Portfolio (opens a new window)
 |  |