W3docs

JavaScript Algorithms - The Fundamentals

Learn all the core basics and fundamentals about JavaScript algorithms, dive into tons of examples and get a plan for building and measuring algorithms.

Start course

Algorithms are a complex, yet vital part of programming and of being a developer!

Being able to come up with algorithms (= being able to solve problems) is extremely important, not only for interviews but also in general to grow as a developer.

But diving into algorithms and finding the best possible solution for a given problem can be a daunting task.

And even once you have found a solution, it might not be the best one.

This course helps you with all of that!

You will learn what algorithms are, which kinds of algorithms you may find out there and most importantly, you will learn how to derive algorithms and how to judge as well as compare them!

We will dive into this complex topic step by step and by the end of the course, you will have a very strong foundation and all the core fundamental concepts you need to build and optimize your own algorithms for any problem out there!

This course introduces you to algorithms all related important concepts step by step.

In detail, you will learn:

  • What algorithms are
  • Why algorithms are important
  • How to judge and compare algorithms
  • All about "Time Complexity", "Space Complexity" and the "Big O" notation
  • Different time complexities and how to derive them
  • How to use recursion with algorithms
  • Optimization approaches like "Dynamic Programming"
  • All core concepts you need for math, search, sorting and sets/ array algorithms
  • Different kinds of solving problems (e.g. greedy approaches, dynamic approaches)

By the end of the course, you will have a very solid foundation and a plan on how to tackle any problem and find a fitting algorithm! You will be well-prepared to dive deeper and explore more problems and algorithms.

The different concepts are taught step by step with small, focused code examples and all building blocks being visualized on slides to make understanding them as easy as possible!

This course is for you if you want to take the next step as a developer, if you want to ace interviews or if you simply want to grow as a developer.

It assumes no prior algorithm knowledge but you of course need solid programming fundamentals - preferably in JavaScript, the programming language used in this course.

Course content

Section 1Getting Started

  • Welcome to the Course!
    0:58
  • What & Why
    6:42
  • Join the Learning CommunityPremium
    1:00
  • Measuring Algorithm Performance & Time Complexity
    9:31
  • Big O Notation
    6:57
  • Deriving the Time Complexity / Big O of an Algorithm
    11:27
  • Constant Time
    4:50
  • Using Big O For Algorithm Comparison
    3:42
  • A First Task!
    2:13
  • Solution & A Gotcha
    10:01
  • About this Course & Outline
    5:30
  • Module Resources
    1:00

Section 2Math Algorithms & Practicing The Basics

  • Module IntroductionPremium
    1:38
  • The Fibonacci ProblemPremium
    3:30
  • The Fibonacci SolutionPremium
    5:42
  • Fibonacci Big O (Time Complexity)Premium
    4:17
  • The "Is Prime" ProblemPremium
    2:33
  • The "Is Prime" SolutionPremium
    3:56
  • "Is Prime", Big O & Multiple CasesPremium
    12:48
  • "Is Prime" - Improved VersionPremium
    6:44
  • Time to Practice (Problem)Premium
    1:27
  • Time to Practice (Solution)Premium
    12:50
  • Identifying Big O QuicklyPremium
    5:53
  • Is Power Of Two AlgorithmPremium
    8:06
  • Logarithmic Time ComplexityPremium
    7:29
  • Bitwise Operators & Power Of TwoPremium
    8:19
  • Again: Identifying Big O QuicklyPremium
    2:50
  • The Factorial AlgorithmPremium
    5:12
  • Module ResourcesPremium
    1:00

Section 3Recursion & Dynamic Programming

  • Module IntroductionPremium
    1:06
  • Recursion in AlgorithmsPremium
    8:30
  • Exponential Time ComplexityPremium
    11:30
  • Quadratic Time Complexity vs Exponential Time ComplexityPremium
    5:08
  • What is "Dynamic Programming"?Premium
    3:25
  • "Dynamic Programming" in ActionPremium
    9:22
  • The "Bottom Up" ApproachPremium
    4:37
  • Module ResourcesPremium
    1:00

Section 4Search Algorithms

  • Module IntroductionPremium
    2:04
  • What Search Algorithms Are AboutPremium
    1:19
  • Introducing Linear SearchPremium
    1:41
  • Linear Search in ActionPremium
    10:39
  • Linear Search Time ComplexityPremium
    4:21
  • Binary Search in TheoryPremium
    2:50
  • Binary Search in ActionPremium
    11:46
  • Binary Search Time ComplexityPremium
    3:20
  • Recursive Binary SearchPremium
    13:05
  • The Master TheoremPremium
    10:39
  • Module ResourcesPremium
    1:00

Section 5Sorting Algorithms

  • Module IntroductionPremium
    0:52
  • What are Sorting Algorithms About?Premium
    1:11
  • Bubble Sort - TheoryPremium
    5:07
  • Bubble Sort in ActionPremium
    17:31
  • Bubble Sort Time ComplexityPremium
    3:41
  • Quicksort - TheoryPremium
    2:55
  • Quicksort in ActionPremium
    13:14
  • Quicksort Time ComplexityPremium
    8:04
  • Merge Sort - TheoryPremium
    4:09
  • Merge Sort in ActionPremium
    16:38
  • Merge Sort Time ComplexityPremium
    4:01
  • SummaryPremium
    2:04
  • Module ResourcesPremium
    1:00

Section 6Space Complexity

  • Module IntroductionPremium
    1:13
  • Introducing Space ComplexityPremium
    3:02
  • Deriving Space ComplexityPremium
    2:39
  • Factorial Algorithm (Loop) - Space ComplexityPremium
    5:06
  • Factorial Algorithm (Recursive) - Space ComplexityPremium
    3:58
  • Linear Search - Space ComplexityPremium
    3:23
  • Binary Search - Space ComplexityPremium
    2:24
  • Bubble Sort - Space ComplexityPremium
    2:04
  • Quicksort - Space ComplexityPremium
    6:00
  • Merge Sort - Space ComplexityPremium
    2:13
  • Module ResourcesPremium
    1:00

Section 7Sets (Array) Algorithms

  • Module IntroductionPremium
    1:50
  • An Introduction to SetsPremium
    3:17
  • The Cartesian Product AlgorithmPremium
    5:11
  • Cartesian Product - Time ComplexityPremium
    5:10
  • The Cartesian Product Algorithm - Without LimitsPremium
    16:37
  • The Permutations AlgorithmsPremium
    3:27
  • Permutations without RepetitionsPremium
    19:00
  • Understanding PermutationsPremium
    4:44
  • Permutations without Repetitions - Big OPremium
    3:53
  • Permutations WITH RepetitionsPremium
    15:15
  • Module ResourcesPremium
    1:00

Section 8More Complex Algorithms & How To Solve Code Problems

  • Module IntroductionPremium
    1:07
  • Solving Problems In A Structured WayPremium
    7:06
  • Simplifying ProblemsPremium
    4:00
  • Practice Makes Perfect!Premium
    1:35
  • The Knapsack Problem (0/1)Premium
    1:47
  • A Wrong ApproachPremium
    5:21
  • Approaching the Problem DifferentlyPremium
    5:26
  • A Working Knapsack SolutionPremium
    18:21
  • An Improved Knapsack AlgorithmPremium
    14:47
  • Greedy vs Dynamic AlgorithmsPremium
    3:48
  • A Greedy Knapsack AlgorithmPremium
    9:46
  • A New Problem Solving PlanPremium
    2:50
  • The Change Making ProblemPremium
    3:31
  • A Greedy Change Making AlgorithmPremium
    12:40
  • A Variation to the Change Making ProblemPremium
    13:17
  • Module ResourcesPremium
    1:00

Section 9Roundup & Next Steps

  • Course RoundupPremium
    6:23

Course instructor

Photo of Maximilian Schwarzmüller

Maximilian Schwarzmüller

As a self-taught professional I really know the hard parts and the difficult topics when learning new or improving on already-known languages. This background and experience enable me to focus on the most relevant key concepts and topics. My track record of many 5-star rated courses, more than 1,000,000 students worldwide as well as a successful YouTube channel is the best proof for that.

The most rewarding experience for me is to see how people find new, better jobs, build awesome web applications, work on amazing projects or simply enjoy their hobby with the help of my content. That's why, together with Manuel Lorenz, I founded Academind to offer the best possible learning experience and to share the pleasure of learning with our students.