- Overview
- Prerequisites
- Audience
- Audience
- Curriculum
Description:
"Enroll in our 10-week 'Autonomous Coding in C++ Training Bootcamp' for an immersive journey into C++ programming and code testing. Start with Linux and Shell scripting basics, then master GIT for efficient code management. Understand the enduring relevance of C++ in modern software, focusing on C++14 and C++17. Dive into unit testing using the Google Test Framework (gtest). In the DevOps section, gain hands-on experience with Docker and explore Continuous Integration and Continuous Development (CI/CD) practices. This comprehensive bootcamp equips you with the skills needed to excel in C++ coding and testing in the dynamic world of software development
Course Code/Duration:
BDT259 / 10-Weeks
Learning Objectives:
Upon completing this course, you will:
- Master C++ programming, including variables, loops, functions, classes, and more.
- Acquire Linux and Shell scripting skills crucial for the bootcamp.
- Learn GIT for efficient code management.
- Understand C++'s enduring relevance, with a focus on modern versions like C++14 and C++17.
- Develop code testing expertise, performing unit testing using Google Test Framework (gtest).
- Gain practical experience in DevOps, covering container technology (Docker) and Continuous Integration and Continuous Development (CI/CD) principles."
- Must have degree in Computer Science or Electrical Engineering or equivalent ex
- One or more years technical experience
- Must have some basic understanding of software development
- Candidates with Computer Science or Electrical Engineering degree or equivalent experience and pursuing a career in Robotics.
- Candidates with Computer Science or Electrical Engineering degree or equivalent experience and pursuing a career in Robotics.
Course Outline:
Linux Fundamentals
- Set Up and Overview
- Install virtual machine running Ubuntu Linux
- Linux Fundamentals
- System Administration Basics
- Shell Scripting Overview
- Networking Services
Using Git
Introduction to Git
- What is a version control system (VCS)?
- What is Git?
- Choosing a default git editor
- Understanding repositories
- Cloning a remote repository
Using Git
- git add and git commit
- Commit messages
- Understanding markdown
Git Status
- git push and git pull
- git log
Creating Branches
- Branches
- Feature branch development
- Feature branch workflow
- Comparing branches
- Merge requests
- Stashing
- Fixing merge conflicts
- Rebasing
- Code review and merges
C++ Programming Fundamentals
Structure of C++ Program
- Preprocessor directive
- Comments in C++ code
- Function: main()
- Using cin and cout
- First C++ program
Variables and Constants
- Declaring and Initializing variables
- Built-in C++ primitive types
- Size of variables
- Defining constants
Arrays and Vectors
- Declaring and initializing Arrays
- Accessing and modifying array elements
- Multi-dimensional arrays
- Declaring and initializing Vectors
- Accessing and modifying vector elements
Statement and Operators
- Expression and statements
- Assignment operators
- Arithmetic operators
- Relational operators
- Logical operators
- Operator precedence
Controlling Program Flow
- If statement
- If else statements
- Nested if statements
- Switch-case statement
- Conditional operator
- For loop
- Range-based for loop
- While loop
- Do while loop
- Continue and break
- Nested loops
Characters and Strings
- Character functions
- C-style strings
- Working with C-style strings
- C++ strings
- Working with C++ strings
Functions
- What is a function?
- Function definition
- Function prototype
- Function parameters and return statement
- Default argument values
- Overloading functions
- Passing arrays to functions
- Pass by reference
- Scope rules
- How do function calls work?
- Inline functions
- Recursive functions
Pointers and References
- What is a pointer?
- Declaring pointers
- Accessing the pointer address and storing address in a pointer
- Dereferencing a pointer
- Dynamic memory allocation
- Arrays and pointers relationship
- Pointer arithmetic
- Const and pointers
- Passing pointers to functions
- Potential pointer pitfalls
- What is a reference?
- L-values and R-values
OOP – Classes and Objects
- What is Object Oriented Programming?
- What are classes and objects?
- Declaring a class and creating objects
- Access class members
- Public and private members
- Implementing member methods
- Constructors and Destructors
- Overloading constructors
- Constructor initialization lists
- Delegating Constructors
- Constructor parameters and default values
- Copy Constructor
- Shallow copying with copy constructor
- Deep copying with copy constructor
- Move Constructors
- The ‘this’ pointer
- Using const with classes
- Static class members
- Structs v/s classes
- Friends of a class
Operator Overloading
- What is operator overloading?
- Overloading the assignment operator (copy)
- Overloading the assignment operator (move)
- Overloading operators as member functions
- Overloading operators as global functions
- Overloading the stream insertion and extraction operators
Inheritance
- What is inheritance?
- Terminology and notation
- Inheritance v/s Composition
- Deriving classes from existing classes
- Protected members and class access
- Constructors and Destructors
- Passing arguments to base class constructors
- Copy/move constructors and operator = with derived classes
- Redefining base class methods
- Multiple inheritance
Polymorphism
- What is polymorphism?
- Using a base class pointer
- Virtual functions
- Virtual destructors
- Using the override specifier
- Using the final specifier
- Using base class references
- Pure virtual functions and abstract classes
Smart Pointers
- Some issues with raw pointers
- What is a smart pointer? Ownership and RAll
- Unique pointers
- Shared pointers
- Weak pointers
- Custom deletes
Exception Handling in C++
- Basic concepts and simple example: Divide by zero
- Throwing an exception from a function
- Handling multiple exceptions
- Stack unwinding and how it works
- Creating user-defined exception classes
- Class level exceptions
- The C++ std::exception class hierarchy
I/O and Streams
- Files, streams and I/O
- Stream manipulators
- Stream manipulators: boolean
- Stream manipulators: integers
- Stream manipulators: floats
- Stream manipulators: align and fill
- Reading from a text file
Standard Template Library (STL)
- What is STL?
- Generic programming with macros
- Generic programming with function templates
- Generic programming with class templates
- Creating a generic array template class
- Introduction to STL containers
- Introduction to STL iterators
- Introduction to STL algorithms
- Sequence container: Array
- Sequence container: Vector
- Sequence container: Deque
Lambda Expressions
- Motivation
- Structure of a lambda expression
- Stateless lambda expressions
- Stateful lambda expressions
- Lambdas and STL
- All these sections will include code samples, exercises and quizzes
Google Test
- What is unit testing?
- Why unit test?
- Writing useful unit tests
- Understanding gconv/lconv coverage reports
- Basics of GTest (basic test with basic EXPECTs)
- EXPECT vs ASSERT
- Testing floating point numbers
- Testing for exceptions
- Testing classes with “friend tests”
- Using gtest test fixtures
- All these sections will include code samples, exercises and quizzes
DevOps Toolkit
- DevOps Overview
- Containers with Docker
- Understanding Continuous Integration
- Understanding Continuous Delivery and Deployment
Cloud Computing Foundations (Azure)
- Cloud Computing Overview
- Introduction to Azure
- Azure compute
- Azure networking
- Data in Azure
- Security in Azure
- Azure AD, Roles
- Messaging in Azure
Project & Use Case
- Project Overview
- Complete projects to get experience and practice
- Industry Use Case Studies
Training material provided: Yes (Digital format)
The curriculum is empty
[INSERT_ELEMENTOR id="19900"]