Algorithms are everywhere. Whether you are writing software, analyzing a genome, predicting traffic jams, producing automatic movie recommendations, or just surfing the Internet, you're dealing with algorithms. Every single branch of computer science uses algorithms, so a course on algorithms and data structures is an essential part of any CS curriculum. >> It's important that the algorithms we use are efficient as users want to see the search results in a blink of an eye even if they search through trillions of web pages. A poorly thought out algorithm could take literally centuries to process all the webpages indexed by a search engine or all the Facebook posts. And thus, algorithmic improvements are necessary to make these systems practical. That's why tech companies always ask lots of algorithmic questions at the interviews. >> In data science problems, like ranking internet search results, predicting road accidents, and recommending movies to users, advanced algorithms are used to achieve excellent search quality, high prediction accuracy, and to make relevant recommendations. However, even for a simple machine learning algorithm like linear regression to be able to process big data is usually a challenge. When advanced algorithms such as deep neural networks are applied to huge data sets they make extremely accurate predictions. Recently starting to even outperform humans in some areas of vision and speech recognition, but getting those algorithms to work in hours instead of years on a large dataset is hard. And performing experiments quickly is crucial in data science. >> Algorithms are everywhere. Each of trillions of cells in your body executes a complex and still poorly understood algorithm. And algorithm are the key for solving important biomedical problems such as what are the mutations that differentiate you from me and how is it they relate to diseases. In this specialization you will learn the theory behind the algorithm. Implement algorithm in the programming language of your choice and apply them to solving practical problems such as assembling the genome from millions of tiny fragments, the largest jigsaw puzzle ever assembled by humans. >> To conclude, algorithms are everywhere. And it is important to design your algorithms and to implement them. To turn you into a pro in algorithm design we will give you nearly 100 programming assignments in this class. Your solutions will be checked automatically, and you will learn how to implement, test, and debug fast algorithms solving large and difficult problems in seconds. We look forward to seeing you in this class. We know it will make you a better programmer. >> Algorithms are everywhere. In fact you just saw five algorithms solving the fundamental sorting problem in computer science, and they all have different running times. In fact while four of them are about to finish one will take a much longer time. In this specialization you'll be able to implement all of these algorithms, and master the skill of answering both algorithmic and programming questions at your next interview.