We may earn an affiliate commission when you visit our partners.
Course image
Udacity logo

Introduction to Graduate Algorithms

Eric Vigoda and Arpan Chakraborty

Take Udacity's free Introduction to Graduate Algorithms course and learn advanced techniques for designing algorithms and apply them to hard computational problems.

What's inside

Syllabus

Overview of main topics covered, course webpage available at: https://gt-algorithms.com
Dynamic programming: Toy problem (Fibonacci numbers), Longest Increasing Subsequence (LIS), and Longest Common Subsequence (LCS).
Read more
Dynamic programming: Knapsack, and Chain Matrix Multiplication.
Dynamic programming algorithms for solving various shortest path problems on graphs.
Modular Arithmetic: Fast Modular Exponentiation and Multiplicative Inverses.
RSA Cryptosystem: Fermat's Little Theorem, RSA Protocol, and Primality Testing.
Lecture about Hashing: Toy problem of Balls into Bins, Traditional Chain Hashing, and Bloom Filters.
Faster Divide-and-Conquer Algorithm for Multiplying Large Integers.
Linear-time Divide-and-Conquer Algorithm for Finding the Median from an unsorted list.
Refresher Lecture about Solving Recurrences.
High-level approach for polynomial multiplication and FFT (Fast Fourier Transform). Primer on complex numbers, including complex roots of unity.
FFT and polynomial multiplication algorithms, and inverse FFT.
Connectivity: Connected components of undirected graphs, Topological sorting of a DAG, and strongly connected components of general directed graphs.
Polynomial-time algorithm for 2-SAT, using the SCC algorithm.
Minimum Spanning Tree (MST): Cut Property for MST's, and Kruskal's MST algorithm.
Introduction to Markov Chains, and an exposition of the PageRank algorithm.
Max-flow: Problem statement, residual network, and Ford-Fulkerson algorithm.
Max-Flow Min-Cut Theorem: Statement and Proof, and proof of correctness of Ford-Fulkerson and Edmonds-Karp augmenting path algorithms.
Max-flow: Application to Image Segmentation problem.
Max-flow: Edmonds-Karp augmenting path algorithm.
Max-flow: Generalization allowing demand constraints.
Linear Programming: Basics, Standard Form, and Simplex Algorithm Overview
Geometry of Linear Programs: Feasible Region, Infeasible LP's, and Unbounded LP's.
Dual of a Linear Program; Converting an LP problem to its Dual; Weak and Strong Duality.
Maximum Satisfiability Problem; Approximate Solutions; Integer Programming; Calculus.
NP: Definition of a Search Problem and Computational Complexity Classes P and NP; Proving a Problem is in NP; Reductions; and the notion of NP-Completeness
3-SAT Problem is NP-Complete
NP-Completeness of Graph Problems: Independent Sets, Clique, and Vertex Cover
Knapsack and Subset Sum Problems are NP-Complete
Halting Problem is Undecidable

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Develops advanced algorithmic techniques for solving hard computational problems, which is highly relevant in academia and industry
Taught by Eric Vigoda and Arpan Chakraborty, who are recognized for their work in algorithms and computational complexity
Covers a wide range of topics, including dynamic programming, graph algorithms, number theory, and linear programming
Designed to build a strong foundation for students interested in pursuing graduate studies in algorithms or computer science
Provides interactive materials and exercises to enhance understanding
Assumes a basic understanding of algorithms and data structures

Save this course

Save Introduction to Graduate Algorithms to your list so you can find it easily later:
Save

Activities

Coming soon We're preparing activities for Introduction to Graduate Algorithms. These are activities you can do either before, during, or after a course.

Career center

Learners who complete Introduction to Graduate Algorithms will develop knowledge and skills that may be useful to these careers:
Algorithm Engineer
An Algorithm Engineer develops and analyzes algorithms to solve complex computational problems. This course would be highly useful for this role, as it covers advanced techniques for designing algorithms and applying them to hard computational problems. The course also provides a strong foundation in dynamic programming, divide-and-conquer algorithms, and graph algorithms, which are all essential skills for an Algorithm Engineer.
Machine Learning Engineer
A Machine Learning Engineer develops and deploys machine learning models. This course would be moderately useful for this role, as it covers techniques for designing and analyzing algorithms, which are essential skills for a Machine Learning Engineer. The course also provides a strong foundation in dynamic programming, divide-and-conquer algorithms, and graph algorithms, which are all useful for machine learning.
Operations Research Analyst
An Operations Research Analyst uses mathematical and analytical techniques to improve the efficiency of organizations. This course would be moderately useful for this role, as it covers techniques for designing and analyzing algorithms, which are essential skills for an Operations Research Analyst. The course also provides a strong foundation in dynamic programming, divide-and-conquer algorithms, and graph algorithms, which are all useful for operations research.
Software Engineer
A Software Engineer designs, develops, and maintains software systems. This course would be moderately useful for this role, as it covers techniques for designing and analyzing algorithms, which are essential skills for a Software Engineer. The course also provides a strong foundation in dynamic programming, divide-and-conquer algorithms, and graph algorithms, which are all useful for software development.
Database Administrator
A Database Administrator designs, builds, and maintains databases. This course would be moderately useful for this role, as it covers techniques for designing and analyzing algorithms, which are essential skills for a Database Administrator. The course also provides a strong foundation in dynamic programming, divide-and-conquer algorithms, and graph algorithms, which are all useful for database administration.
Information Security Analyst
An Information Security Analyst protects an organization's computer systems and networks from cyberattacks. This course would be moderately useful for this role, as it covers techniques for designing and analyzing algorithms, which are essential skills for an Information Security Analyst. The course also provides a strong foundation in dynamic programming, divide-and-conquer algorithms, and graph algorithms, which are all useful for information security.
Data Scientist
A Data Scientist uses data to solve business problems. This course would be moderately useful for this role, as it covers techniques for designing and analyzing algorithms, which are essential skills for a Data Scientist. The course also provides a strong foundation in dynamic programming, divide-and-conquer algorithms, and graph algorithms, which are all useful for data analysis.
Software Architect
A Software Architect designs and develops the overall architecture of a software system. This course would be moderately useful for this role, as it covers techniques for designing and analyzing algorithms, which are essential skills for a Software Architect. The course also provides a strong foundation in dynamic programming, divide-and-conquer algorithms, and graph algorithms, which are all useful for software architecture.
Cryptographer
A Cryptographer develops and analyzes cryptographic algorithms to protect information. This course would be moderately useful for this role, as it covers techniques for designing and analyzing algorithms, which are essential skills for a Cryptographer. The course also provides a strong foundation in dynamic programming, divide-and-conquer algorithms, and graph algorithms, which are all useful for cryptography.
Quantitative Analyst
A Quantitative Analyst uses mathematical and statistical models to analyze financial data. This course would be moderately useful for this role, as it covers techniques for designing and analyzing algorithms, which are essential skills for a Quantitative Analyst. The course also provides a strong foundation in dynamic programming, divide-and-conquer algorithms, and graph algorithms, which are all useful for financial analysis.
Computer Scientist
A Computer Scientist researches and develops new computing technologies. This course would be moderately useful for this role, as it covers techniques for designing and analyzing algorithms, which are essential skills for a Computer Scientist. The course also provides a strong foundation in dynamic programming, divide-and-conquer algorithms, and graph algorithms, which are all useful for computer science research.
Network Engineer
A Network Engineer designs, builds, and maintains computer networks. This course would be moderately useful for this role, as it covers techniques for designing and analyzing algorithms, which are essential skills for a Network Engineer. The course also provides a strong foundation in dynamic programming, divide-and-conquer algorithms, and graph algorithms, which are all useful for network engineering.
Systems Analyst
A Systems Analyst analyzes and designs business systems. This course would be moderately useful for this role, as it covers techniques for designing and analyzing algorithms, which are essential skills for a Systems Analyst. The course also provides a strong foundation in dynamic programming, divide-and-conquer algorithms, and graph algorithms, which are all useful for systems analysis.
Product Manager
A Product Manager manages the development and launch of new products. This course may be useful for this role, as it covers techniques for designing and analyzing algorithms, which can be useful for product development. The course also provides a strong foundation in dynamic programming, divide-and-conquer algorithms, and graph algorithms, which can all be useful for product management.
Business Analyst
A Business Analyst analyzes and solves business problems. This course may be useful for this role, as it covers techniques for designing and analyzing algorithms, which can be useful for solving business problems. The course also provides a strong foundation in dynamic programming, divide-and-conquer algorithms, and graph algorithms, which can all be useful for business analysis.

Reading list

We've selected 15 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Introduction to Graduate Algorithms.
Provides a comprehensive overview of algorithms and data structures, and is written with a focus on being accessible to students and professionals with varying backgrounds.
Provides a strong foundation in mathematical concepts and techniques that are essential for understanding and designing algorithms.
Provides a comprehensive overview of graph algorithms, including topics such as shortest paths, minimum spanning trees, and network flows.
Covers combinatorial optimization problems and algorithms, and provides a theoretical understanding of their complexity.
Covers cryptography and network security concepts and algorithms, and provides a practical understanding of their applications.
Provides an introduction to data structures and algorithms in Java, and includes a collection of exercises and examples.
Covers algorithms and data structures in C++, and includes exercises and examples to help readers understand the material.
Provides an introduction to quantum computing for computer scientists, and includes a collection of exercises and examples.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Introduction to Graduate Algorithms.
Mastering Algorithms: Analysis and Applications
Algorithms and Data Structures - Part 2
ML Algorithms
Practical Steps for Building Fair AI Algorithms
Algorithms: Design and Analysis, Part 1
Data Structures & Algorithms IV: Pattern Matching,...
Machine Learning Algorithms with R in Business Analytics
NP-Complete Problems
Algorithmic Design and Techniques
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser