
Programming Core Algorithms and Data Structures
Building Skills in Python and JavaScript from Core Structures to Production-Ready ApplicationsBy Nora DelaneyLength13h 12m
About this audiobook
Most algorithm books prove things. This one shows you what each choice costs in code you can run.
You will count operations before trusting a benchmark, then build dynamic arrays, hash tables, linked lists, stacks, queues and heaps in both Python and JavaScript and watch where each one falls over. You will write merge sort, quicksort and heapsort, get binary search boundaries right, balance a search tree, build a trie for prefix search, and traverse graphs with breadth-first and depth-first search before moving to Dijkstra, minimum spanning trees and union-find. Closing chapters cover greedy reasoning, memoisation and tabulation, and how to choose a structure for a real service under memory and latency budgets.
Written for self-taught developers, bootcamp graduates and interview candidates, this book bridges the gap between theoretical computer science and the practical decisions you make every day. Instead of abstract proofs, you will measure, compare, and implement. Each chapter pairs conceptual explanation with runnable code in two languages, so you can see exactly how the same algorithm behaves differently in Python and JavaScript. You will learn to reason about time and space complexity not as a notation exercise but as a tool for predicting performance before you ship.
What you will learn:
• Count operations and interpret benchmarks to compare algorithms fairly
• Build dynamic arrays, hash tables, linked lists, stacks, queues and heaps in Python and JavaScript
• Implement elementary and divide-and-conquer sorting, including merge sort, quicksort and heapsort
• Get binary search boundaries right and work effectively with sorted data
• Balance a binary search tree and understand the trade-offs of different balancing strategies
• Build a trie for prefix search and apply it to text processing tasks
• Traverse graphs with breadth-first and depth-first search, then move to Dijkstra, minimum spanning trees and union-find
• Apply greedy reasoning, memoisation and tabulation to optimisation problems
• Choose the right data structure for a production service under memory and latency budgets
If you are a self-taught developer, a bootcamp graduate, or an interview candidate who wants to move beyond memorising solutions, this book gives you the mental models and hands-on practice to make confident, evidence-based decisions about algorithms and data structures in real code.
Audiobook details
GenreTechnology
Length13 hrs 12 mins
Narrated byListen with 1,000+ voices
FormateBook with Audio
Publish dateSep 27, 2026
LanguageEnglish
Table of contents
1Programming Core Algorithms and Data Structures
2Foreword
3Preface
4About This Book
5Chapter 1: Counting Operations
Show all chaptersShow less
61.1 Why Machine Timings Mislead
71.2 Counting Steps Instead of Seconds
81.3 Growth Rates and Big O in Plain Terms
91.4 Worst, Average and Best Case
101.5 Space Costs and the Constant Factor
111.6 Profiling Small Benchmarks in Python and JavaScript
12Chapter 2: Arrays, Dynamic Resizing and Strings
132.1 Contiguous Storage and Index Arithmetic
142.2 Dynamic Resizing and Amortised Append
152.3 Python Lists and JavaScript Arrays in Practice
162.4 Insertion, Deletion and Slicing Costs
172.5 Strings, Immutability and Building Text
18Chapter 3: Hash Tables
193.1 Hash Functions and Bucket Indexing
203.2 Collision Resolution by Chaining
213.3 Open Addressing and Probing
223.4 Load Factor, Rehashing and Worst Cases
233.5 Dictionaries, Objects and Maps Compared
24Chapter 4: Linked Lists, Stacks and Queues
254.1 Nodes, Pointers and Singly Linked Lists
264.2 Doubly Linked Lists and Deletion at a Known Node
274.3 Stacks, Queues and Deques
284.4 Ring Buffers and Bounded Queues
29Chapter 5: Recursion and the Call Stack
305.1 Base Cases, Progress and Stack Frames
315.2 Depth Limits and Stack Overflow
325.3 Tail Calls and Converting Recursion to Iteration
335.4 Recursion on Trees and Divide-and-Conquer Shape
345.5 Memoisation and Overlapping Subproblems
35Chapter 6: Elementary Sorting
366.1 Bubble Sort and the Cost of Swapping
376.2 Selection Sort and the Minimum Scan
386.3 Insertion Sort and Adaptivity
396.4 Stability, Small Inputs and Library Sorts
40Chapter 7: Divide-and-Conquer Sorting
417.1 Merge Sort and the Cost of Merging
427.2 Quicksort Partitioning and Pivot Choice
437.3 Heapsort and the Heap Property
447.4 Hybrid Sorts in Python and JavaScript
45Chapter 8: Binary Search and Sorted Data
468.1 Binary Search on a Sorted Array
478.2 Off-by-One Boundaries and Loop Shapes
488.3 Insertion Points and Range Queries
498.4 Rotated Arrays and Sparse Data
50Chapter 9: Binary Search Trees and Balancing