Skip to content

TrainingByPackt/CPP-Data-Structures-and-Algorithm-Design-Principles

Repository files navigation

GitHub issues GitHub forks GitHub stars PRs Welcome

CPP-Data-Structures-and-Algorithms

C++ is a mature multi-paradigm programming language that enables you to write high-level code with great control over the hardware. Significant pieces of our software infrastructure today, including databases, browsers, frameworks, and GUI toolkits tend to be written in C++.

The course is structured in three parts: the first part covers data structures in detail, the second part explains basic algorithm design techniques, and the third part covers advanced techniques. You'll begin with an introduction to C++ data structures and see how to store data using linked lists, arrays, stacks, and queues. The second part of the course explains the greedy algorithms and the divide and conquer algorithms that facilitate faster computations in your programs. The third part of the course shows how by using graph algorithms and dynamic programming, you can develop applications that can perform high calculations.

With this course, you’ll learn how to implement standard data structures and algorithms in idiomatic C++ 14/17 code that is efficient and also scales well.

What you will learn

  • Build applications using hashtables, dictionaries, and sets
  • Implement a URL shortening service using a bloom filter
  • Implement common algorithms, such as heap sort and merge sort in string data types
  • Use C++ template metaprogramming to write code libraries
  • Explore how modern hardware affects the actual run-time performance of programs
  • Use appropriate modern C++ idioms like std:: array instead of C-style arrays

Hardware Requirements

For an optimal learning experience, we recommend the following hardware configuration:

  • Processor: Intel Core i5 or equivalent
  • Memory: 4GB RAM (8 GB Preferred)
  • Storage: 35 GB available space

Software Requirements

You'll also need the following software installed in advance:

  • OS: Windows 7 SP1 64-bit, Windows 8.1 64-bit or Windows 10 64-bit, Ubuntu Linux, or the latest version of OS X
  • Browser: Google Chrome/Mozilla Firefox Latest Version
  • Notepad++/Sublime Text as IDE (Optional, as you can practice everything using Jupyter note on your browser)
  • Python 3.4+ (latest is Python 3.7) installed (from https://python.org)
  • Python libraries as needed (Jupyter, NumPy, Pandas, Matplotlib, BeautifulSoup4, and so)