What you'll learn
Programming Challenges
Algorithmic Warm-up
Greedy Algorithms
Divide-and-Conquer
Dynamic Programming 1
Dynamic Programming 2
Description
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).
Requirements
Access to a computer or mobile device with an internet connection.
Motivation to learn!
There are no special materials or prerequisite knowledge required for this course.
Who this course is for
Students who are already familiar with this field
Students willing to put in a couple hours to learn about Algorithmic Toolbox
Advanced students wanting to add another skill to their portfolio
Content Creator
Alexander S. Kulikov – Visiting Professor – Department of Computer Science and Engineering
Michael Levin – Lecturer – Computer Science
Neil Rhodes – Adjunct Faculty – Computer Science and Engineering
Pavel Pevzner – Professor – Department of Computer Science and Engineering
Daniel M Kane – Assistant Professor – Department of Computer Science and Engineering / Department of Mathematics
This course includes
Participation Confirmation/Certificate
Option for learning at your own pace
Videos and reading material about the course
Practice tests
Assessed tasks with feedback from other course participants
Evaluated tests with feedback
Evaluated programming tasks