This course focuses on bringing major software development concepts together and attempts to explain them in a detailed, yet easy to understand way. It also includes topics that are often overlooked, including: compilers, virtual memory layout, how to choose the right editor, or how to use a graphical or command line based debugger. It is somewhat of a 2-in-1 course in that it isn't a Data Structures course with a crash course in programming, or vice versa, but rather a full coverage of the essential theoretical and practical aspects of writing software.
Major topics include: Binary and Hexadecimal Numbering Systems, GDB, CLion, VSCode, VIM, Logic, ASCII, Control Structures, Dynamic Memory, Pointers, Virtual Address Space, inheritance, encapsulation, polymorphism, templates, Sorting, Searching, Stacks, Queues, Graphs, Linked Lists, Trees, Hash Tables, Dynamic Programming, Recurrence Relations, Big O Notation and More...
The course is broken into 3 sections:
An introductory section to prepare beginners to write C++ programs and introduce students to fundamental Computer Science topics.
A C++ programming section that covers all of the major programming concepts
Includes in-video challenges and solutions
Includes projects with solution files
Many Modern/C++11 syntax topics mixed in (initialization lists, nullptr, range based loops, auto, smart pointers)
A Data Structures and Algorithms Section
Includes many Data Structures ranging from Linked-Lists to advanced concepts like AVL trees
Includes practical Algorithm problems and solutions as well as academic topics like recurrence relations and summations
This course is best taken from beginning to end, however, certain students may only be interested in the Data Structures and Algorithms section. Some of the Data Structures (i.e. Linked Lists) use some C++ language specific concepts like class templates. These students can always refer to the programming section to find supplementary lectures to fill in any missing C++ language gaps.
Also, if you believe any content is missing, please send me a message or comment and I will try my best to accommodate your learning needs. Not every C++ specific concept is covered (Like C++20 specific features for example) as this is not an advanced C++ Language course, but rather a course to help aspiring Software Engineers/Developers prepare for a career or help students through their studies.