### The Self-Taught Computer Scientist: The Beginner's Guide to Data

ISBN: 978-1-64459-429-2uCertify CS-DS-ALGO.AE1

Master your coding skills with C++ programming for Data Structures. Get ready to ace those technical rounds of job interviews.

(DS-ALGO-CPLUS.AP1) / ISBN : 978-1-64459-444-5This course includes

Lessons

TestPrep

Lab

The Data Structure and Algorithm with C++ course offers a comprehensive learning of the advanced topics along with a rich collection of practice exercises for deeper understanding. Besides learning the fundamentals of basic data structures like arrays, linked lists, stacks, and queues, you’ll also be working with advanced data structures trees (binary, binary search, AVL, and heap), graphs, and hash tables. Learn how to measure the efficiency of an algorithm using time(how long it takes) and space(space/memory) complexity metrics. For the practical implications, you’ll be sorting algorithms (bubble, insertion, selection, merge, quick, heap) and searching techniques (linear, binary). The course further extends to dynamic programming, greedy algorithms, and advanced tree structures like B-trees. Get access to the C++ Standard Template Library (STL) that features containers (vector, list, deque, stack, queue, priority queue, map, set) and iterators. The course includes exercises and solutions that are useful for both students and professionals. It aims to help you prepare for technical job interviews that typically involve coding questions.

- Implementing various data structures including arrays, linked lists, stacks, queues, trees, graphs, and hash tables
- Optimizing algorithms through time and space complexities
- Enhanced problem-solving skills
- Sorting, searching, and computing via algorithms
- Enhanced C++ programming skills
- Using the Standard Template Library (STL)
- Gain confidence to answer coding questions during technical interviews
- Applying data structures and algorithms for analytical thinking.

Get the support you need. Enroll in our Instructor-Led Course.

14+ Lessons | 125+ Exercises | 56+ Quizzes | 53+ Flashcards | 53+ Glossary of terms

37+ Pre Assessment Questions | 37+ Post Assessment Questions |

1

- Purpose/Goals
- Approach
- Summary of the Most Significant Changes in the Fourth Edition
- Overview
- Exercises

2

- What’s This Course About?
- Mathematics Review
- A Brief Introduction to Recursion
- C++ Classes
- C++ Details
- Templates
- Using Matrices
- Summary
- Exercises
- References

3

- Mathematical Background
- Model
- What to Analyze
- Running-Time Calculations
- Summary
- Exercises
- References

4

- Abstract Data Types (ADTs)
- The List ADT
- vector and list in the STL
- Implementation of vector
- Implementation of list
- The Stack ADT
- The Queue ADT
- Summary
- Exercises

5

- Preliminaries
- Binary Trees
- The Search Tree ADT—Binary Search Trees
- AVL Trees
- Splay Trees
- Tree Traversals (Revisited)
- B-Trees
- Sets and Maps in the Standard Library
- Summary
- Exercises
- References

6

- General Idea
- Hash Function
- Separate Chaining
- Hash Tables without Linked Lists
- Rehashing
- Hash Tables in the Standard Library
- Hash Tables with Worst-Case O(1) Access
- Universal Hashing
- Extendible Hashing
- Summary
- Exercises
- References

7

- Model
- Simple Implementations
- Binary Heap
- Applications of Priority Queues
- d-Heaps
- Leftist Heaps
- Skew Heaps
- Binomial Queues
- Priority Queues in the Standard Library
- Summary
- Exercises
- References

8

- Preliminaries
- Insertion Sort
- A Lower Bound for Simple Sorting Algorithms
- Shellsort
- Heapsort
- Mergesort
- Quicksort
- A General Lower Bound for Sorting
- Decision-Tree Lower Bounds for Selection Problems
- Adversary Lower Bounds
- Linear-Time Sorts: Bucket Sort and Radix Sort
- External Sorting
- Summary
- Exercises
- References

9

- Equivalence Relations
- The Dynamic Equivalence Problem
- Basic Data Structure
- Smart Union Algorithms
- Path Compression
- Worst Case for Union-by-Rank and Path Compression
- An Application
- Summary
- Exercises
- References

10

- Definitions
- Topological Sort
- Shortest-Path Algorithms
- Network Flow Problems
- Minimum Spanning Tree
- Applications of Depth-First Search
- Introduction to NP-Completeness
- Summary
- Exercises
- References

11

- Greedy Algorithms
- Divide and Conquer
- Dynamic Programming
- Randomized Algorithms
- Backtracking Algorithms
- Summary
- Exercises
- References

12

- An Unrelated Puzzle
- Binomial Queues
- Skew Heaps
- Fibonacci Heaps
- Splay Trees
- Summary
- Exercises
- References

13

- Top-Down Splay Trees
- Red-Black Trees
- Treaps
- Suffix Arrays and Suffix Trees
- k-d Trees
- Pairing Heaps
- Summary
- Exercises
- References

A

- Everything in the Header
- Explicit Instantiation

- Using Recursive Function
- Resizing a Matrix

- Implementing the Bisection Method
- Finding Minimum Subsequence Sum
- Implementing Binary Search

- Implementing the STL find Routine
- Working with Lists
- Converting an Infix Expression to Postfix
- Checking for Balancing Brackets
- Reversing a Singly Linked List
- Implementing a Stack Class
- Implementing a Dequeue using a Linked List

- Implementing a Depth-First Traversal in the Child-Sibling Tree
- Converting a Tree into Graph-Assembler Instructions
- Using the findMax Function
- Generating an AVL Tree
- Inserting a Node into an AVL Tree
- Implementing a Splay Tree
- Working with Binary Tree
- Implementing a B-Tree
- Inserting Keys into the B-Tree
- Implementing the map Class
- Implementing a Splay Tree

- Counting Number of Collisions
- Implementing Hopscotch Hashing
- Implementing Cuckoo Hashing
- Implementing Extendible Hashing

- Merging Two Max Heaps
- Implementing Insert Operation in a Binomial Queue

- Implementing Insertion Sort using STL
- Implementing Mergesort without Recursion
- Implementing the Selection Sort Algorithm

- Printing a Maze

- Implementing a Topological Sorting Algorithm
- Solving a Single Source Shortest Path Problem
- Implementing Union Function in Kruskal's Algorithm

- Solving the Longest Common Subsequence Problem

Check out the FAQs

Still have unanswered questions and need to get in touch?

Contact Us Now