Course
C/C++ Programming Proficiency
48 hours 30 minutes
Credits: Optional Learning
Description
In this course, learners will build a thorough and progressive foundation in C++ programming from writing their first program and working with variables and data types through to advanced language features including templates, smart pointers, and functional programming. Learners will apply control structures, loops, and functions to write structured programs, and develop strong object-oriented programming skills through classes, constructors, destructors, static members, and copy constructors. They will implement inheritance and polymorphism including abstract classes, virtual functions, and multiple inheritance, and manage memory effectively using pointers, references, and smart pointers alongside exception handling. Learners will also master operator overloading, function and class templates, and move semantics, before working with sequence and associative containers, file handling, and first-class functions including lambdas and closures.
What Students Will Learn
- Fundamentals of C++: Getting Started
- Fundamentals of C++: Using Variables & Datatypes
- Fundamentals of C++: Using the auto Keyword, Enums, and I/O Streams
- Write your first program in C++
- Control Structures in C++: Using Conditional Control Structures
- Control Structures in C++: Range-based for Loops
- Functions in C++: Using Functions & Parameter Passing
- Functions in C++: Using Default Arguments & Function Overloading
- OOP in C++: Getting Started with Object-oriented Programming
- OOP in C++: Instantiating Objects Using Constructors
- OOP in C++: Using the this Pointer & const Members
- OOP in C++: Using Static Members & Destructors
- OOP in C++: Copy Constructors, Nested Classes, & Namespaces
- C++ Inheritance & Polymorphism: Using Inheritance for is-a Relationships
- C++ Inheritance & Polymorphism: Constructors, Destructors, & Inheritance
- C++ Inheritance & Polymorphism: Understanding & Using Polymorphism
- C++ Inheritance & Polymorphism: Pure Virtual Functions & Abstract Classes
- C++ Inheritance & Polymorphism: Multiple Inheritance & the Diamond Hierarchy
- Exception Handling in C++
- Pointers and References in C++: Getting Started with Pointers
- Pointers and References in C++: Allocating Memory with New & Delete Operators
- Pointers and References in C++: Using Smart Pointers in Modern C++
- Pointers and References in C++: Working with References
- C++: Getting Started with Operator Overloading
- C++: Overloading Arithmetic & Relational Operators
- C++: Stream Operators, Assignment Operators, & Copy-and-Swap
- C++: Using Function Templates
- C++: Function Templates with Multiple Parameters & Non-type Parameters
- C++: Using Class Templates
- C++: Using the Move Constructor & Move Assignment Operator
- C++: Working with Sequence Containers
- C++: Working with Associative Containers & Algorithms
- File Handling in C++: Working with File Streams
- File Handling in C++: Performing Advanced File Stream Operations
- First-class Functions in C++: Defining & Using First-class Functions
- First-class Functions in C++: Using Lambdas & Closures
Overall Learning Outcomes
- Write, compile, and run C++ programs using core language features including variables, data types, enums, and I/O streams
- Apply conditional control structures, range-based loops, and functions with parameter passing and overloading
- Implement object-oriented programming principles in C++ including classes, constructors, destructors, static members, and namespaces
- Apply inheritance to model is-a relationships and implement single and multiple inheritance hierarchies including the diamond problem
- Use polymorphism, virtual functions, pure virtual functions, and abstract classes to design flexible and extensible programs
- Manage memory safely using pointers, references, dynamic allocation, and modern smart pointers
- Handle runtime errors effectively using C++ exception handling mechanisms
- Overload operators including arithmetic, relational, stream, and assignment operators using best practices such as copy-and-swap
- Design and use function and class templates with multiple and non-type parameters for generic programming
- Apply move semantics using the move constructor and move assignment operator to optimise resource management
- Work with sequence and associative containers and standard library algorithms
- Perform file stream operations including advanced file handling in C++
- Use first-class functions, lambdas, and closures to apply functional programming techniques in C++

