Computer scientists have figured out how to write checkers programs that never lose by using the minimax search algorithm to search through the huge tree of possible moves. If your game is similar to checkers, then you might be able to use algorithms based on these techniques. If not, then knowing the limitations of those algorithms might lead you to redesign your game if it requires having a skilled computer player.

It's also important to know how to design new algorithms as well as how to analyze their correctness and efficiency. In the biological sciences, new algorithms are continually being designed with purposes like designing the molecular structures that are the core of disease fighting drugs. In physics, algorithms simulate climate and weather patterns.

In other algorithms, search and analyze the vast data about stars in the universe that's collected by automated space telescopes. Across all the sciences, and even on websites like Khan Academy, efficient algorithms are needed to analyze huge data sets or to select intelligently from a vast number of possible decisions. In just about any area you might be interested, new algorithms will allow massive computational power to be harnessed to do things that people really need and care about.

Now, not all algorithms are created equal. So what makes a good algorithm?

The two most important criteria are that it solves a problem and that it does so efficiently. Most of the time, we want an algorithm to give us an answer that we know is always correct. Sometimes we can live with an algorithm that doesn't give us the correct answer or the best answer because the only perfect algorithms that we know for those problems take a really, really long time. For example, let's say we want a program that would determine the most efficient route for a truck that delivers packages, starting and ending the day at a depot.

It would take weeks to run going through all the possibilities.

### Accessibility links

But if we're okay with a program that would determine a route that's good but maybe not the best, then it could run in seconds. In some case, good is good enough. How do you measure the efficiency of an algorithm? We could time how long it takes to run the code, but that would only tell us about that particular implementation in a certain programming language on a particular computer and just for the input it was given. Instead, computer scientists use a technique called asymptotic analysis, which allows algorithms to be compared independently of a particular programming language or hardware so that we can conclusively say that yes, some algorithms are more efficient than others.

Now you can learn about algorithms and asymptotic analysis on Khan Academy thanks to the contribution of two Dartmouth college professors. Tom Cormen is the first author of the most popular college algorithms textbook in the world, plus the author of Algorithms Unlocked. Devin Balkcom designed Dartmouth's intro CS course and researches robotics. He built the world's first origami folding robot.

Tom and Devin will teach you many of the algorithms that you would learn in APCS or CS , like searching algorithms, sorting algorithms, recursive algorithms and my personal favorite, graph algorithms. There will be tons of interactive visualizations, quizzes and coding challenges to help you understand better along your learning journey. A Coursera Specialization is a series of courses that helps you master a skill. To begin, enroll in the Specialization directly, or review its courses and choose the one you'd like to start with.

- Nations in Arms: The Theory and Practice of Territorial Defence!
- Nonwoven Fabrics: Raw Materials, Manufacture, Applications, Characteristics, Testing Processes;
- The TU/e Algorithms Group.
- Whatâ€™s the Deal With Algorithms?.
- Algorithms | Computer science | Computing | Khan Academy;
- Applications;
- How to Draw: Storytelling!

Visit your learner dashboard to track your course enrollments and your progress. Every Specialization includes a hands-on project.

### Hands-on Project

You'll need to successfully finish the project s to complete the Specialization and earn your certificate. If the Specialization includes a separate course for the hands-on project, you'll need to finish each of the other courses before you can start it. When you finish every course and complete the hands-on project, you'll earn a Certificate that you can share with prospective employers and your professional network. The primary topics in this part of the specialization are: asymptotic "Big-oh" notation, sorting and searching, divide and conquer master method, integer and matrix multiplication, closest pair , and randomized algorithms QuickSort, contraction algorithm for min cuts.

The primary topics in this part of the specialization are: data structures heaps, balanced search trees, hash tables, bloom filters , graph primitives applications of breadth-first and depth-first search, connectivity, shortest paths , and their applications ranging from deduplication to social network analysis. The primary topics in this part of the specialization are: greedy algorithms scheduling, minimum spanning trees, clustering, Huffman codes and dynamic programming knapsack, sequence alignment, optimal search trees.

The primary topics in this part of the specialization are: shortest paths Bellman-Ford, Floyd-Warshall, Johnson , NP-completeness and what it means for the algorithm designer, and strategies for coping with computationally intractable problems analysis of heuristics, local search. To get started, click the course card that interests you and enroll.

You can enroll and complete the course to earn a shareable certificate, or you can audit it to view the course materials for free. Visit your learner dashboard to track your progress. You can access your lectures, readings and assignments anytime and anywhere via the web or your mobile device.

Learners should know how to program in at least one programming language like C, Java, or Python ; some familiarity with proofs, including proofs by induction and by contradiction; and some discrete probability, like how to compute the probability that a poker hand is a full house. At Stanford, a version of this course is taken by sophomore, junior, and senior-level computer science majors. Having taken your programming and thinking skills to the next level, you will be well positioned to ace your technical interviews, pursue serious software engineering, and study advanced topics in algorithms.

More questions? Visit the Learner Help Center. Browse Chevron Right.

## 10 Data Structure & Algorithms Books Every Programmer Should Read - By Javin Paul

Computer Science Chevron Right. Offered By. Algorithms Specialization Stanford University. About this Specialization , recent views. Flexible Schedule.

## Algorithms

Flexible Schedule Set and maintain flexible deadlines. Intermediate Level. Hours to complete. Available languages.