Algorithms Bootcamp in C++

Algorithms Bootcamp in C++

English | MP4 | AVC 1280×720 | AAC 44KHz 2ch | 6.5 Hours | 3.96 GB

Recursion, backtracking, dynamic programming and data structures (linked lists, queues, stacks and binary search trees)

This course is for those who are interested in computer science and want to implement the algorithms and given data structures in C++ from scratch. In every chapter you will learn about the theory of a given data structure or algorithm and then you will implement them from scratch.

Chapter 1: Recursion

  • theory behind recursion (recursive function calls)
  • recursion and stack memory of the OS
  • recursive problems: binary search and Towers of Hanoi problem

Chapter 2: Backtracking

  • what is backtracking
  • how to solve problems with backtracking
  • N-queens problem, coloring problem and knight’s tour

Chapter 3: Dynamic Programming

  • overlapping subproblems and dynamic programming
  • what is “memoization”
  • Fibonacci numbers and knapsack problem

Chapter 4: Data Structures

  • data structures and abstract data types (ADTs)
  • arrays and linked lists
  • stacks
  • queues
  • binary search trees
  • priority queues (heaps)
  • associative arrays (maps)

Thanks for joining my course, let’s get started!

What you’ll learn

  • what is recursion
  • what are backtracking and dynamic programming
  • what are the fundamental data structures: array, linked lists, stacks, queues and binary search trees
Table of Contents

Introduction
1 Introduction

Algorithms – Recursion
2 What is recursion (recursive function call)
3 Recursion and iteration (differences)
4 Head and tail recursion implementation
5 Recursion and stack memory (stack overflow)
6 Factorial problem
7 Fibonacci-numbers problem
8 Fibonacci-numbers with tail recursion
9 Binary search with recursion
10 Towers of Hanoi introduction
11 Towers of Hanoi implementation

Algorithms – Backtracking
12 What is backtracking
13 N-queens problem introduction
14 N-queens problem implementation
15 Coloring problem introduction
16 Coloring problem implementation
17 Knight’s tour problem introduction
18 Knight’s tour problem implementation
19 Problems with NP-complete problems

Algorithms – Dynamic Programming
20 What is dynamic programming
21 Fibonacci numbers introduction
22 Fibonacci numbers implementation
23 Knapsack problem introduction
24 Knapsack problem example
25 Knapsack problem implementation

Data Structures – Arrays
26 Arrays introduction – basics
27 Arrays introduction – operations
28 Arrays in C++

Data Structures – Linked Lists
29 Linked lists theory – basics
30 Linked list theory – operations
31 Linked list theory – linked lists versus arrays
32 Linked list implementation

Data Structures – Stacks
33 Stack introduction
34 Stacks in memory management ( stacks, heaps )
35 Stacks and recursive method calls
36 Stacks implementation with arrays
37 Stack implementation with linked lists

Data Structures – Queues
38 Queues introduction
39 Queue implementation with linked list

Data Structures – Trees
40 Binary search trees theory – basics
41 Binary search trees theory – search, insert
42 Binary search trees theory – delete
43 Binary search trees theory – in-order traversal
44 Binary search trees theory – running times
45 Practical (real-world) applications of trees

Priority Queues (Heaps)
46 Priority queues introduction
47 Heap introduction – basics
48 Heap introduction – array representation
49 Heap introduction – remove operation
50 Heap introduction – heapsort
51 Heap introduction – running times
52 Other types of heaps binomial and Fibonacci heap
53 Heaps implementation I
54 Heaps implementation II

Associative Arrays (Maps)
55 What are associative arrays
56 Hashtables introduction – basics
57 Hashtables introduction – collisions
58 Hashtables introduction – load factor & dynamic resizing
59 Chaining method
60 Linear probing method
61 Practical (real-world) applications of hashing