Big update - Dynamic programming
"I learned a lot of things from this course. The GOLD trick was awesome." Arpan P.
"I started thinking about problems in a more efficient way..." Mokshagna S.
"It's deep, rich in information, consistent and dense" Laurentiu M.
"It's a very good course, it focuses on building your concept." Saransh S.
"Awesome, it's just awesome" Yazan R.
Big update - Dynamic programming
"I learned a lot of things from this course. The GOLD trick was awesome." Arpan P.
"I started thinking about problems in a more efficient way..." Mokshagna S.
"It's deep, rich in information, consistent and dense" Laurentiu M.
"It's a very good course, it focuses on building your concept." Saransh S.
"Awesome, it's just awesome" Yazan R.
I'm a competitive programmer, World Finalist in Google HashCode algorithmic challenge, and a 3x Gold Medalist in the Computing Olympiad C/C++. You will learn fundamentals Algorithms & Data structures fast and the knowledge will resist because I teach you using visual examples.
You will get my advice every time you need it. Just message me.
If you know the basics of C++, this course suits you perfectly .
I've designed this course to take you down a guided learning path. You will find some GOLD tricks sprinkled throughout the course that will help you become an algorithmic ninja.
What can you take from me ?
I have spent 5 years of my life learning this topic by myself. You have the possibility to take my knowledge for granted. I'm teaching in the way I learnt: with illustration and examples.
My Promise to You
Algorithms and Data structures brought me success and immense satisfaction. I created this course to share my knowledge with you because I love this topic and I promise to teach you with enthusiasm. If you need support, I will be just a message away.
My Approach
Practice, practice and more practice. After each lecture, I will guide you to solve little problems. The most important thing you can obtain from this course is to think like a problem solver.
Why to do this course? Get the motivation to finish it.
Have a view over the curriculum (which became bigger over time). Please set the video quality to 720p.
Install the developing environment. You can use any other IDE that support C++11, such as Visual Studio.
I'll show you how to create a project to write your code.
Tired of writing redundant code? Learn to use Standard Template Library (or STL), which is a collection of functions embedded into C++.
Understanding the differences between Global and Local variable is crucial in order to become a professional programmer. This lecture will give you a deeper insight about them.
Go deeper into the differences between local and global variables.
You will understand everything about variables. It will help you also with other programming languages.
Learn how to debug effectively and get rid of bugs.
The bigger the complexity, the slower the algorithm. You will be able to classify algorithms based on Big O complexity notation!
I am sure this lecture will give you the 'aha, I got it now' sensation.
Learn to use appearance array. Later you'll extend the principle to hashmaps and dictionaries.
Learn one of the quickest way to sort small inputs.
Understand how to use Stacks properly. It has a complexity of O(1) which makes it useful for many applications.
How can you better practice using a stack than checking a parenthesis expression ?
What is a queue? It's like a queue of people waiting somewhere.
People that come will stay in the back of the queue, and people can go out the queue from the front.
So in a queue you can add elements from one end, called back, and remove from the other end, called front.
Every operation on a queue executes in O(1).
You will learn the principle behind binary search and understand how it works. You will also learn how to calculate binary search complexity.
This is the solution to the previous exercise. Very nice trick to put in your repertoire!
You will some one of the most common interview question using binary search.
You will learn how to sort small inputs.
Sorting from STL is fast and easy to implement. You will learn how to use it effectively, sorting in the way you need.
You will understand how to find the majority element using a super-trick :).
Data structures are very handy in real world situations. You will understand how they work and where you can use them.
You will go deeper into Data structures.
Constructors are useful in programming real world applications.
Polish you understanding about constructors.
Sorting arrays in a custom order is crucial in order to become a problem solver! I am sure you will find this lesson easy to understand.
Fibonacci sequence is found all over nature. You will find out how it relates to programming.
What is dynamic programming? How does dynamic programming really work? You will be able to answer those questions.
Understand one of the hardest parts of programming, finding the dynamic programming recurrence.
Solve one of the most famous dynamic programming problems. It is extended in many other applications.
This lesson represents a step-by-step guide to solving algorithmic problems. You will acquire professional level skills that will make you stand out from the crowd!
Most people think that the first idea that comes to mind it's good enough for solving a problem. You will master finding solutions after this lecture!
OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.
Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.
Find this site helpful? Tell a friend about us.
We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.
Your purchases help us maintain our catalog and keep our servers humming without ads.
Thank you for supporting OpenCourser.