
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Who am I?
What’s this course about?
What will we solve?
Need help? Just ask!
Explain the problem statement with a visual example.
Describe its real-world significance.
Show a sample input and expected output.
Convert the problem into a mathematical model.
Define key variables (height array, trapped water, etc.).
Explain the naive solution with a step-by-step walkthrough.
Write code in JavaScript and analyze its time complexity.
Convert it to code
Check the complexity
Explain the idea behind using max arrays.
Implement the approach in JavaScript and compare its efficiency.
What does "shuffling a deck of cards" mean?
Why is randomness important?
Different types of card shuffling.
Deal into a new stack
To Cut N Cards
Deal With Increment N
Implementing 3 types of card shuffling
Implementing in the simplest way possible
Improve the complexity of code for the huge number of cards.
What is Tetris, and why is shape fitting a challenge?
Understanding Tetrominoes (L, T, I, O, Z, S, J shapes).
Defining the problem: Given a grid and a shape, can we fit it?
Defining the grid and the available Tetris shapes.
Understanding rotation and placement constraints.
Example walkthrough of shape fitting.
Explain all of the methods we are going to need to solve this problem.
Rotate them each time 90 degrees to fit them in an exact position
Checking every possible position and rotation.
Implementing all of the functions we have already talked about in JavaScript.
Discussing time complexity and its limitations.
In this course, you’ll learn how to tackle real-world programming problems step by step, breaking down complex challenges into simple, structured solutions. The course is designed for anyone looking to build strong problem-solving skills and learn how to model real-world challenges using algorithms. Whether you're preparing for coding interviews, building real-world applications, or simply looking to improve your coding abilities, this course will help you take your problem-solving to the next level.
You’ll start with classic algorithmic challenges often asked in coding interviews. We’ll begin with the Rainwater Trapping Problem, a fun and practical problem where you’ll calculate how much water can be trapped between blocks of different heights. This is a great exercise in using array manipulation and mathematical modeling to find solutions.
Next, you’ll tackle the card-shuffling problem, where we’ll explore how to shuffle large sets of cards efficiently. As we dive into this problem, you’ll learn about randomness, optimization, and algorithms to handle large datasets—highly applicable skills in game development or large-scale data processing.
Finally, we’ll dive into the Tetris Shape Fitting Problem inspired by the classic game we all know. But beyond the game itself, we’ll break down the algorithmic thinking required to fit irregular shapes into a confined space. This challenge will introduce you to concepts like geometry, space optimization, and greedy algorithms, all of which are useful in many real-world applications, such as graphic design, game development, and resource management.
Throughout the course, each problem will not only teach you the algorithm behind the solution but also guide you through how to optimize your approach for better performance. You’ll learn different techniques and strategies that will enable you to tackle problems more efficiently, which is key for real-world software development and coding interviews.
Along the way, I’ll share tips and tricks for debugging, handling edge cases, and writing clean, maintainable code. Performance optimization is a major focus of this course, ensuring that you’ll not only know how to solve the problem, but also how to do it in the most efficient way possible.
But it doesn’t end there! I’ll keep the course updated with new problems over time, ensuring that you have access to the latest challenges and coding techniques. Whether you’re a beginner who’s just starting to tackle algorithms or an experienced programmer looking to refresh your skills, this course will give you the tools and confidence you need to solve complex problems efficiently and take your programming skills to the next level.