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

Computing in Python IV: Objects & Algorithms (edX) EdX
Georgia Institute of Technology,GTx

Computing in Python IV: Objects & Algorithms (edX)

Learn about recursion, search and sort algorithms, and object-oriented programming in Python. Complete your introductory knowledge of computer science with this final course on objects and algorithms. Now that you've learned about complex control structures and data structures, learn to develop programs that more intuitively leverage your natural understanding of problems through object-oriented programming. Then, learn to analyze the complexity and efficiency of these programs through algorithms. In addition, certify your broader knowledge of Introduction to Computing with a comprehensive exam.

Self Paced
Self-Paced
Fundamentals of Python (edX) EdX
SDA_Bocconi,SDA Bocconi School of Management

Fundamentals of Python (edX)

We will equip you with everything you need to properly start using Python in your daily work activities. You will learn how to install Python and work with it through different graphical front-ends. You will then learn how to define objects and how to recognize different characteristics and functionalities. Finally, you will learn how to make Python execute a series of instructions in a sequential order through loops, as well as how to write your own functions.

Self Paced
Self-Paced
Aplicaciones de la Teoría de Grafos a la vida real II (edX) EdX
Universitat Politècnica de València,UPValenciaX

Aplicaciones de la Teoría de Grafos a la vida real II (edX)

Aprenderemos a modelizar problemas del mundo real mediante su representación con grafos y a resolverlos mediante sus algoritmos asociados. Este curso trata la Teoría de Grafos desde el punto de vista de la modelización, lo que nos permitirá con posterioridad resolver muchos problemas de diversa índole. Presentaremos ejemplos de los distintos problemas en un contexto real, analizaremos la representación de éstos mediante grafos y veremos los algoritmos necesarios para resolverlos.

Self Paced
Self-Paced
Introduction to Computer Science and Programming Using Python (edX) EdX
MIT,MITx

Introduction to Computer Science and Programming Using Python (edX)

An introduction to computer science as a tool to solve real-world analytical problems using Python 3.5. This course is the first of a two-course sequence: Introduction to Computer Science and Programming Using Python, and Introduction to Computational Thinking and Data Science. Together, they are designed to help people with no prior exposure to computer science or programming learn to think computationally and write programs to tackle useful problems.

Jan 24th 2024
5-12 Weeks
Data Structures and Algorithm Design Part II | 数据结构与算法设计(下) (edX) EdX
Tsinghua University,TsinghuaX

Data Structures and Algorithm Design Part II | 数据结构与算法设计(下) (edX)

Learn the basics of data structures and methods to design algorithms and analyze their performance. 本课程旨在围绕各类数据结构的设计与实现,揭示其中的规律原理与方法技巧;同时针对算法设计及其性能分析,使学生了解并掌握主要的套路与手段。

Self Paced
Self-Paced
Introducción a la programación en Java: estructuras de datos y algoritmos (edX) EdX
Universidad Carlos III de Madrid - UC3M,UC3Mx

Introducción a la programación en Java: estructuras de datos y algoritmos (edX)

¡Aprende a mejorar tu código en Java utilizando estructuras de datos fundamentales y potentes algoritmos de programación! En este curso introductorio de java aprenderás programación en Java de forma fácil e interactiva. Trabajarás con estructuras de datos fundamentales, tales como listas, pilas, colas y árboles, sobre las cuales se presentarán algoritmos para insertar, eliminar, buscar y ordenar información de una manera eficiente.

Self Paced
Self-Paced
Data Structures & Algorithms III: AVL and 2-4 Trees, Divide and Conquer Algorithms (edX) EdX
Georgia Institute of Technology,GTx

Data Structures & Algorithms III: AVL and 2-4 Trees, Divide and Conquer Algorithms (edX)

Learn more complex tree data structures, AVL and (2-4) trees. Investigate the balancing techniques found in both tree types. Implement these techniques in AVL operations. Explore sorting algorithms with simple iterative sorts, followed by Divide and Conquer algorithms. Use the course visualizations to understand the performance.

Self Paced
Self-Paced
Data Structures & Algorithms I: ArrayLists, LinkedLists, Stacks and Queues (edX) EdX
Georgia Institute of Technology,GTx

Data Structures & Algorithms I: ArrayLists, LinkedLists, Stacks and Queues (edX)

Work with the principles of data storage in Arrays, ArrayLists & LinkedList nodes. Understand their operations and performance with visualizations. Implement low-level linear, linked data structures with recursive methods, and explore their edge cases. Extend these structures to the Abstract Data Types, Stacks, Queues and Deques.

Self Paced
Self-Paced
Dynamic Programming: Applications In Machine Learning and Genomics (edX) EdX
University of California, San Diego,UC San DiegoX

Dynamic Programming: Applications In Machine Learning and Genomics (edX)

Learn how dynamic programming and Hidden Markov Models can be used to compare genetic strings and uncover evolution. If you look at two genes that serve the same purpose in two different species, how can you rigorously compare these genes in order to see how they have evolved away from each other?

Self Paced
Self-Paced