Imagine you walk into work and your boss says, "I just got a list of 2 billion numbers, can you sort them for me as soon as possible?"
You might be shocked and wonder where to even start the problem. Do you try and do it all by hand and spend the next couple years trying to sort even a small fraction of the values? Or is there some better way...
The Essential Algorithms and Data Structures is the most comprehensive course on the topic on Udemy and together we will learn how to solve problems like these and even more complicated problems. Algorithms are a guaranteed way of solving a type of problem that works in a predictable fashion with the data. Algorithms like sorting algorithms can be used to sort 10 values or a billion values and won't need any modifications to work with either set. Other algorithms allow us to efficiently search a set of data or find the lowest cost option to connect a series of points on a graph. Algorithms are like blueprints that we use to solve problems in our programs.
Data structures are unique ways of storing data that are optimized for certain situations. Data structures like a priority queue allow us to model how a CPU processes requests, or how to efficiently model a set of cities and interconnecting flights. Choosing a good data structure to store data can make programs millions of times faster than a bad choice. Data structures are like the power tools of programming that let us drastically speed up our programs.
In this course we're going to combine data structures with algorithms to create a powerful arsenal you can use to solve whatever problems show up in your code. We start by discussing time complexity and how we use it to analyze algorithms. We then cover the most important algorithms for interviews and discuss how to perfectly answer common interview questions. We then shift our focus to being able to search efficiently depending on the starting set of data. In addition, we cover the eight most essential algorithms for sorting and discuses when to use each of them. After that, we cover fundamentals for data structures like generics and recursions that are essential for almost all data structures. Then, we shift our focus to the essential data structures like maps and sets that every powerful programmer is expected to have mastered. Next, we go into detail with the three most important types of trees (Binary Search Trees, Red-Black Trees, and AVL Trees). Finally, we wrap up our discussions with hashing and graphs, which are essential to higher-order approaches for computer science.
While other courses on the market focus entirely on theory we will place a major emphasis on being able to actually implement the algorithms and data structures we cover. We'll go over how to modify an algorithm or data structure for your situations and will always be looking at pseudo code that helps us understand how an algorithm or data structure works. In addition, we always cover the theory in detail and focus on understanding how and why a data structure is efficient or the details of an algorithms approach, so you can implement it in your language of choice.
We will take a Java-based approach for our discussions of how to implement an algorithm but this doesn't mean you have to know Java. Java is a generic style language whose attributes are almost identical to other major languages like C++ or Python.
If you have any questions you can depend on prompt communication from me. I pride myself on responding to questions within 24 hours and work hard to ensure that each student is satisfied. If you have any questions at any time my email and message box are open 24/7!
I hope you're as excited as I am to begin this journey through the most interesting parts of Computer Science. Personally I can say that once I learned about algorithms and data structures I was pleasantly surprised with how many new problems I could solve and how fluently I could understand professional level discussions of programming. If you want to go from being a simple programming student to a true software engineer, then join the tens of thousands of satisfied students and enroll today!