Algorithms on Strings
Algorithms on Strings
This course is part of Data Structures and Algorithms Specialization
97,879 already enrolled
Included with
Learn more
Ask Coursera
1,090 reviews
1,090 reviews
Details to know
4 assignments
See how employees at top companies are mastering in-demand skills
Build your subject-matter expertise
- 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
Explore more from Algorithms
- Status: Free TrialJ
Johns Hopkins University
Course
- Status: Free TrialG
Google
Course
- Status: Free TrialU
University of California San Diego
Course
- Status: FreeP
Princeton University
Course
Why people choose Coursera for their career
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
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!
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.
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.
Advance your career with an online degree
Earn a degree from world-class universities - 100% online
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.
More questions
Financial aid available,
