Algorithms & Data Structures 3/4:DP,Hashing,Trie,Suffix Tree
5.0 (8 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
315 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Algorithms & Data Structures 3/4:DP,Hashing,Trie,Suffix Tree to your Wishlist.

Add to Wishlist

Algorithms & Data Structures 3/4:DP,Hashing,Trie,Suffix Tree

Dynamic Programming,Hashing,Karp–Rabin,KMP,Boyer-Moore,Trie,Suffix Tree,Suffix Array,Compression,Mathematical Induction
5.0 (8 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
315 students enrolled
Created by John Mathew
Last updated 9/2017
English
Current price: $10 Original price: $200 Discount: 95% off
5 hours left at this price!
30-Day Money-Back Guarantee
Includes:
  • 2 hours on-demand video
  • 1 Article
  • 1 Supplemental Resource
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • Hashing
  • Collision
  • Pattern Matching
  • Brute Force
  • Karp–Rabin
  • KMP(Knuth-Morris-Pratt)
  • Boyer-Moore
  • Trie
  • Compressed Trie
  • Suffix Tree
  • Suffix Array
  • Compression
  • LCP Array
  • Run-Length Encoding
  • Huffman Coding
  • Lampel-Ziv-Welch Encoding
  • Arithmetic Coding
  • Dynamic Programming
  • Fibonacci Number
  • Mathematical Induction
  • Pigeon Hole Principle
  • Memoization
  • Binomial Theorem
  • Pascal's Triangle
  • Knapsack Problem
  • Search of State Space Tree
  • Branch and Bound
  • Pruning (Backtracking)
  • Best-First Search
  • To receive certification that you have completed the course, you must attend the course in full.
  • The full training program is divided into few courses. If you wish to take more courses, I recommend to take the courses in sequence to get WHOLE of this training programme.
  • When you complete this course, you will be able to understand the terminologies and concepts of Algorithms for software development.
  • You will be able to apply the roles of Algorithms in products and various components of the software product.
  • This course is designed to improve the software developer’s implementation capabilities by covering the algorithms and data structures to improve implementation ability.
  • This course will allow developers to build the concepts in algorithms and learn how to apply them in real world tasks.
  • Job seekers who are preparing for interview in Product MNC/e-commerce/service companies. Anyone who has deep desire to learn Data Structures And Algorithms,Competitive Programming.
  • For college going students, this course will help in improving grades in college curriculum.
  • To receive certification that you have completed the course, you must attend the course in full.
View Curriculum
Requirements
  • The full training program is divided into few courses. It is recommended to finish all previous courses of this training program. There may be some references which are taken from the previous courses.
  • If you wish to take all the courses, I recommend to take the courses in sequence to get WHOLE of this training program.
  • A spare working computer with gcc compiler(preferably) or virtualization software like VMWare Fusion or Virtual Box.
  • This course assumes that the students have some background in mathematical concepts and formal reasoning.
Description

What is the course about?
"It is always possible to make a brute force approach to solve any problem, the algorithms are here to provide an optimized solution to them."

This is the fifth part of the Training programme on Algorithms and Data Structures which covers the essential information that every serious programmer needs to know about algorithms and data structures. This course will cover Hashing,Collision,Pattern Matching,Brute Force,Karp–Rabin,KMP(Knuth-Morris-Pratt),Boyer-Moore,Trie,Compressed Trie,Suffix Tree,Suffix Array,Compression,LCP Array,Run-Length Encoding,Huffman Coding,Lampel-Ziv-Welch Encoding,Arithmetic Coding,Dynamic Programming,Fibonacci Number,Mathematical Induction,Pigeon Hole Principle,Memoization,Binomial Theorem,Pascal's Triangle,Knapsack Problem,Search of State Space Tree,Branch and Bound, Pruning (Backtracking),Best-First Search. This comprehensive course will give you enough understanding on algorithms and data structures from where you can take yourself to higher level of expertise.

The output after applying the particular algorithm is obviously important, only the performances changes between 2 different sort algorithm but it's not the case for a hash, a checksum, a compression one (data, audio and video) etc... in this case knowing what the algorithm is doing does matter. This course will help you in thinking out of the box.
If you don't know the algorithms, how would you know:
- Which image compression to use ? jpg or jpeg2000 ?
- Which audio compression Mp3, OGG, AAC ?
- Which data compression ? zip, 7zip, rar ?
- Which hash to use ? md5, sha-1
- Which sort algorithm ? heap sort, qsort, etc... ?
- The list is long, all of them have their pros and cons.
Its all about algorithms. All the details of these compressions are not explained in this course but it is a food for thought.

You basically won't ever get an interview that won't require you to have some foundational knowledge in computer science, and such interviews will often ask you about complexity of various algorithms.
You will be taught all the skills needed for Algorithms and data structures from the basic fundamentals to the very complicated level of details and tricks related to the languages.
This course will benefit you to perform your programming jobs better and also help you to get to better positions, with confidence, in case you are looking out for jobs.This course will help you to to handle Algorithm based interview with more confidence.

This course is not based on any one programming language. Its a concept based training program which deals with psuedo code. This can be applied to any language viz C, C++, Java, Python etc

Please remember that this is a serious course on algorithms. I believe that subjects like algorithms and data structures cannot be learned in few hours or days. It required continuous practice. Students may have to put a lot of efforts in order to become expert in programming and make the best use of this course. This course covers the essential information that every programmer needs to know about algorithms and data structures.

If you are:
1. Tired of finding good learning resources on Algorithms ?
2. Do you want to become a expert level Programmer ?
3. Are you ready to learn how Hashing,Collision,Pattern Matching,Brute Force,Karp–Rabin,KMP(Knuth-Morris-Pratt),Boyer-Moore,Trie works ?
4. As a Bonus, get a complimentary consultation about Linux OS and Linux Kernel Internals, Algorithms, Data Structures, HTML, C and Java Programming languages.
5. So if you’re looking for knowledge, a rewarding adventure, and the advantage a future perspective can offer, I’m excited to tell you more about my step-by-step training program for Algorithms and Data Structures.

What kind of material is included?
1. This course consists of high quality training content using quality videos with industry oriented hands-on examples.
2. I have tried to include the juice of my 10 years of experience in this course.
3. The focus is on giving real life essential tricks and skills.
4. I suggest students to take this course with pen and paper handy. Note the important points and take part in discussions. The exercise is the most important part in learning any subject. I advise students to take the problems after each section.

How long will the course take to complete?
1. This is the comprehensive course covering almost all the topics of algorithms and data structures.
2. I advise students to cover not more than one lesson/section per day and do not move to the next lesson/section without doing the exercise.

How is the course structured?
1. A perfect blend of theory and programming.

Why take this course?
0. Algorithms is the hot subject for interviewers. This course will surely help.
1. This is the comprehensive course covering almost all the topics of algorithms and data structures.
2. This course will tends to replace text books ie it will be a complete reference of algorithms and data structures.
3. For the college going students, this course helps in improving grades in college curriculum and increases the chances at the final Campus Interview.
4. Algorithms is a difficult subject, I have tried hard to make my delivery easy and effective.

When does the course start and finish?
The course starts now and never ends! It is a completely self-paced online course - you decide when you start and when you finish.

How long do I have access to the course?
How does lifetime access sound? After enrolling, you have unlimited access to this course for as long as you like - across any and all devices you own.

What if I am unhappy with the course?
We would never want you to be unhappy! If you are unsatisfied with your purchase, contact us in the first 30 days and we will give you a full refund.

Join worldwide learners who uses Algorithms and DS as part of their curriculum and Job.

Visit my website eLearningMedium to get discounts on my courses + additional free resources + discounted course bundles.

Who is the target audience?
  • Job seekers who are preparing for interview in Product MNC/e-commerce/service companies. Anyone who has deep desire to learn Data Structures And Algorithms,Competitive Programming.
  • Undergraduates, Graduates and Post-Graduates
  • Software developers, computer science engineers and students who wish to strengthen their software problem-solving ability.
  • Experienced software engineers who are looking to refresh important fundamental concepts
  • If you're fed up with academia centric courses on Data Structures & Algorithms and want to intuitively & practically understand how to implement and the most popular algorithms and data structures in software, then this course is for you.
  • If you want to learn popular data structures and algorithms at a deep level, then this course is for you.
  • If you are a software developer with a good grasp of the fundamentals of Programming, and you are confident with the essentials but want to delve deeper and understand data structures and algorithms, then this course is for you.
  • This course is meant for everyone from scientists to software developers who want to get closer to algorithmic thinking.
  • This is a course for professionals and students in occupational group in any organization or academics to help them to understand the basics of Algorithms and data structures that they should know well.
  • For college going students, this course will help in improving grades in college curriculum.
Compare to Other C Courses
Curriculum For This Course
20 Lectures
02:10:53
+
Orientation
1 Lecture 00:30

Orientation

Preview 00:30
+
String Search:Hashing,Karp–Rabin,KMP,Boyer-Moore,Trie,Suffix Tree & Array
8 Lectures 51:36

Intro, Learning objectives

Preview 00:30

Direct Address Table (Array)
Hash Table
Hash Function
Collision
Solution to Collision: Chaining, Open Address

Preview 03:45

String Handling
Brute Force Algorithm
Brute Force Pattern Search Algorithm
Karp–Rabin Algorithm
KMP(Knuth-Morris-Pratt) Algorithm
Boyer-Moore Algorithm
Comparison of Pattern Matching Algorithms

Pattern Matching,Brute Force,Karp–Rabin,KMP(Knuth-Morris-Pratt),Boyer-Moore
21:47

Tree for expressing the set of strings
Suffix Trie
String Operation Using Suffix Trie
Substring Test Through Trie
Longest Common Prefix of Two Suffixes
Find Kth Suffix Sorted in Lexicographic Order

Preview 02:56

Expression of trie, which includes all suffixes of a string
Compressed Trie
Suffix Tree for String S = {xabxac}
Attributes of Suffix Tree of String S Having Length of S
Suffix Tree for S = {xabxa}
A Suffix Becomes a Prefix of Other Suffix
Suffix Tree for S = {xabxa}
Time for Creating Suffix Tree

Suffix Tree, Compressed Trie
04:49

The meaning of Suffix Array
complexity and advantages of suffix array.
Advantages of suffix array
Generation of Suffix Array
LCP Array
Generation of LCP Array
Suffix Tree and Suffix Array

Preview 03:18

Use and Importance of Compression
Compression Methods:Run-Length Encoding,Huffman Coding,Lampel-Ziv-Welch Encoding,Arithmetic Coding
Compression Terms
Run Length Decoding Algorithm
Huffman Code: Decoding

Compression:Run-Length Encoding,Huffman,Lampel-Ziv-Welch,Arithmetic Coding
08:28

Summary

Summary
06:03
+
Introduction of Dynamic Programming,Fibonacci,Induction,Memoization,Binomial
6 Lectures 42:39

Intro, Learning objectives

Intro, Learning objectives
00:49

Recursive Function for Obtaining Fibonacci Number
Function Call Tree for Fibonacci Sequence

Fibonacci Number and Function Call Tree
04:26

Mathematical Induction: Fibonacci Sequence, Proving Process Using Mathematical Induction
Calculation of Number of Calling fibo(n) Function
Redundancy of Fibonacci Sequence

Mathematical Induction and Pigeon Hole Principle
06:41

Algorithm Applying Memoization
Application of Memoization of Fibonacci Function
Dynamic Programming Algorithm
Overlapping Subproblems
Optimal Substructure
Divide and Conquer vs Dynamic Programming
Application Method of Dynamic Programming
Application of DP for Fibonacci Number

Memoization and Dynamic Programming
14:04

State Space Tree
Application of Memoization to Recursive Algorithm
Binomial Theorem
Binomial Coefficient
Pascal's Triangle
Calculation of Binomial Coefficient by Using Memoization
Calculation of Binomial Coefficient by Applying Dynamic Programming

Binomial Coefficient,State Space Tree, Binomial Theorem,Pascal's Triangle
13:25

Summary

Summary
03:14
+
Knapsack,State Space Tree,Branch & Bound,Pruning,Best-First Search
4 Lectures 32:52

Intro, Learning objectives

Intro, Learning objectives
00:37

Exhaustive Search
Algorithm Applying Memoization
Dependence of Subproblems
Algorithm of Calculating Optimal Solution by Applying Dynamic Programming

Knapsack,Algorithm Applying Memoization,Optimal Solution by Applying DP
15:03

Search Method of State Space Tree
Branch and Bound
Depth-First Search through Branch and Bound, Pruning (Backtracking)
Pruning Process by Calculating the Bound of Visiting Node
State Space Tree Which Pruning is Performed through Backtracking
Depth-First Search of Branch and Bound
Strategy for Reaching the Optimal Solution More Quickly
Best-First Search

Space Tree,DFS through Branch and Bound, Pruning(Backtracking),BFS
14:16

Summary

Summary
02:56
+
Bonus and Discounts
1 Lecture 03:30

Finally, you have reached to the Last Lecture of the course. Great !!
Its time to move on to another course to Skill-Up.
Get Huge Discount on Courses on Linux, Algorithms, Software Project Management, Mobile APP Development, Java and Software Engineering. Apply Coupon Code DOLLARTEN:
  
1. Linux
  
a. Linux OS in Embedded System & Linux Kernel Internals(1/2)
https://www.udemy.com/becoming-linux-expert-series-install-linux-operating-system/?couponCode=DOLLARTEN
Overview of the structure of modern operating systems. Over the course of the subsequent units, we will discuss the history of modern computers, analyze in detail each of the major components of an operating system (from processes to threads), and CPU scheduling, Synchronization and Deadlocks
 
b. Linux OS in Embedded System & Linux Kernel Internals(2/2)
https://www.udemy.com/c-complete-reference/?couponCode=DOLLARTEN
Focus on UNIX-based operating systems, though we will also learn about alternative operating systems, including Windows. Over the course of the subsequent units, analyze in detail each of the major components of an operating system, Memory management, Paging, Memory Management in Intel 80386, Virtual Memory, Demand Paging, , Page Fault, Belady’s Anomaly, Stack Replacement Algorithms, Thrashing, File Concept, Directory Structure, File System, Mounting, File Sharing and Protection, Space Allocation Techniques, Disk Structure and Scheduling, Free Space Management.
  
2. Algorithms and Data Structures
  
a. Algorithms & Data Structures 1/4:Greedy,DFS,BFS,Tree,Heap
https://www.udemy.com/oops-java-object-oriented-programming/?couponCode=DOLLARTEN
Introduction to Algorithms, Arrays, Search, Greedy Algorithm, Sort, Subset, Stack Data Structures, Memoization, backtracking, Dynamic Programming, Depth First Search (DFS), Divide and Conquer,Pattern matching,Queue,Breadth First Search(BFS),List,Insertion,Merge,Tree(Binary & Expression),Binary search Tree,Heap
  
b. Algorithms & Data Structures 2/4:Combinatorial,BT,MST,Prim
https://www.udemy.com/java-oops-object-oriented-programming/?couponCode=DOLLARTEN
SW Problem Solving, Algorithm Complexity, Bit Operations, Number Bases, Floating Point Numbers, O(Big-Oh)-Notation, (Big-Omega)-Notation, (Theta)-Notation, Endianness, Exhaustive Search Method, Combinatorial Problem, Baby, Gin Problem, Brute-Force, Permutation, Lexicographic–Order, Johonson-Trotter, Combination, Minimum-exchange Requirement, Subset, Knapsack Problem and Fractional Knapsack Method, Greedy Algorithm and Application of Greedy, Approach, Recursive Algorithm Applying Greedy Method, Comparison of Greedy Method and Dynamic Programming, Representative Algorithms of Greedy Methods, Huffman coding, Change Reducing Problem, Meeting Room Scheduling, Divide and Conquer, Merge Sort, Quick sort, Hoare Partition, Lomuto Partition, Binary Search and Power Set,Backtracking, Maze Finding, State Space Tree, 8-Queens Problem, Subset, Power Set, Permutation, Graphs, Search, Disjoint Sets, Expression of Linked List, Minimum Spanning Tree, Prim Algorithm, Kruskal Algorithm, Shortest, Path, Dijkstra Algorithm, Bellman-Ford Algorithm and Floyd-Warshall Algorithm.
  
c. Algorithms & Data Structures 3/4:DP,Hashing,Trie,Suffix Tree
https://www.udemy.com/algorithms-data-structures-programming/?couponCode=DOLLARTEN
Hashing,Collision,Pattern Matching,Brute Force,Karp–Rabin,KMP(Knuth-Morris-Pratt),Boyer-Moore,Trie,Compressed Trie,Suffix Tree,Suffix Array,Compression,LCP Array,Run-Length Encoding,Huffman Coding,Lampel-Ziv-Welch Encoding,Arithmetic Coding,Dynamic Programming,Fibonacci Number,Mathematical Induction,Pigeon Hole Principle,Memoization,Binomial Theorem,Pascal's Triangle,Knapsack Problem,Search of State Space Tree,Branch and Bound, Pruning (Backtracking),Best-First Search
  
d. Algorithms & Data Structures 4/4:DP,NPComplete,Hard,Coloring
https://www.udemy.com/algorithms-programming-data-structures/?couponCode=DOLLARTEN
Dynamic Programming,Longest Increasing Sequence,All Pairs Shortest Path,Weighted directed graph,Floyd-Warshall Algorithm,Traveling Salesman Problem,NP-Complete,Deterministic, Nondeterministic,Polynomial Time Conversion,NP-Hard,SAT,Boolean Expression,Partition,Vertex Cover,Independence Set,Clique,Graph Coloring,Set Cover,Longest Path,Hamiltonian Cycle,Bin Packing,Job Sheduling,Approximation Algorithm,Job Scheduling,Simulated Annealing,Graph of Search Process,Number Theory and Optimization,Probability,GCD,Euclid Algorithm,LCM,Modulo Operation
  
3. Software Project Management
  
a. Project Management 1/4:SDLC Models & Methodology,Agile
https://www.udemy.com/software-engineering-software-architecture/?couponCode=DOLLARTEN
Software Life Cycle Models & Development Methodology, Integration, Stakeholder, Scope, Resource, Time, Cost, Risk, Quality, Procurement, Communication, software Engineering
  
b. Project Management 2/4:Time Management,Risk Management,Scope
https://www.udemy.com/software-engineering-management/?couponCode=DOLLARTEN
Integration Management,Time Management,Risk Management,Scope Management,Work and Change Control,Extraction & Analysis of Requirements,WBS,Scope Creep and Gold Plating, Scope and Quality
  
c. Project Management 3/4:Resource Management,Cost, Procurement
https://www.udemy.com/programming-algorithm/?couponCode=DOLLARTEN
Project Resource Management,Resource Estimation,Project Cost Management,Develop Budget and Cost Baseline,Earned Value Method,Project Procurement Management
  
d. Project Management 4/4:Quality Management & Software Testing
https://www.udemy.com/programming-algorithms-data-structure/?couponCode=DOLLARTEN
Project Quality Management,Characteristics and Assessment of Software Quality,Quality Plan Process,Quality Assurance Process,Software test,White box tests,Black,box tests,Regression tests,Software test case Design and Components,Software test Automation,Configuration Management,Baseline,Maintenance,Project,Communication Management,Communication Network
  
4. Software Development Process and Software Engineering
   
a. Software Development - Software Architecture & Software Engineering, UML(1/3)
https://www.udemy.com/uml-software-engineering/?couponCode=DOLLARTEN
Software Platform: External and Internal, Software Architecture: Style and Documentation, Software Development Process, Software Development Model, Software Requirement Specification, Software Design Document, API Specification, Unified Modeling Language UML, UML Basic Building Blocks, UML Modeling Rules, UML Modeling Tool and Modeling with UML Diagram
  
b. Software Development - Coding Appearance & Idioms, Design Patterns(2/3)
https://www.udemy.com/object-oriented-programming-java-io/?couponCode=DOLLARTEN
Coding Appearance, File Organization, Declaration and Statements, Indentation Style and Comments, Naming Convention, Coding Idiom, Memory Management, Security, Exception Handling, Concurrency / Parallelism, Type Safety, Performance, Code Review: Gerrit - Google Code review System, Code Review: Gerrit - Review Board, Design Patterns, Creational Pattern, Structural Pattern, Behavioral Pattern, Code Refactoring Methods.
  
c. Software Development - Software Testing, Configuration Management & Open Source License(3/3)
https://www.udemy.com/software-architecture-software-engineering/?couponCode=DOLLARTEN
Software Testing and Software Test Levels, Testing Techniques, Intuition and Experience-Based Technique, Specification-Based Technique, Code-Based Technique, Software Configuration Management, Issue Tracking, Version Control, Understanding of Open Source, Open Source License, GPL Violation Watchdogs, Open Source Contribution, Main Obligations of GPL 2.0, GPL3.0, Main Obligations of LGPL 2.1, AGPL, Main Obligations of MPL1.1, EPL, Main, Obligations of Apache2.0, BSD2.0, Open Source Instructions for Developers, Instructions to Adopt Open Source, Instructions to Use Open Sources, Instructions to Distribute Open Sources
  
5. HTML5 : Mobile App Development
https://www.udemy.com/data-structure-algorithms/?couponCode=DOLLARTEN
HTML5, Tags, CSS, Responsive Web, JavaScript, DOM, jQuery, Selectors, Mobile App Development
  
6. Java Programming Language
   
a. Java Programming(1/3):JVM,Operator & Array,Control Statement
https://www.udemy.com/object-oriented-programming-java-net/?couponCode=DOLLARTEN
Java Development Kit JDK,Java Virtual Machine JVM,Operator and Array,Control Statements
    
b. Java Programming(2/3):Object Oriented Programming, java.lang
https://www.udemy.com/oops-java-net/?couponCode=DOLLARTEN
OOP,Inheritance & Polymorphism,Overloading & Encapsulation,Abstraction,Interface,Exception Handling,'java.lang' Package
  
c. Java Programming(3/3):java io,java net,java.util,Map,Thread
https://www.udemy.com/java-net-object-oriented-programming/?couponCode=DOLLARTEN
java io,java net,java.util,Utility,Formatter,Collection,Generics,Map,Chatting Program(Server and Clients)
   
Visit my website eLearningMedium to get additional free resources + discounted course bundles

Bonus Lecture
03:30
About the Instructor
John Mathew
5.0 Average rating
73 Reviews
911 Students
15 Courses
Software Programmer, Mobile Developer, Project Manager

I  was apparently not a diligent student. I worked with C/C++ and HTML, CSS, JavaScript since 12 years. I speak to the world on software freedom. From the beginning of my career I have always worked in large and small teams. While programming has been more of a individual activity, it is the collaboration in teams that can make and break a project. I have been interested in algorithms and data structures and its implementations especially in Java since university.

I am a co-author of various manuals, and has edited and reviewed more than a dozen other books. I wrote columns that provided keen insights into the little algorithmic nuggets that we use in our programs. My favorite books includes  "Writing Efficient Programs", "More Programming Pearls" and "Programming Pearls". The best programmers not only continuously improved the quality of their work, they also influence other members of their team.

I learned about project management and team interaction working at various organisations. I still believe that humans are still at the beginning of the code revolution. Programmers and users are still imitating what came before, and haven’t even imagined all that could be in the future. One thing I am sure of is that code is a type of language, based on the same logic as Sanskrit, and for the first time in history, language can change the physical world. Programming is a literature.

I've always had a passion for teaching in seminars and corporations during my consulting projects. My online school eLearningMedium gives me the opportunity to share my knowledge with students of all backgrounds and experiences across the globe! I'm really excited for this opportunity to bring to you real-world practical experience!

I've plans of making some of the courses about Algorithms and Data Structures, Java, HTML5, Software Engineering and Software Project Management. I give all my heart into creation of courses. I always try to explain everything the easiest possible way. I'm sure that my courses will help you in the adventure.