EdX

Data Structures & Algorithms IV: Pattern Matching, Dijkstra’s, MST, and Dynamic Programming Algorithms (edX)

Data Structures & Algorithms IV: Pattern Matching, Dijkstra’s, MST, and Dynamic Programming Algorithms (edX)

Delve into Pattern Matching algorithms from KMP to Rabin-Karp. Tackle essential algorithms that traverse the graph data structure like Dijkstra’s Shortest Path. Study algorithms that construct a Minimum Spanning Tree (MST) from a graph. Explore Dynamic Programming algorithms. Use the course visualization tool to understand the algorithms and their performance.

Class Deals by MOOC List - Click here and see EdX's Active Discounts, Deals, and Promo Codes.

This Data Structures & Algorithms course completes the 4-course sequence of the program with graph algorithms, dynamic programming and pattern matching solutions. A short Java review is presented on topics relevant to new data structures covered in this course. The course does require prior knowledge of Java, object-oriented programming and linear and non-linear data structures. Time complexity is threaded throughout the course within all the data structures and algorithms.
You will delve into the Graph ADT and all of its auxiliary data structures that are used to represent graphs. Understanding these representations is key to developing algorithms that traverse the entire graph. Two traversal algorithms are studied: Depth-First Search and Breadth-First Search. Once a graph is traversed then it follows that you want to find the shortest path from a single vertex to all other vertices. Dijkstra’s algorithm allows you to have a deeper understanding of the Graph ADT. You will investigate the Minimum Spanning Tree (MST) problem. Two important, greedy algorithms create an MST: Prim’s and Kruskal’s.
Prim’s focuses on connected graphs and uses the concept of growing a cloud of vertices. Kruskal’s approaches the MST differently and creates clusters of vertices that then form a forest.
The other half of this course examines text processing algorithms. Pattern Matching algorithms are crucial in everyday technology. You begin with the simplest of the algorithms, Brute Force, which is the easiest to implement and understand. Boyer-Moore and Knuth-Morris-Pratt (KMP) improve efficiency by using preprocessing techniques to find the pattern. However, KMP does an exceptional job of not repeating comparisons once the pattern is shifted. The last pattern matching algorithm is Rabin-Karp which is an “out of the box” approach to the problem. Rabin-Karp uses hash codes and a “rolling hash” to find the pattern in the text. A different text processing problem is locating DNA subsequences which leads us directly to Dynamic Programming techniques. You will break down large problems into simple subproblems that may overlap, but can be solved. Longest Common Subsequence is such an algorithm that locates the subsequence through dynamic programming techniques.
This course is part of the Data Structures and Algorithms Professional Certificate.

What you'll learn

  • Improve Java programming skills by implementing graph and Dynamic Programming algorithms
  • Study algorithm techniques for finding patterns in text processing
  • Use preprocessing in the Boyer-Moore and KMP algorithms
  • Explore the problem with hash codes in the Rabin-Karp algorithm
  • Understand the Graph ADT and its representations within auxiliary structures
  • Traverse graphs using the Depth-First and Breadth-First Search algorithms
  • Investigate Dijkstra’s Shortest Path algorithm which operates on weighted graphs
  • Study the Minimum Spanning Tree (MST) problem and its characteristics
  • Utilize Greedy algorithms, like Prim’s and Kruskal’s, to find the MST
  • Decompose large problems using Dynamic Programming techniques
  • Apply Dynamic Programming techniques in the Longest Common Subsequence algorithm

Syllabus

Module 0: Introduction and Review

  • Review of important Java principles involved in object-oriented design
  • The Iterator & Iterable design patterns, and the Comparable & Comparator interfaces
  • Basic “Big-Oh” notation and asymptotic analysis

Module 12: Pattern Matching Algorithms

  • Examine algorithms for text processing, the simplest being Brute Force
  • Apply preprocessing techniques in Boyer-Moore to improve performance
  • Knuth-Morris-Pratt (KMP) avoids waste in prefixes of the pattern to achieve the best runtime
  • Approach the pattern matching problem from the perspective of hash codes in Rabin-Karp
  • Consider the time complexity of each of the algorithms

Module 13: Introduction to Graph Algorithms

  • Explore the Graph ADT and its representation in auxiliary data structures
  • Implement the Depth-First Search and Breadth-First Search graph traversal algorithms
  • Examine weighted graphs and Dijkstra’s shortest path algorithm which uses edge relaxation

Module 14: Minimum Spanning Trees

  • Study weighted, undirected graphs to find Minimum Spanning Trees (MST)
  • Apply greedy algorithms to solve the MST problem
  • Prim’s algorithm operates on connected graphs and employs the concept of cloud
  • Approach the MST problem with Kruskal’s algorithm using cluster and forest concepts

Module 15: Dynamic Programming

  • Apply the Dynamic Programming techniques that focus on the subproblems
  • Examine the components of a dynamic programming algorithmic solution
  • Implement the Longest Common Subsequence algorithm to solve DNA
Go to Class
MOOC List is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Related Courses

AP Computer Science A: Java Programming Loops and Data Structures (edX) EdX
Purdue University,PurdueX

AP Computer Science A: Java Programming Loops and Data Structures (edX)

AP Computer Science A from Purdue University. In this computer science course, you will learn the basics of programming in the Java language, and cover topics relevant to the AP Computer Science A course and exam. This course will cover repetition statements (for, while, do-while and for-each), the array data structure, methods and recursion.

No sessions available
5-12 Weeks
Implementation of Data Structures (edX) EdX
IIT Bombay,IITBombayX

Implementation of Data Structures (edX)

Learn how to write correct and efficient data structures manipulation using existing standard template library (STL) of C++. Get introduced to the power of STL and make your code more solid, reusable, and robust. In this Computer Science course, you will learn about implementation of all major abstract data structures using object-oriented programming paradigm of C++.

This course is archived
5-12 Weeks
Laboratorio di Programmazione (edX) EdX
University of Naples Federico II,FedericaX

Laboratorio di Programmazione (edX)

Impara a risolvere problemi complessi attraverso l'uso del computer e avvicinati alla magia degli algoritmi. Il linguaggio di programmazione è uno degli strumenti che abbiamo per interpretare e risolvere i problemi di tutti i giorni. Un linguaggio che è alla base di problemi comuni, come le previsioni del tempo o l'analisi della deformazione di una struttura di un'auto in un incidente stradale.

Self Paced
Self-Paced
Hacking PostgreSQL: Data Access Methods (edX) EdX
Ural Federal University,UrFUx

Hacking PostgreSQL: Data Access Methods (edX)

Learn the science, engineering practices and hacking techniques of data access – core aspects of information processing in a database. This course is about data storage and data processing technologies with examples from PostgreSQL. It is geared toward database core developers, operation systems developers, system architects, and all those who want to understand databases in more detail.

No sessions available
13-24 Weeks
CS50's Introduction to Computer Science (edX) EdX
HarvardX,Harvard University

CS50's Introduction to Computer Science (edX)

An introduction to the intellectual enterprises of computer science and the art of programming. This is CS50, Harvard University's introduction to the intellectual enterprises of computer science and the art of programming for majors and non-majors alike, with or without prior programming experience. An entry-level course taught by David J. Malan, CS50 teaches students how to think algorithmically and solve problems efficiently.

Self Paced
Self-Paced
How to Code: Complex Data (edX) EdX
The University of British Columbia,UBCx

How to Code: Complex Data (edX)

Learn how to design more complex programs, using new data structures, abstraction, and generative recursion. As your program requirements get more complex, you will find that simple additions to the design method make it easy to write well-structured and well-tested code that is easy to maintain. By learning how to capture common data and control structures using abstraction, your programs will get shorter and better tested.

Self Paced
Self-Paced