Skip to main content

Data Structures and Algorithms

This specialization is a mix of theory and practice: you will learn algorithmic techniques for solving various computational problems and will implement about 100 algorithmic coding problems in a programming language of your choice.

  • Algorithmic Toolbox

    Algorithmic Toolbox

    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.

  • Data Structures

    Data Structures

    In this 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

    Algorithms on Graphs

    In this course, you will first learn what a graph is and what are some of the most important properties. Then you'll learn several ways to traverse graphs and how you can do useful things while traversing the graph in some order.

  • Algorithms on Strings

    Algorithms on Strings

    World and internet is full of 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. Moreover, the emerging field of personalized medicine uses many search algorithms to find disease-causing mutations in the human genome.

  • Advanced Algorithms and Complexity

    Advanced Algorithms and Complexity

    This course begins with networks flows which are used typical applications such as optimal matchings, finding disjoint paths and flight scheduling as well as more surprising ones like image segmentation in computer vision. We then proceed to linear programming with applications in optimizing budget allocation, portfolio optimization, finding the cheapest diet satisfying all requirements and many others.

  • Genome Assembly Programming Challenge

    Genome Assembly Programming Challenge

    In this Genome Assembly Programming Challenge, you will follow in the footsteps of the bioinformaticians investigating the deadliest E.coli outbreak in history by developing a program to assemble the genome of the E. coli X from millions of overlapping substrings of the E.coli X genome.