Learning Path Series- Get Started in C++

Overview

A classic programming language, sitting above the assembly level languages, C++ got developed around 40 years ago. Bjarne Stroustrup, a Ph.D. student at the University of Cambridge, first called it C with Classes. It was the first language that combined ease of writing programs at a high level, that still talked to the system as an assembly level language. In the current world, C++ usage can be found in the most complex and intrinsic systems of computing such as Operating Systems, Microcontrollers, Browsers, Video Games and numerous other places.

Job Opportunities

True C++ programmers are increasingly getting rarer. More new programmers start with more popular and easy to learn programming languages such as Javascript, PHP, Python, web development among many others. However, even after 40 years of existence, the need for C++ programming skills remain strong as ever. A quick look at the Tiobe index would show you how C++ is still one of the top 5 languages in March 2019

Beginners topics to focus on C++ [Days 1 - 7]

  1. Installation and Setup
  2. The first program-”Hello World”, understanding each statement buildup
  3. Errors- Compiler errors, Linker Errors, Runtime Errors, Logic errors
  4. #include preprocessor, the main() function, namespaces
  5. Basic input, output- cin, cout
  6. Declaring and Initializing variables
  7. Variable types- Global, Primitive built-in, Constants

Beginner topics-ii to focus in C++ [Days 8 - 12]

  1. Arrays and Vectors- Declaration, accessing and modification
  2. Different operators, statements, logical and compound operators
  3. Controlling program flow with conditional (if, if-else, else-if) statements
  4. Controlling program flow with Switch-Case, For Loop, While Loop and nested statements
  5. C- Style and C++ style character and strings

Intermediate topics to focus in C++ [Days 13 - 20]

  1. Functions- definition, parameters, return statements, basic examples
  2. Functions- argument values, overloading functions
  3. Functions- Passing Arrays, Pass by reference
  4. Functions- Inline and Recursive
  5. Pointers- Declaration, accessing, storing the pointer address, dereferencing
  6. Pointers- Dynamic Memory Allocation, relationship between Pointers and Arrays
  7. Pointers- Arithmetic, L-Value, R-Value, potential pitfalls

Advance topics to focus in C++ [Days 21 - 38]

  1. OOPS Basics- Classes and Objects
  2. OOPS- Declaration, Access, and Creation of Classes and Objects
  3. OOPS- declaring member methods
  4. Constructors and Destructors, Structs Vs Classes, “this” pointer
  5. OOPS Overloading- Operator overloading, member and global functions
  6. OOPS Inheritance- Inheritance Vs Composition, deriving classes from existing classes
  7. OOPS Inheritance- Protected members, class access, multiple inheritance
  8. OOPS Polymorphism- Virtual Functions, Destructors, Abstract classes

Advance topics-ii to focus in C++ [Days 29 - 35]

  1. Smart Pointers- Unique, Shared, Weak, Custom deleters
  2. Exception Handling- Basics, Throwing an exception, handling an exception
  3. Exception Handling- Stack Unwinding, User defined exception classes
  4. I/O Streams- Stream Manipulators, Reading and Writing text files
  5. STL- Generic Programming with Macros and Functions
  6. STL- Containers, iterators, algorithms
  7. Sequence Containers- Arrays, Vectors, Deque

Complementing Skills to Learn with C++

  1. Linux
  2. Data Structures
  3. Algorithms
  4. Bash
  5. SQL, Microsoft SQL Server
  6. Javascript
  7. Shell Scripting

Popular Job Titles with C++ programming skills

  1. C++ Developer
  2. Senior/Software Engineer
  3. Senior/ Systems Engineer
  4. Software Architect
  5. Algorithmic Trading Engineers (in Financial Organizations)

Conclusion

This brings us to the conclusion for C++ learning path and associated job opportunities. In our experience and talking to industry experts, fundamental programming languages such as C, C++ and Java are here to stay for a long time. There may be languages developed on top of it, but there demand and need for complex problem solving will continue to grow.

Hoping this guide was helpful to you, as usual, please let us know in case of any questions, comments or feedback. QuickCode team will always be here to listen to your learning needs.