VOOZH about

URL: https://www.coursera.org/learn/algorithms-on-strings

⇱ Algorithms on Strings | Coursera


Gain insight into a topic and learn the fundamentals.
4.5

1,090 reviews

Intermediate level
Some related experience required
Flexible schedule
2 weeks at 10 hours a week
Learn at your own pace
88%
Most learners liked this course

Gain insight into a topic and learn the fundamentals.
4.5

1,090 reviews

Intermediate level
Some related experience required
Flexible schedule
2 weeks at 10 hours a week
Learn at your own pace
88%
Most learners liked this course

Details to know

Shareable certificate

Add to your LinkedIn profile

Assessments

4 assignments

Taught in English

Build your subject-matter expertise

This course is part of the Data Structures and Algorithms Specialization
When you enroll in this course, you'll also be enrolled in this Specialization.
  • Learn new concepts from industry experts
  • Gain a foundational understanding of a subject or tool
  • Develop job-relevant skills with hands-on projects
  • Earn a shareable career certificate

There are 4 modules in this course

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. In this online course you will learn key pattern matching concepts: tries, suffix trees, suffix arrays and even the Burrows-Wheeler transform.

How would you search for a longest repeat in a string in LINEAR time? In 1973, Peter Weiner came up with a surprising solution that was based on suffix trees, the key data structure in pattern matching. Computer scientists were so impressed with his algorithm that they called it the Algorithm of the Year. In this lesson, we will explore some key ideas for pattern matching that will - through a series of trials and errors - bring us to suffix trees.

What's included

6 videos5 readings1 assignment1 programming assignment

6 videosβ€’Total 32 minutes
  • Welcomeβ€’5 minutes
  • From Genome Sequencing to Pattern Matchingβ€’8 minutes
  • Brute Force Approach to Pattern Matchingβ€’2 minutes
  • Herding Patterns into Trieβ€’5 minutes
  • Herding Text into Suffix Trieβ€’6 minutes
  • Suffix Treesβ€’5 minutes
5 readingsβ€’Total 50 minutes
  • Trie Construction - Pseudocodeβ€’10 minutes
  • FAQβ€’10 minutes
  • Slides and External Referencesβ€’10 minutes
  • Available Programming Languagesβ€’10 minutes
  • FAQ on Programming Assignmentsβ€’10 minutes
1 assignmentβ€’Total 30 minutes
  • Tries and Suffix Treesβ€’30 minutes
1 programming assignmentβ€’Total 180 minutes
  • Programming Assignment 1β€’180 minutes

Although EXACT pattern matching with suffix trees is fast, it is not clear how to use suffix trees for APPROXIMATE pattern matching. In 1994, Michael Burrows and David Wheeler invented an ingenious algorithm for text compression that is now known as Burrows-Wheeler Transform. They knew nothing about genomics, and they could not have imagined that 15 years later their algorithm will become the workhorse of biologists searching for genomic mutations. But what text compression has to do with pattern matching??? In this lesson you will learn that the fate of an algorithm is often hard to predict – its applications may appear in a field that has nothing to do with the original plan of its inventors.

What's included

5 videos4 readings1 assignment1 programming assignment

5 videosβ€’Total 30 minutes
  • Burrows-Wheeler Transformβ€’5 minutes
  • Inverting Burrows-Wheeler Transformβ€’7 minutes
  • Using BWT for Pattern Matchingβ€’6 minutes
  • Suffix Arraysβ€’5 minutes
  • Approximate Pattern Matchingβ€’7 minutes
4 readingsβ€’Total 40 minutes
  • Using BWT for Pattern Matchingβ€’10 minutes
  • Pattern Matching with Suffix Arrayβ€’10 minutes
  • FAQβ€’10 minutes
  • Slides and External Referencesβ€’10 minutes
1 assignmentβ€’Total 30 minutes
  • Burrows-Wheeler Transform and Suffix Arraysβ€’30 minutes
1 programming assignmentβ€’Total 180 minutes
  • Programming Assignment 2β€’180 minutes

Congratulations, you have now learned the key pattern matching concepts: tries, suffix trees, suffix arrays and even the Burrows-Wheeler transform! However, some of the results Pavel mentioned remain mysterious: e.g., how can we perform exact pattern matching in O(|Text|) time rather than in O(|Text|*|Pattern|) time as in the naïve brute force algorithm? How can it be that matching a 1000-nucleotide pattern against the human genome is nearly as fast as matching a 3-nucleotide pattern??? Also, even though Pavel showed how to quickly construct the suffix array given the suffix tree, he has not revealed the magic behind the fast algorithms for the suffix tree construction!In this module, Miсhael will address some algorithmic challenges that Pavel tried to hide from you :) such as the Knuth-Morris-Pratt algorithm for exact pattern matching and more efficient algorithms for suffix tree and suffix array construction.

What's included

8 videos2 readings1 assignment

8 videosβ€’Total 54 minutes
  • Exact Pattern Matchingβ€’7 minutes
  • Skipping Positionsβ€’10 minutes
  • Safe Shiftβ€’4 minutes
  • Prefix Functionβ€’12 minutes
  • Computing Prefix Functionβ€’7 minutes
  • Implementationβ€’5 minutes
  • Analysisβ€’4 minutes
  • Knuth-Morris-Pratt Algorithmβ€’7 minutes
2 readingsβ€’Total 130 minutes
  • Programming Assignment 3 lasts for two weeksβ€’120 minutes
  • Slides and External Referencesβ€’10 minutes
1 assignmentβ€’Total 30 minutes
  • Exact Pattern Matchingβ€’30 minutes

In this module we continue studying algorithmic challenges of the string algorithms. You will learn an O(n log n) algorithm for suffix array construction and a linear time algorithm for construction of suffix tree from a suffix array. You will also implement these algorithms and the Knuth-Morris-Pratt algorithm in the last Programming Assignment in this course.

What's included

16 videos3 readings1 assignment1 programming assignment

16 videosβ€’Total 119 minutes
  • Suffix Arrayβ€’8 minutes
  • General Construction Strategyβ€’9 minutes
  • Initializationβ€’9 minutes
  • Sort Doubled Cyclic Shiftsβ€’8 minutes
  • SortDouble Implementationβ€’6 minutes
  • Updating Classesβ€’6 minutes
  • UpdateClasses Implementationβ€’4 minutes
  • Building Suffix Arrayβ€’5 minutes
  • Suffix Array and Suffix Treeβ€’8 minutes
  • LCP Arrayβ€’9 minutes
  • Computing the LCP Arrayβ€’10 minutes
  • ComputeLCPArray Implementationβ€’9 minutes
  • Analysisβ€’2 minutes
  • Constructing Suffix Treeβ€’8 minutes
  • Implementationβ€’14 minutes
  • Analysisβ€’4 minutes
3 readingsβ€’Total 14 minutes
  • Counting Sortβ€’10 minutes
  • Slides and External Referencesβ€’2 minutes
  • Slides and External Referencesβ€’2 minutes
1 assignmentβ€’Total 30 minutes
  • Suffix Array Constructionβ€’30 minutes
1 programming assignmentβ€’Total 180 minutes
  • Programming Assignment 3β€’180 minutes

Earn a career certificate

Add this credential to your LinkedIn profile, resume, or CV. Share it on social media and in your performance review.

Instructors

Instructor ratings
4.3 (76 ratings)
University of California San Diego
7 Coursesβ€’759,211 learners

Explore more from Algorithms

Why people choose Coursera for their career

πŸ‘ Image

Felipe M.

Learner since 2018
"To be able to take courses at my own pace and rhythm has been an amazing experience. I can learn whenever it fits my schedule and mood."
πŸ‘ Image

Jennifer J.

Learner since 2020
"I directly applied the concepts and skills I learned from my courses to an exciting new project at work."
πŸ‘ Image

Larry W.

Learner since 2021
"When I need courses on topics that my university doesn't offer, Coursera is one of the best places to go."
πŸ‘ Image

Chaitanya A.

"Learning isn't just about being better at your job: it's so much more than that. Coursera allows me to learn without limits."

Learner reviews

  • 5 stars

    67.43%

  • 4 stars

    21%

  • 3 stars

    7.52%

  • 2 stars

    2.29%

  • 1 star

    1.74%

Showing 3 of 1090

NR
Β·

Reviewed on Oct 18, 2019

Very well put together course. Challenging but understandable. I highly recommend you stick out. If you get stuck check the forums there's lots of helpful things there. Time well spent!

TN
Β·

Reviewed on Oct 4, 2019

The professor explained clearly as usual. The first 3 weeks is not too hard but final week took me really long time to understand.

SS
Β·

Reviewed on Jan 24, 2017

Initially the accent was a little bit hard to understand, but after few minutes everything become crystal clear. Extremely useful course content.

Frequently asked questions

To access the course materials, assignments and to earn a Certificate, you will need to purchase the Certificate experience when you enroll in a course. You can try a Free Trial instead, or apply for Financial Aid. The course may offer 'Full Course, No Certificate' instead. This option lets you see all course materials, submit required assessments, and get a final grade. This also means that you will not be able to purchase a Certificate experience.

When you enroll in the course, you get access to all of the courses in the Specialization, and you earn a certificate when you complete the work. Your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile.

Yes. In select learning programs, you can apply for financial aid or a scholarship if you can’t afford the enrollment fee. If fin aid or scholarship is available for your learning program selection, you’ll find a link to apply on the description page.

Financial aid available,