We may earn an affiliate commission when you visit our partners.
Course image
Pavel Pevzner, Alexander S. Kulikov, Daniel M Kane, Neil Rhodes, and Michael Levin

Computer science legend Donald Knuth once said “I don’t understand things unless I try to program them.” We also believe that the best way to learn an algorithm is to program it. However, many excellent books and online courses on algorithms, that excel in introducing algorithmic ideas, have not yet succeeded in teaching you how to implement algorithms, the crucial computer science skill that you have to master at your next job interview. We tried to fill this gap by forming a diverse team of instructors that includes world-leading experts in theoretical and applied algorithms at UCSD (Daniel Kane, Alexander Kulikov, and Pavel Pevzner) and a former software engineer at Google (Neil Rhodes). This unique combination of skills makes this Specialization different from other excellent MOOCs on algorithms that are all developed by theoretical computer scientists. While these MOOCs focus on theory, our Specialization is a mix of algorithmic theory/practice/applications with software engineering. You will learn algorithms by implementing nearly 100 coding problems in a programming language of your choice. To the best of knowledge, no other online course in Algorithms comes close to offering you a wealth of programming challenges (and puzzles!) that you may face at your next job interview. We invested over 3000 hours into designing our challenges as an alternative to multiple choice questions that you usually find in MOOCs.

Enroll now

Share

Help others find Specialization from Coursera by sharing it with your friends and followers:

What's inside

Six courses

Algorithmic Toolbox

(0 hours)
This online course covers basic algorithmic techniques and ideas for computational problems arising frequently in practical applications: sorting and searching, divide and conquer, greedy algorithms, and dynamic programming.

Data Structures

(0 hours)
A good algorithm usually comes together with a set of good data structures that allow the algorithm to manipulate the data efficiently. In this online course, we consider the common data structures that are used in various computational problems. You will learn how these data structures are implemented in different programming languages and will practice implementing them in our programming assignments.

Algorithms on Graphs

(0 hours)
If you have ever used a navigation service, you've used algorithms on graphs. Graphs arise in various real-world situations, such as road networks, computer networks, and social networks. In this online course, you will learn the basics of graphs and algorithms on graphs, including graph traversal, shortest paths, and minimum spanning trees.

Algorithms on Strings

(0 hours)
World and internet abound with textual information. We search for information using textual queries, we read websites, books, e-mails. All those are strings from the point of view of computer science. To make sense of all that information and make search efficient, search engines use many string algorithms.

Advanced Algorithms and Complexity

(0 hours)
In previous courses, you've learned the basic algorithms. Now, you are ready to step into the area of more complex problems and algorithms to solve them. Advanced algorithms build upon basic ones and use new ideas. We will start with networks flows which are used in more typical applications such as optimal matchings, finding disjoint paths and flight scheduling as well as more surprising ones like image segmentation in computer vision.

Genome Assembly Programming Challenge

(0 hours)
In Spring 2011, thousands of people in Germany were hospitalized with a deadly disease caused by a previously unknown bacterial strain, E. coli X. To investigate its origin and potential, researchers released bacterial DNA sequencing data and launched a crowdsourced research program. This course follows their footsteps, developing a program to assemble the E. coli X genome from millions of overlapping substrings.

Learning objectives

  • Play with 50 algorithmic puzzles on your smartphone to develop your algorithmic intuition!  apply algorithmic techniques (greedy algorithms, binary search, dynamic programming, etc.) and data structures (stacks, queues, trees, graphs, etc.) to solve 100 programming challenges that often appear at interviews at high-tech companies. get an instant feedback on whether your solution is correct.
  • Apply the newly learned algorithms to solve real-world challenges: navigating in a big network  or assembling a genome of a deadly pathogen from millions of short substrings of its dna.
  • Learn exactly the same material as undergraduate students in “algorithms 101” at top universities and more! we are excited that students from various parts of the world are now studying our online materials in the algorithms 101 classes at their universities. here is a quote from the website of professor sauleh eetemadi from iran university of science and technology: “after examining syllabus and course material from top universities including stanford, princeton and mit we have chosen to follow the data structures and algorithms specialization from ucsd...due to excellent course material and its practical approach.”
  • If you decide to venture beyond algorithms 101, try to solve more complex programming challenges (flows in networks, linear programming, streaming algorithms, etc.) and complete an equivalent of a graduate course in algorithms!

Save this collection

Save Data Structures and Algorithms to your list so you can find it easily later:
Save
Our mission

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.

Affiliate disclosure

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.

© 2016 - 2024 OpenCourser