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 courseAlgorithms 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 & Why6:42
- Join the Learning CommunityPremium1:00
- Measuring Algorithm Performance & Time Complexity9:31
- Big O Notation6:57
- Deriving the Time Complexity / Big O of an Algorithm11:27
- Constant Time4:50
- Using Big O For Algorithm Comparison3:42
- A First Task!2:13
- Solution & A Gotcha10:01
- About this Course & Outline5:30
- Module Resources1:00
Section 2Math Algorithms & Practicing The Basics
- Module IntroductionPremium1:38
- The Fibonacci ProblemPremium3:30
- The Fibonacci SolutionPremium5:42
- Fibonacci Big O (Time Complexity)Premium4:17
- The "Is Prime" ProblemPremium2:33
- The "Is Prime" SolutionPremium3:56
- "Is Prime", Big O & Multiple CasesPremium12:48
- "Is Prime" - Improved VersionPremium6:44
- Time to Practice (Problem)Premium1:27
- Time to Practice (Solution)Premium12:50
- Identifying Big O QuicklyPremium5:53
- Is Power Of Two AlgorithmPremium8:06
- Logarithmic Time ComplexityPremium7:29
- Bitwise Operators & Power Of TwoPremium8:19
- Again: Identifying Big O QuicklyPremium2:50
- The Factorial AlgorithmPremium5:12
- Module ResourcesPremium1:00
Section 3Recursion & Dynamic Programming
- Module IntroductionPremium1:06
- Recursion in AlgorithmsPremium8:30
- Exponential Time ComplexityPremium11:30
- Quadratic Time Complexity vs Exponential Time ComplexityPremium5:08
- What is "Dynamic Programming"?Premium3:25
- "Dynamic Programming" in ActionPremium9:22
- The "Bottom Up" ApproachPremium4:37
- Module ResourcesPremium1:00
Section 4Search Algorithms
- Module IntroductionPremium2:04
- What Search Algorithms Are AboutPremium1:19
- Introducing Linear SearchPremium1:41
- Linear Search in ActionPremium10:39
- Linear Search Time ComplexityPremium4:21
- Binary Search in TheoryPremium2:50
- Binary Search in ActionPremium11:46
- Binary Search Time ComplexityPremium3:20
- Recursive Binary SearchPremium13:05
- The Master TheoremPremium10:39
- Module ResourcesPremium1:00
Section 5Sorting Algorithms
- Module IntroductionPremium0:52
- What are Sorting Algorithms About?Premium1:11
- Bubble Sort - TheoryPremium5:07
- Bubble Sort in ActionPremium17:31
- Bubble Sort Time ComplexityPremium3:41
- Quicksort - TheoryPremium2:55
- Quicksort in ActionPremium13:14
- Quicksort Time ComplexityPremium8:04
- Merge Sort - TheoryPremium4:09
- Merge Sort in ActionPremium16:38
- Merge Sort Time ComplexityPremium4:01
- SummaryPremium2:04
- Module ResourcesPremium1:00
Section 6Space Complexity
- Module IntroductionPremium1:13
- Introducing Space ComplexityPremium3:02
- Deriving Space ComplexityPremium2:39
- Factorial Algorithm (Loop) - Space ComplexityPremium5:06
- Factorial Algorithm (Recursive) - Space ComplexityPremium3:58
- Linear Search - Space ComplexityPremium3:23
- Binary Search - Space ComplexityPremium2:24
- Bubble Sort - Space ComplexityPremium2:04
- Quicksort - Space ComplexityPremium6:00
- Merge Sort - Space ComplexityPremium2:13
- Module ResourcesPremium1:00
Section 7Sets (Array) Algorithms
- Module IntroductionPremium1:50
- An Introduction to SetsPremium3:17
- The Cartesian Product AlgorithmPremium5:11
- Cartesian Product - Time ComplexityPremium5:10
- The Cartesian Product Algorithm - Without LimitsPremium16:37
- The Permutations AlgorithmsPremium3:27
- Permutations without RepetitionsPremium19:00
- Understanding PermutationsPremium4:44
- Permutations without Repetitions - Big OPremium3:53
- Permutations WITH RepetitionsPremium15:15
- Module ResourcesPremium1:00
Section 8More Complex Algorithms & How To Solve Code Problems
- Module IntroductionPremium1:07
- Solving Problems In A Structured WayPremium7:06
- Simplifying ProblemsPremium4:00
- Practice Makes Perfect!Premium1:35
- The Knapsack Problem (0/1)Premium1:47
- A Wrong ApproachPremium5:21
- Approaching the Problem DifferentlyPremium5:26
- A Working Knapsack SolutionPremium18:21
- An Improved Knapsack AlgorithmPremium14:47
- Greedy vs Dynamic AlgorithmsPremium3:48
- A Greedy Knapsack AlgorithmPremium9:46
- A New Problem Solving PlanPremium2:50
- The Change Making ProblemPremium3:31
- A Greedy Change Making AlgorithmPremium12:40
- A Variation to the Change Making ProblemPremium13:17
- Module ResourcesPremium1:00
Section 9Roundup & Next Steps
- Course RoundupPremium6:23
Course instructor
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.