Skip to main content
Software Engineering & AlgorithmsOreilly2021-11 Edition100% Free Video Course

Advanced Algorithms and Data Structures, video edition

Advanced Algorithms and Data Structures, video edition. This course teaches you powerful approaches to solving a wide range of coding challenges that you can implement in your own programs. With a balanced mix of classic, advanced, and new algorithms, this practical guide will enhance your programming toolbox with new insights and practical techniques. This course will help you become a more efficient programmer by using advanced algorithms and data structures. You will learn how to solve complex programming challenges with innovative approaches and improve the performance of your programs. What you will learn: Strengthen basic data structures: Focus more on the data structures you already know. Algorithm Optimization: Speed ​​up your applications by profiling algorithms. Storing and Querying Strings: Learn efficient ways to store and search text data. Distributed clustering algorithms: Distribute clustering algorithms with MapReduce. Solving Logistic Problems: Solve logistical problems using graphs and optimization algorithms. Who is this course suitable for? This course is suitable for intermediate-level programmers.

173 Video Lessons
61.2 Hours On-Demand
Created by Marcello La Rocca
Uploaded Sep 2026
English
Beginner to advanced
Advanced Algorithms and Data Structures, video edition
Preview This Course
Free$129.99100% Free

Instant high-definition streaming with zero paywalls.

Course Features:
61.2 hours on-demand video
173 complete lectures
Streamable on mobile, tablet & desktop
Self-paced curriculum with progress tracking
Direct MP4 downloads & offline video access
Verified course archives hosted on cloud infrastructure.

What You'll Master in this Course

Strengthen basic data structures: Focus more on the data structures you already know.
Algorithm Optimization: Speed ​​up your applications by profiling algorithms.
Storing and Querying Strings: Learn efficient ways to store and search text data.
Distributed clustering algorithms: Distribute clustering algorithms with MapReduce.
Solving Logistic Problems: Solve logistical problems using graphs and optimization algorithms.

Course Curriculum173 Lectures

1 sections • 61.2 hours total length

Prefer offline learning? Download all 173 video lectures and project files for free.
Download Free
Chapter 1 Describing a data structure
Preview
16m
Part 1. Improving over basic data structures
Preview
6m
Chapter 1 Packing your knapsack - Data structures meet the real world
14m
Chapter 1 Introducing data structures
21m
Chapter 2 Improving priority queues - d-way heaps
21m
Chapter 1 Algorithms to the rescue
26m
Chapter 2 Concrete data structures
21m
Chapter 2 Solutions at hand - Keeping a sorted list
21m
Chapter 2 How to implement a heap
21m
Chapter 2 Priority, min-heap, and max-heap
14m
Chapter 2 PushDown
22m
Chapter 2 Top
24m
Chapter 2 Use case - Find the k largest elements
15m
Chapter 2 Heapify
24m
Chapter 2 Analysis of branching factor
23m
Chapter 2 More use cases
29m
Chapter 2 Interpreting results
17m
Chapter 2 Performance analysis - Finding the best branching factor
25m
Chapter 3 Treaps - Using randomization to balance binary search trees
18m
Chapter 2 The mystery with heapify
16m
Chapter 3 A few design questions
21m
Chapter 3 Treap
25m
Chapter 3 Delete
16m
Chapter 3 Performance analysis and profiling
16m
Chapter 3 Profiling height
27m
Chapter 3 Profiling memory usage
18m
Chapter 3 Applications - Randomized treaps
23m
Chapter 4 Bloom filters - Reducing the memory for tracking content
18m
Chapter 4 Alternatives to implementing a dictionary
14m
Chapter 4 Concrete data structures
25m
Chapter 4 Binary search tree - Every operation is logarithmic
26m
Chapter 4 Implementation
20m
Chapter 4 Constructor
24m
Chapter 4 Why Bloom filters work
19m
Chapter 4 Performance analysis
19m
Chapter 4 Explanation of the false-positive ratio formula
11m
Chapter 4 Applications
22m
Chapter 4 Improved variants
25m
Chapter 5 Reasoning on solutions
16m
Chapter 5 Disjoint sets - Sub-linear time processing
19m
Chapter 5 Naïve solution
19m
Chapter 5 Using a tree-like structure
18m
Chapter 5 Heuristics to improve the running time
27m
Chapter 5 Applications
15m
Chapter 6 Trie, radix trie - Efficient string search
28m
Chapter 6 Trie
31m
Chapter 6 Search
23m
Chapter 6 Insert
26m
Chapter 6 Keys matching a prefix
24m
Chapter 6 Applications
21m
Chapter 6 String sorting
23m
Chapter 6 Radix tries
25m
Chapter 6 Search
24m
Chapter 7 First attempt - Remembering values
20m
Chapter 7 Use case - LRU cache
29m
Chapter 7 Handling asynchronous calls
17m
Chapter 7 Memory is not enough (literally)
14m
Chapter 7 Temporal ordering
20m
Chapter 7 Getting rid of stale data - LRU cache
15m
Chapter 7 When fresher data is more valuable - LFU
25m
Chapter 7 How to use cache is just as important
23m
Chapter 7 Read locks
26m
Chapter 7 Solving concurrency (in Java)
28m
Part 2. Multidimensional queries
8m
Chapter 8 Nearest neighbors search
19m
Chapter 8 Moving to k-dimensional spaces
21m
Chapter 8 Simplifying things to get a hint
23m
Chapter 9 K-d trees - Multidimensional data indexing
16m
Chapter 9 Constructing the BST
24m
Chapter 9 Balanced tree
19m
Chapter 9 Remove
32m
Chapter 9 Methods
28m
Chapter 9 Nearest neighbor
37m
Chapter 9 Region search
33m
Chapter 10 Inserting points in an R-tree
14m
Chapter 10 R-tree
27m
Chapter 10 Similarity Search Trees - Approximate nearest neighbors search for image retrieval
24m
Chapter 10 Similarity search tree
16m
Chapter 10 SS-tree search
18m
Chapter 10 Insertion - Split nodes
18m
Chapter 10 Delete
27m
Chapter 10 Insert
31m
Chapter 10 Similarity Search
16m
Chapter 10 Approximated similarity search
19m
Chapter 10 SS+-tree
23m
Chapter 10 Reducing overlap
18m
Chapter 11.Centralized application
20m
Chapter 11 Applications of nearest neighbor search
26m
Chapter 11 Other applications
21m
Chapter 11 Multidimensional DB queries optimization
17m
Chapter 11 Moving to a distributed application
25m
Chapter 12 Clustering
18m
Chapter 12 Types of learning
21m
Chapter 12 The curse of dimensionality strikes again
16m
Chapter 12 Boosting k-means with k-d trees
23m
Chapter 12 K-means
32m
Chapter 12 DBSCAN
16m
Chapter 12 And finally, an implementation
22m
Chapter 12 OPTICS
30m
Chapter 12 From definitions to an algorithm
16m
Chapter 12 From reachability distance to clustering
20m
Chapter 12 Hierarchical clustering
30m
Chapter 13 Canopy clustering
21m
Chapter 12. Evaluating clustering results - Evaluation metrics
33m
Chapter 13 Parallel clustering - MapReduce and canopy clustering
24m
Chapter 13 MapReduce
16m
Chapter 13 MapReduce k-means
19m
Chapter 13 Parallelizing canopy clustering
22m
Chapter 13 First map, then reduce
26m
Chapter 13 MapReduce canopy clustering
23m
Chapter 13 MapReduce DBSCAN - Part 1
26m
Chapter 13 MapReduce DBSCAN - Part 2
23m
Part 3. Planar graphs and minimum crossing number
6m
Chapter 14 An introduction to graphs - Finding paths of minimum distance
12m
Chapter 14 Graph properties
16m
Chapter 14 Implementing graphs
21m
Chapter 14 Graph traversal - BFS and DFS
29m
Chapter 14 Reconstructing the path to target
26m
Chapter 14 Beyond Dijkstra’s algorithm - A
13m
Chapter 14 Shortest path in weighted graphs - Dijkstra
28m
Chapter 14 How good is A search
20m
Chapter 14 Heuristics as a way to balance real-time data
16m
Chapter 15 Some basic definitions
13m
Chapter 15 Graph embeddings and planarity - Drawing graphs with minimal edge intersections
14m
Chapter 15 Planar graphs
12m
Chapter 15 Planarity testing
28m
Chapter 15 Non-planar graphs
18m
Chapter 15 Improving performance
25m
Chapter 15 Rectilinear crossing number
14m
Chapter 15 Edge intersections
15m
Chapter 15 Polylines
13m
Chapter 15 Intersections between quadratic Bézier curves
27m
Chapter 16 Gradient descent - Optimization problems (not just) on graphs
24m
Chapter 16 Did you just say heuristics
26m
Chapter 16 How optimization works
33m
Chapter 16 When is gradient descent appliable
15m
Chapter 16 Gradient descent
23m
Chapter 16 Applications of gradient descent
22m
Chapter 16 Gradient descent for graph embedding
27m
Chapter 17 Simulated annealing - Optimization beyond local minima
23m
Chapter 17 Sometimes you need to climb up to get to the bottom
13m
Chapter 17 Why simulated annealing works
19m
Chapter 17 Short-range vs long-range transitions
24m
Chapter 17 Exact vs approximated solutions
18m
Chapter 17 Simulated annealing + traveling salesman
16m
Chapter 17 Simulated annealing and graph embedding
19m
Chapter 17 State transitions
30m
Chapter 18 Genetic algorithms - Biologically inspired, fast-converging optimization
18m
Chapter 17 Force-directed drawing
26m
Chapter 18 Inspired by nature
26m
Chapter 18 Chromosomes
28m
Chapter 18 Natural selection
18m
Chapter 18 Selecting individuals for mating
33m
Chapter 18 The genetic algorithm template
17m
Chapter 18 Crossover
20m
Chapter 18 TSP
17m
Chapter 18 Minimum vertex cover
24m
Chapter 18 Other applications of the genetic algorithm
27m
Chapter 18 Beyond genetic algorithms
21m
Chapter 18 Results and parameters tuning
30m
Appendix B. Big-O notation
17m
Appendix A Blocks and indent
17m
Appendix A Conditional instructions
19m
Appendix A. A quick guide to pseudo-code
20m
Appendix C Tree
22m
Appendix C. Core data structures
27m
Appendix C Hash table
32m
Appendix B Notation
26m
Appendix D. Containers as priority queues
13m
Appendix E. Recursion
18m
Appendix E Tail recursion
12m
Appendix F. Classification problems and randomnized algorithm metrics
16m
Appendix F Classification metrics
16m

Requirements

  • Basic enthusiasm to learn and follow along with lessons
  • A computer or mobile device with a modern internet connection

Description

Advanced Algorithms and Data Structures, video edition. This course teaches you powerful approaches to solving a wide range of coding challenges that you can implement in your own programs. With a balanced mix of classic, advanced, and new algorithms, this practical guide will enhance your programming toolbox with new insights and practical techniques. This course will help you become a more efficient programmer by using advanced algorithms and data structures. You will learn how to solve complex programming challenges with innovative approaches and improve the performance of your programs. What you will learn: Strengthen basic data structures: Focus more on the data structures you already know. Algorithm Optimization: Speed ​​up your applications by profiling algorithms. Storing and Querying Strings: Learn efficient ways to store and search text data. Distributed clustering algorithms: Distribute clustering algorithms with MapReduce. Solving Logistic Problems: Solve logistical problems using graphs and optimization algorithms. Who is this course suitable for? This course is suitable for intermediate-level programmers.

Instructor

M

Marcello La Rocca

Specialist in Software Engineering & Algorithms

Passionate educator focused on real-world practical skills, modern frameworks, and production-ready engineering practices. Delivering step-by-step masterclasses accessible to learners globally on MJ Accedemy.

Recommended Curriculum

Students Also Viewed