Software Development
C++ Programming
Overview
This course is an introduction to the C++ programming language. Emphasis is placed on best, current practices and methods. Students will write extensive code as part of the course.
Who Should Take This Course
Audience
This course is suitable for developers or others with some experience in programming. This course is not designed for students who are new to programming.
Prerequisites
Students should have completed our Python Programming class or have equivalent experience with another programming language. They should be able to write conditionals, loops, and functions, do some basic debugging, and write a simple program that makes use of these skills.
Why You Should Take This Course
Upon completion of this course, the student will be able to:
- Explain how OO software engineering enhances the software development process.
- Identify the major elements in an object-oriented programming language.
- Implement the concepts of data abstraction and encapsulation in abstract data types.
- Implement operator overloading.
- Use inheritance in C++.
- Select the proper class protection mechanism.
- Demonstrate the use of virtual functions to implement polymorphism.
- Write programs utilizing the I/O classes in C++.
- Understand C++ features including templates, exceptions, and multiple inheritance.
- Compare the object vs the procedural approach to writing software.
- Use correct object oriented terminology.
- Define and use classes in a C++ program.
- Create and use abstract data types.
- Derive classes using inheritance in C++.
- Implement polymorphism by using virtual functions in a program.
Course Outline
C++ Programming
Introduction
- C++
- History
- Hello, World
- C++ Errors
- C++ Style
Building Programs
- The Build Process
- The Build Pipeline
- Building a Large Program
Variables
- C++ Variables
- Fundamental Types
- Standard Library Types
- Strings
- Aggregate Types
- Type Storage Duration Specifiers
- Type Qualifiers
- Constexpr
Variable Operations
- Assignment
- Arithmetic Operators
Standard Types
- Standard Library Containers
- Pairs and Tuples
- Enumerated Values
Flow Control
- Conditionals
- Loops
- Loop Control
- Switch-case
Input/Output Streams
- Output
- Formatted Input
- Processing User Input
- Formatted File I/O
- main Revisited
Functions
- Invoking Functions
- Creating Functions
- Header Files
References and Pointers
- References
Custom Types
- Access Specifiers
- Methods
- The this Pointer
- Constructors
- Destructor
- static Members
Inheritance
- Inheriting Fields and Methods
- Access Specifiers
- Polymorphism
- Virtual Methods
- Abstract Types
Exceptions
- Catching Exceptions
- Custom Exception Types
- Exception Signatures for Functions
- Standard Library Exceptions
- Exception Guarantees
Operator Overloading
- Operators as Methods
- The Spaceship Operator <=>
- Overloading Stream Operator <<
- Iterators
- Iterator Classifications
- Creating and Using Iterators
Namespaces
- Creating namespaces
- using Namespaces
- Argument-Dependent Lookup
Templates
- Template Constraints
- Templated Types