We may earn an affiliate commission when you visit our partners.
Course image
Holczer Balazs

This course is about data structures and algorithms. We are going to implement the problems in Java, but I try to do it as generic as possible: so the core of the algorithms can be used in C++ or Python. The course takes approximately 12 hours to complete. I highly recommend typing out these data structures several times on your own in order to get a good grasp of it.

Read more

This course is about data structures and algorithms. We are going to implement the problems in Java, but I try to do it as generic as possible: so the core of the algorithms can be used in C++ or Python. The course takes approximately 12 hours to complete. I highly recommend typing out these data structures several times on your own in order to get a good grasp of it.

Section 1 - Tries

  • what are prefix trees (tries)

  • basics operations: insertion, sorting and autocomplete

  • longest common prefix problem

  • prefix trees applications in networking (IP routing)

Section 2 - Ternary Search Trees

  • what is the problem with tries?

  • what are ternary search trees

  • basic operations: insertion and retrieval

  • applications of tries (IP routing and Boggle Game)

Section 3 - Substring Search Algorithms

  • substring search algorithms

  • brute-force substring search

  • Z substring search algorithm

  • Rabin-Karp algorithm and hashing

  • Knuth-Morris-Pratt (KMP) substring search algorithm

Section 4 - Strings

  • strings in Java programming

  • what is the String Constant Pool?

  • prefixes and suffixes

  • longest common prefix problem

  • longest repeated substring problem

  • suffix tries and suffix arrays

Section 5 - Sorting Algorithms

  • basic sorting algorithms

  • bubble sort and selection sort

  • insertion sort and shell sort

  • quicksort and merge sort

  • comparison based and non-comparison based approaches

  • string sorting algorithms

  • bucket sort and radix sort

Section 6 - Data Compression Algorithms

  • what is data compression

  • run length encoding

  • Huffman-encoding

  • LZW compression and decompression

Section 7 - Algorithms Analysis

  • how to measure the running time of algorithms

  • running time analysis with big O (ordo), big Ω (omega) and big θ (theta) notations

  • complexity classes

  • polynomial (P) and non-deterministic polynomial (NP) algorithms

  • O(1), O(logN), O(N) and several other running time complexities

First, we are going to discuss prefix trees: modern search engines for example use these data structures quite often. When you make a google search there is an autocomplete feature because of the underlying trie data structure. It is also good for sorting: hashtables do not support sort operation but on the other hand, tries do support. 

Substring search is another important field of computer science. You will learn about Z algorithm and we will discuss brute-force approach as well as Rabin-Karp method.

The next chapter is about sorting. How to sort an array of integers, doubles, strings or custom objects? We can do it with bubble sort, insertion sort, mergesort or quicksort. You will learn a lot about the theory as well as the concrete implementation of these important algorithms. 

The last lectures are about data compression: run-length encoding, Huffman encoding and LZW compression.

Thanks for joining the course, let's get started.

Enroll now

What's inside

Learning objectives

  • Grasp the fundamentals of algorithms and data structures
  • Develop your own algorithms that best fit to the personal need
  • Detect non-optimal code snippets
  • Understand data compression
  • Understand sorting algorithms
  • Understand tries and ternary search trees
  • Understand strings and stringbuilders

Syllabus

Introduction
Trie Data Structures (Prefix Trees)
What are tries (prefix trees)?
Prefix tree introduction - insertion and searching
Read more
Prefix tree introduction - sorting
Prefix tree introduction - autocomplete
Prefix tree introduction - associative arrays
Tries implementation I
Tries implementation II
Tries implementation III
Tries implementation IV - associative arrays
Tries implementation V - autocomplete
Tries implementation VI - sorting
Hashing based data structures and tries
Applications of trie data structures
Trie Data Structures Quiz
Interview Questions - IP Routing with Tries
Networking and the longest common prefix problem
Longest common prefix implementation
Ternary Search Trees (TSTs)
What are ternary search trees?
Ternary search tree visualization
Ternary search tree implementation - insertion
Ternary search tree implementation - search
Ternary search trees implementation - traversal
Recursion and stack memory visualization
Ternary Search Trees Quiz
Interview Questions - Boggle Game
What is boggle and how to solve it?
Boggle game with ternary search tree implementation I
Boggle game with ternary search tree implementation II
Boggle game with ternary search tree implementation III
Substring Search
Brute-force search introduction
Brute-force search implementation
Naive Substring Search Quiz
Rabin-Karp algorithm introduction
Rabin-Karp algorithm implementation
Rabin-Karp Algorithm Quiz
Knuth-Morris-Pratt algorithm introduction
Constructing the partial match table
Knuth-Morris-Pratt algorithm implementation
Knuth-Morris-Pratt Algorithm Quiz
Z algorithm introduction
Z algorithm illustration
Z algorithm implementation
Z Algorithm Quiz
Substring search algorithms comparison
Applications of substring search
Strings
Strings and the String Constant Pool (Intern Pool)
String's immutability
Strings and StringBuilders
String reversion
Suffixes
Prefixes
Longest common prefix
Longest repeated substring problem
Why are suffix tries and suffix arrays useful?
String Quiz
Basic Sorting Algorithms

Here is the article on the running time complexities of comparison based sorting algorithms:

http://people.seas.harvard.edu/~cs125/fall14/lec1.pdf

What is stability in sorting?
Adaptive sorting algorithms
Sorting Algorithms Basics Quiz
Bogo sort introduction
Bogo sort implementation
Bogo Sort Quiz
Bubble sort introduction
Bubble sort implementation
Selection sort introduction
Selection sort implementation
Selection Sort Quiz
Insertion sort introduction
Insertion sort implementation
Insertion Sort Quiz
Shell sort introduction
Shell sort implementation
Shell Sort Quiz
Quicksort introduction
Quicksort introduction - example
Quicksort implementation
Hoare's partitioning and Lomuto's partitioning
What is the worst-case scenario for quicksort?
QuickSort Quiz
Merge sort introduction
Merge sort implementation
Merge sort and stack memory visualization
Merge Sort Quiz
Hybrid algorithms introduction
Non-comparison based algorithms
Counting sort introduction
Counting sort implementation
Radix sort introduction
Radix sort implementation
Non-Comparison Based Sorting Quiz
Interview Questions - Sorting
Interview question #1 - implementing TimSort algorithm
Interview question #1 - solution

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Develops knowledge of algorithms, which is a highly relevant field in tech
Provides strong foundation for beginners in the field of data structures
Explores advanced topics like data compression algorithms
Provides a practical approach to learning with hands-on implementation in Java
Taught by Holczer Balazs, who has experience and expertise in data structures and algorithms
Covers a wide range of topics in data structures and algorithms, from basic to advanced

Save this course

Save Algorithms Data Structures in Java #2 (+INTERVIEW QUESTIONS) to your list so you can find it easily later:
Save

Reviews summary

Interview java algorithms and data structures

According to students, Algorithms Data Structures in Java #2 (+INTERVIEW QUESTIONS) prepares learners for coding interviews and teaches them Java data structures and algorithms. Students have largely positive opinions about the course.
Java Interview Prep
"great"

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Algorithms Data Structures in Java #2 (+INTERVIEW QUESTIONS) with these activities:
Review Hashing and Collisions
Reviewing Hashing and Collisions can help you to get a stronger understanding of the core concepts behind data structures, which can help you when working with data in this programming course.
Browse courses on Algorithm
Show steps
  • Read course materials on Hashing and Collisions
  • Review notes on hash tables and collision resolution
  • Complete practice problems on hash tables and collision resolution
Read 'Introduction to Algorithms' by Cormen, Leiserson, Rivest, and Stein
Reading 'Introduction to Algorithms' will give you a deep dive into algorithms and data structures, which will help you understand the theoretical foundations of the topics covered in this course.
Show steps
  • Purchase or borrow a copy of the book
  • Create a plan for reading the book
  • Read and take notes on the chapters
  • Complete practice problems from the book
LeetCode Practice Problems on Tree Traversal
LeetCode Practice Problems will allow you to practice tree traversal algorithms and techniques. This will help improve your ability to work with trees, which are often used in data science and software engineering.
Browse courses on Tree Traversal
Show steps
  • Set up an account on LeetCode
  • Choose LeetCode problems related to tree traversal
  • Solve problems and review solutions
Five other activities
Expand to see all activities and additional details
Show all eight activities
Implement a Trie Data Structure
Implementing a Trie Data Structure will allow you to gain hands-on experience with a practical application of tree structures. This will help you deepen your understanding of how trees are used in practice.
Browse courses on Tree
Show steps
  • Review the course materials on Tries
  • Design the Trie data structure
  • Implement the Trie data structure
  • Test your Trie implementation with sample data
Attend a Meetup on Data Structures and Algorithms
Attending a Meetup on Data Structures and Algorithms can be a great way to connect with like-minded individuals and stay updated on the latest industry trends.
Browse courses on Data Structure
Show steps
  • Find a Meetup on Data Structures and Algorithms
  • Register for the Meetup
  • Attend the Meetup
  • Network with other attendees
Create a Data Structure Visualization Tool
Creating a Data Structure Visualization Tool will allow you to demonstrate your ability to apply your knowledge of data structures and algorithms to create a practical tool.
Browse courses on Data Structure
Show steps
  • Design the data structure visualization tool
  • Develop the data structure visualization tool
  • Test the data structure visualization tool
  • Document the data structure visualization tool
Contribute to an Open Source Data Structure Library
Contributing to an Open Source Data Structure Library will allow you to make a meaningful contribution to the community while also improving your skills in working with data structures.
Browse courses on Data Structure
Show steps
  • Find an open source data structure library to contribute to
  • Review the contribution guidelines for the library
  • Identify an issue or feature you can contribute to
  • Create a pull request to contribute your code
Participate in a Coding Competition Focused on Data Structures
Participating in a Coding Competition Focused on Data Structures can be a great way to test your skills and compare yourself to other programmers.
Browse courses on Data Structure
Show steps
  • Find a coding competition focused on data structures
  • Register for the competition
  • Prepare for the competition
  • Compete in the competition
  • Review your performance

Career center

Learners who complete Algorithms Data Structures in Java #2 (+INTERVIEW QUESTIONS) will develop knowledge and skills that may be useful to these careers:
Algorithm Engineer
Algorithm Engineers design and develop new algorithms and data structures to solve complex problems. This course on Algorithms and Data Structures in Java #2 can provide you with a strong foundation in these core concepts, which are essential for advancing the field of algorithm engineering. By understanding algorithms and data structures, you'll be better equipped to contribute to the development of new and innovative algorithms.
Computer Scientist
Computer Scientists conduct research and develop new computing technologies and applications. This course on Algorithms and Data Structures in Java #2 can help you build a solid foundation in these core concepts, which are essential for advancing the field of computer science. By understanding algorithms and data structures, you'll be better equipped to contribute to the development of innovative computing solutions.
Software Engineer
Software Engineers design, develop, and maintain software systems. A strong understanding of algorithms and data structures is essential for this role, as it helps engineers optimize the efficiency and performance of their software solutions. This course covers a wide range of algorithms and data structures, including tries, ternary search trees, and sorting algorithms, which are commonly used in software development.
Machine Learning Engineer
Machine Learning Engineers develop and implement machine learning models to solve real-world problems. A strong understanding of algorithms and data structures is essential for this role, as it helps engineers design and optimize machine learning algorithms. This course covers a variety of algorithms and data structures, including tries, ternary search trees, and sorting algorithms, which are commonly used in machine learning applications.
Computer Programmer
Computer Programmers design, develop, and maintain computer programs. A strong understanding of algorithms and data structures is essential for this role, as it helps programmers write efficient and reliable code. This course covers a wide range of algorithms and data structures, including tries, ternary search trees, and sorting algorithms, which are commonly used in software development.
Software Architect
Software Architects design and develop software systems and applications. A strong understanding of algorithms and data structures is essential for this role, as it helps architects optimize the efficiency and performance of their software solutions. This course covers various algorithms and data structures, such as tries, ternary search trees, and sorting algorithms, which are commonly used in software architecture.
Data Scientist
Data Scientists are responsible for collecting, analyzing, and interpreting data to help businesses make informed decisions. This course on Algorithms and Data Structures in Java #2 can help you build a foundation in these essential concepts, which are widely used in data science. By understanding algorithms and data structures, you'll be better equipped to handle the complex data analysis tasks involved in data science, such as data mining, machine learning, and statistical modeling.
Data Analyst
Data Analysts collect, analyze, and interpret data to help businesses make informed decisions. This course on Algorithms and Data Structures in Java #2 can help you build a foundation in these essential concepts, which are widely used in data analysis. By understanding algorithms and data structures, you'll be better equipped to handle the complex data analysis tasks involved in data analysis, such as data mining and statistical modeling.
Database Administrator
Database Administrators are responsible for managing and maintaining database systems. A solid understanding of data structures is crucial for this role, as it enables DBAs to optimize database performance and ensure data integrity. This course covers various data structures, such as tries, ternary search trees, and hashing-based data structures, which are essential for efficient data storage and retrieval in database systems.
Web Developer
Web Developers design, develop, and maintain websites and web applications. A strong understanding of algorithms and data structures is essential for this role, as it helps developers optimize the performance and efficiency of their web applications. This course covers various algorithms and data structures, such as tries, ternary search trees, and sorting algorithms, which are commonly used in web development.
Information Security Analyst
Information Security Analysts protect computer systems and networks from unauthorized access and cyber attacks. A strong understanding of algorithms and data structures is essential for this role, as it helps analysts detect and prevent security breaches. This course covers various algorithms and data structures, such as tries, ternary search trees, and hashing-based data structures, which are commonly used in information security systems.
Data Engineer
Data Engineers design and build data pipelines and systems for storing and managing large volumes of data. A strong understanding of algorithms and data structures is essential for this role, as it helps engineers optimize the performance and efficiency of their data pipelines and systems. This course covers various algorithms and data structures, such as tries, ternary search trees, and sorting algorithms, which are commonly used in data engineering.
Quantitative Analyst
Quantitative Analysts use mathematical and statistical models to analyze financial data and make investment decisions. This course on Algorithms and Data Structures in Java #2 can provide you with a strong foundation in algorithms and data structures, which are essential for developing and implementing quantitative models. By understanding the underlying algorithms and data structures, you'll be better equipped to handle complex financial data analysis and modeling tasks.
Technical Writer
Technical Writers create and maintain technical documentation, such as user manuals, white papers, and online help. This course on Algorithms and Data Structures in Java #2 may be useful for this role, as it can help you develop a better understanding of the technical concepts you'll be writing about. By understanding algorithms and data structures, you'll be better equipped to write clear and concise technical documentation.
Product Manager
Product Managers are responsible for developing and managing products throughout their lifecycle. This course on Algorithms and Data Structures in Java #2 may be useful for this role, as it can help you develop a better understanding of the technical aspects of product development. By understanding algorithms and data structures, you'll be better equipped to make informed decisions about product design and development.

Reading list

We've selected 13 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 Algorithms Data Structures in Java #2 (+INTERVIEW QUESTIONS).
Classic textbook on algorithms. It covers a wide range of topics, from basic data structures to advanced algorithms. It valuable reference for anyone who wants to learn more about algorithms.
Comprehensive introduction to data structures and algorithms in Java. It covers a wide range of topics, from basic data structures to advanced algorithms. It valuable reference for anyone who wants to learn more about data structures and algorithms in Java.
Comprehensive introduction to algorithms and data structures in Java. It covers a wide range of topics, from basic data structures to advanced algorithms. It valuable reference for anyone who wants to learn more about algorithms and data structures in Java.
Classic textbook on data structures and algorithms. It covers a wide range of topics, from basic data structures to advanced algorithms. It valuable reference for anyone who wants to learn more about data structures and algorithms.
Comprehensive introduction to data structures in C++. It covers a wide range of topics, from basic data structures to advanced data structures. It valuable reference for anyone who wants to learn more about data structures in C++.
Comprehensive introduction to data structures in Python. It covers a wide range of topics, from basic data structures to advanced data structures. It valuable reference for anyone who wants to learn more about data structures in Python.
Comprehensive introduction to data structures and algorithms. It covers a wide range of topics, from basic data structures to advanced algorithms. It valuable reference for anyone who wants to learn more about data structures and algorithms.
Concise introduction to algorithms in Python. It covers a wide range of topics, from basic data structures to advanced algorithms. It valuable reference for anyone who wants to learn more about algorithms in Python.
Concise introduction to algorithms. It covers a wide range of topics, from basic data structures to advanced algorithms. It valuable reference for anyone who wants to learn more about algorithms.
Concise introduction to algorithms. It covers a wide range of topics, from basic data structures to advanced algorithms. It valuable reference for anyone who wants to learn more about algorithms.
Concise introduction to algorithms in C++. It covers a wide range of topics, from basic data structures to advanced algorithms. It valuable reference for anyone who wants to learn more about algorithms in C++.
Concise introduction to algorithms in Java. It covers a wide range of topics, from basic data structures to advanced algorithms. It valuable reference for anyone who wants to learn more about algorithms in Java.
Practical guide to algorithm design. It covers a wide range of topics, from basic data structures to advanced algorithms. It valuable reference for anyone who wants to learn more about algorithm design.

Share

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

Similar courses

Here are nine courses similar to Algorithms Data Structures in Java #2 (+INTERVIEW QUESTIONS).
Algorithms Data Structures in Java #1 (+INTERVIEW...
Most relevant
Algorithms and Data Structures in Python (INTERVIEW Q&A)
Most relevant
50 Days of DSA PYTHON Dynamic Programming, Question...
Most relevant
Data Structures & Algorithms III: AVL and 2-4 Trees,...
Most relevant
String Processing and Pattern Matching Algorithms
Most relevant
Ordered Data Structures
Most relevant
Approximation Algorithms
Most relevant
Algorithms on Strings
Most relevant
Introduction to Java Programming: Fundamental Data...
Most relevant
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