The course covers basic algorithmic techniques and ideas for computational problems arising frequently in practical applications: sorting and searching, divide and conquer, greedy algorithms, dynamic programming. We will learn a lot of theory: how to sort data and how it helps for searching; how to break a large problem into pieces and solve them recursively; when it makes sense to proceed greedily; how dynamic programming is used in genomic studies. You will practice solving computational problems, designing new algorithms, and implementing solutions efficiently (so that they run in less than a second).
Do you have technical problems? Write to us: coursera@hse.ru

PR

The course is perfectly designed. The perfect start for those who start with data structures and algorithms. The Dynamic programming was a little bit tough but overall course is perfectly designed

RS

Dec 23, 2018

Filled StarFilled StarFilled StarFilled StarFilled Star

This course is just awesome and outstanding in every term. Teachers are very good at explaining even the toughest of problems and really helped throughout the course, i enjoyed and leaned a lot.

Из урока

Programming Challenges

Welcome to the first module of Data Structures and Algorithms! Here we will provide an overview of where algorithms and data structures are used (hint: everywhere) and walk you through a few sample programming challenges. The programming challenges represent an important (and often the most difficult!) part of this specialization because the only way to fully understand an algorithm is to implement it. Writing correct and efficient programs is hard; please don’t be surprised if they don’t work as you planned—our first programs did not work either! We will help you on your journey through the specialization by showing how to implement your first programming challenges. We will also introduce testing techniques that will help increase your chances of passing assignments on your first attempt. In case your program does not work as intended, we will show how to fix it, even if you don’t yet know which test your implementation is failing on.

Преподаватели

Alexander S. Kulikov

Visiting Professor

Michael Levin

Lecturer

Neil Rhodes

Adjunct Faculty

Pavel Pevzner

Professor

Daniel M Kane

Assistant Professor

Текст видео

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.