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

Algorithms Data Structures in Java #1 (+INTERVIEW QUESTIONS)

Holczer Balazs

This course is about data structures and algorithms. We are going to implement the problems in Java. The course takes approximately 20 hours to complete. It is highly recommended to type 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. The course takes approximately 20 hours to complete. It is highly recommended to type out these data structures several times on your own in order to get a good grasp of it. 

Section 1:

  • data structures and abstract data types

Section 2 - Arrays

  • what are arrays

  • what is random access and how to indexes

Section 3 - Linked Lists

  • linked lists and doubly linked lists

  • linked list related interview questions

Section 2 - Stacks and Queues:

  • what are stacks and queues

  • heap memory and stack memory

  • visualizing stack memory

Section 3 - Binary Search Trees (BSTs):

  • what are tree data structures?

  • how to achieve O(logN) logarithmic running time?

  • binary search trees

Section 4 - AVL Trees

  • what is the problem with binary search trees?

  • balanced search trees: AVL trees

  • rotations

Section 5 - Red-Black Trees

  • what are red-black trees?

  • what is recovering operation?

  • comparing AVL trees and red-black trees

Section 6 - Splay Trees

  • splay trees and caches

  • achieve O(1) running time for getting the recently visited item

Section 7 - Heaps and Priority Queues

  • what are priority queues?

  • what is heap data structure?

  • how to do sorting in O(NlogN) with heaps?

Section 8 - B-Trees

  • external memory and the main memory (RAM)

  • B-trees and their applications in memory

  • B* trees and B+ trees

Section 9 - Hashing and HashMaps:

  • what are hashing and hashtables (hashmaps)

  • what are hash-functions

  • how to achieve O(1) running time complexity

Section 10 - 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 11 - 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 12 (BONUS):

  • what is LRU cache

  • LRU cache implementation

Section 13 (BONUS):

  • Fenwick trees (binary indexed trees)

  • binary indexed tree implementation

Section 14 - 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

In each chapter you will learn about the theoretical background of each algorithm or data structure, then we are going to write the code on a step by step basis in Eclipse, Java.

Most of the advanced algorithms relies heavily on these topics so it is definitely worth understanding the basics. These principles can be used in several fields: in investment banking, artificial intelligence or electronic trading algorithms on the stock market.

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

Enroll now

What's inside

Learning objectives

  • Grasp the fundamentals of algorithms and data structures
  • Detect non-optimal code snippets
  • Learn about arrays and linked lists
  • Learn about stacks and queues
  • Learn about binary search trees
  • Learn about balanced binary search trees such as avl trees or red-black trees
  • Learn about priority queues and heaps
  • Learn about b-trees and external memory
  • Learn about hashing and hash tables

Syllabus

Introduction
Course exercises and solutions
Data Structures Overview
Why do we need data structures?
Read more
Data structures and abstract data types
Data Structures and Abstract Data Types Quiz
Installation and Environment Setup
Installing Java
Installing Eclipse
Arrays
What are array data structures?
Arrays introduction - operations
Implementing arrays
ArrayList in Java
Arrays Quiz
Interview Questions (Arrays)
Reversing an array in-place exercise
Reversing an array in-place solution
Anagram problem exercise
Anagram problem solution
Palindrome problem exercise
Palindrome problem solution
Integer reversion exercise
Integer reversion problem solution
Linked Lists
What are linked lists?
Linked list theory - operations
Pros and cons of linked lists
Linked lists in Java !!!
Linked list implementation I
Linked list implementation II
Linked list implementation III
Linked list implementation IV
Comparing linked lists and arrays
Practical (real-world) applications of linked lists
Linked Lists Quiz
Doubly Linked Lists
What are doubly linked lists?
Doubly linked list implementation
LinkedLists in Java
Running time comparison: linked lists and arrays
Doubly Linked Lists Quiz
Interview Questions (Linked List)
Finding the middle node in a linked list exercise
Finding the middle node in a linked list solution
Reverse a linked list in-place exercise
Reverse a linked list in-place solution
Stacks
What are stacks?
Stacks in memory management (stacks and heaps )
Stack memory visualization
Stack implementation with linked list
Stack implementation with arrays
Stacks in Java
Practical (real-world) applications of stacks
Stacks Quiz
Queues
What are queues?
Queue implementation with linked list
Queues in Java
ArrayDeque in Java
ArrayDeque and Stack performance comparison
Queues Quiz
Interview Questions (Stacks and Queues)
Max in a stack problem overview
Max in a stack problem solution
Stack with queue overview
Stack with queue solution
Stack with queue solution - recursion
Binary Search Trees
What are binary search trees?
How to search and insert items into a binary search tree?
Implementing insertion I - Node and Tree classes
Implementing insertion II
How to visit all the items of a binary search trees? (in-order traversal)
Finding the minimum item exercise
Binary search tree implementation - max, min and traversal
Stack memory visualization - finding max (min) items
Stack memory visualization - tree traversal
How to remove an item from a binary search tree?
Remove operation implementation I
Remove operation implementation II
Pros and cons of binary search trees
Practical (real-world) applications of trees
Binary Search Trees Quiz
Interview Questions (Trees)
Compare binary trees exercise
Compare binary trees solution
k-th smallest element exercise
k-th smallest element in a search tree solution
Family age problem exercise
Family age problem solution
Balanced Trees: AVL Trees
Motivation behind balanced binary search trees
What are AVL trees?
AVL trees introduction - height
AVL trees introduction - rotations
AVL trees introduction - illustration
AVL tree implementation I

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Develops non-optimal code snippets that may hinder code quality and efficiency
Introduces fundamental data structures and algorithms essential for software development
Explores advanced data structures such as binary search trees, AVL trees, and heaps, which are widely used in industry
Provides practical applications of data structures and algorithms in various fields, including investment banking and electronic trading
Delves into sorting algorithms and substring search algorithms, which are crucial for data manipulation tasks
Incorporates bonus sections on LRU cache and Fenwick trees, extending the scope of the course

Save this course

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

Reviews summary

Highly recommended course

According to students, this course is engaging and provides in-depth explanations of algorithms and data structures.

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 #1 (+INTERVIEW QUESTIONS) with these activities:
Review notes, slides, and assignments from previous courses related to data structures and algorithms
Refresh your prior knowledge and strengthen your foundation before starting the course.
Browse courses on Data Structures
Show steps
  • Gather notes, slides, and assignments from previous courses.
  • Review the materials to recall key concepts and techniques.
  • Identify areas where you need additional reinforcement.
  • Consider re-attempting practice problems or exercises from the previous courses.
Read 'Introduction to Algorithms' by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein
Review the fundamentals of data structures and algorithms by reading a foundational text in the field.
Show steps
  • Acquire the book and read the preface and introduction.
  • Read and understand each chapter.
  • Attempt practice problems and exercises for each chapter.
  • Review and summarize the key concepts and techniques discussed in the book.
Follow tutorials on data structures and algorithms from reputable sources
Supplement your understanding by following structured and guided tutorials from experts in the field.
Browse courses on Data Structures
Show steps
  • Identify reputable sources for tutorials, such as Coursera, Udemy, or YouTube channels of experts.
  • Select tutorials that align with your learning objectives.
  • Follow the tutorials step-by-step and take notes.
  • Practice implementing the concepts covered in the tutorials.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Participate in a study group or online forum for data structures and algorithms
Engage with peers to discuss concepts, ask questions, and collaborate on problem-solving.
Browse courses on Data Structures
Show steps
  • Identify or join a study group or online forum.
  • Actively participate in discussions.
  • Ask questions and provide insights.
  • Help other members with their understanding.
Solve LeetCode problems tagged with 'Data Structures' and 'Algorithms'
Reinforce your understanding of data structures and algorithm concepts by solving coding problems on LeetCode.
Browse courses on Data Structures
Show steps
  • Create a LeetCode account.
  • Filter problems by difficulty and topic.
  • Attempt to solve problems on your own.
  • Refer to hints and solutions if needed.
Implement a specific data structure or algorithm in a programming language of your choice
Apply your knowledge by implementing a data structure or algorithm from scratch, testing its functionality thoroughly.
Browse courses on Data Structures
Show steps
  • Choose a data structure or algorithm to implement.
  • Design and code the implementation.
  • Write unit tests to verify the correctness of the implementation.
  • Document the code and explain the implementation choices.
Write a blog post or article summarizing a specific data structure or algorithm
Solidify your understanding of a particular data structure or algorithm by explaining it to others in a written format.
Browse courses on Data Structures
Show steps
  • Choose a data structure or algorithm to write about.
  • Research and gather information about the chosen topic.
  • Organize your thoughts and create an outline.
  • Write the blog post or article, including clear explanations and examples.

Career center

Learners who complete Algorithms Data Structures in Java #1 (+INTERVIEW QUESTIONS) will develop knowledge and skills that may be useful to these careers:
Data Analyst
Data Analysts' role is to make sense of raw data to derive meaningful insights, and communicate these insights to stakeholders. You will analyze data using tools and techniques, which include writing code in SQL, Java, and many others. As an example, a Data Analyst at Amazon will analyze vast amounts of data to identify trends in consumer behavior. The Algorithms in Java + INTERVIEW QUESTIONS course will provide the foundation you'll need to excel as a Data Analyst. This course covers data structures and algorithms, which are essential for organizing and managing data. The course material will help you write efficient code in Java. The interview questions segment will prepare you for the job interview process.
Machine Learning Engineer
Machine Learning Engineers build, deploy, and maintain large-scale machine learning systems. They work closely with Data Scientists and Software Engineers to leverage ML models to extract valuable insights from vast amounts of data. The Algorithms in Java + INTERVIEW QUESTIONS course can be a stepping stone towards becoming a Machine Learning Engineer. This course covers algorithms and data structures, which are essential for designing and deploying machine learning systems. The interview questions portion of the course will help you prepare with the interview process.
Programmer
Programmers write and maintain computer programs. They work closely with other team members to bring software products to life. The Algorithms in Java + INTERVIEW QUESTIONS course can help you acquire foundational knowledge of algorithms and data structures, which are key to a successful career as a Programmer. This course covers a diverse range of algorithms and data structures, and the interview questions section will help you prepare for the job interview process.
Software Developer
Software Developers analyze user requirements, design, implement, and test software applications. They work closely with other team members to bring software products to life. The Algorithms in Java + INTERVIEW QUESTIONS course can help you acquire foundational knowledge of algorithms and data structures, which are key to a successful career as a Software Developer. This course covers a diverse range of algorithms and data structures, and the interview questions section will help you prepare for the job interview process.
Software Engineer
Software Engineers apply engineering principles to the design, development, deployment, and maintenance of software systems. They work closely with product managers and UX designers to turn user requirements into working software. The Algorithms in Java + INTERVIEW QUESTIONS course will provide you with the foundational understanding of algorithms and data structures needed to succeed as a Software Engineer. This course covers a vast array of topics ranging from trees to stacks and queues, and from hashing to sorting algorithms. Furthermore, the interview questions portion of the course will prepare you for the software engineer job interview process.
Actuary
Actuaries use mathematical and statistical models to evaluate risk and uncertainty. They work in various fields, including insurance, finance, and consulting. The Algorithms in Java + INTERVIEW QUESTIONS course will provide you with the foundational knowledge in algorithms and data structures needed to begin a career as an Actuary. This course covers topics such as sorting, searching, and binary trees. The course also covers interview questions relevant to an Actuary role.
IT Consultant
IT Consultants provide advice and guidance to organizations on how to use technology to achieve their business goals. They work closely with clients to understand their needs and develop solutions that meet those needs. The Algorithms in Java + INTERVIEW QUESTIONS course will provide you with the foundational knowledge in algorithms and data structures that you will need for a successful career as an IT Consultant. This course covers topics such as sorting, searching, and binary trees. The course also covers interview questions relevant to IT Consultants.
Quantitative Analyst
Quantitative Analysts (Quants) use mathematical and statistical models to assess risk and make investment decisions. They analyze financial data, such as stock prices and economic indicators, to uncover trends and make predictions. The Algorithms in Java + INTERVIEW QUESTIONS course will provide you with the foundational knowledge of algorithms and data structures needed for success as a Quant. This course covers topics such as sorting, searching, and binary trees. The course also covers interview questions relevant to the Quantitative Analyst role.
Systems Analyst
Systems Analysts analyze and design computer systems. They work closely with stakeholders to understand their needs and develop systems that meet those needs. The Algorithms in Java + INTERVIEW QUESTIONS course will provide you with the foundational knowledge of algorithms and data structures needed for success as a Systems Analyst. This course covers topics such as sorting, searching, and binary trees. The course also covers interview questions relevant to a Systems Analyst role.
Data Engineer
Data Engineers design, build, and maintain data pipelines. They work closely with data scientists and other stakeholders to ensure that data is available for analysis. The Algorithms in Java + INTERVIEW QUESTIONS course will provide you with foundational knowledge of algorithms and data structures that will aid in your work as a Data Engineer. This course covers topics such as sorting, searching, and binary trees. The course also includes an interview preparation component.
Web Developer
Web Developers design, implement, and maintain websites. They work closely with other team members, including designers and content creators, to bring websites to life. The Algorithms in Java + INTERVIEW QUESTIONS course will provide you with a foundation in algorithms and data structures that will aid in your work as a Web Developer. This course covers topics such as sorting, searching, and binary trees. The course also comes with interview preparation materials.
Data Scientist
Data Scientists design, implement, and evaluate data models. They analyze large amounts of data, identify patterns and trends, and make predictions. The Algorithms in Java + INTERVIEW QUESTIONS course may be useful to you if you wish to become a Data Scientist. This course covers a broad array of algorithms and data structures, and the interview preparation section of the course will help you with the job interview process.
Computer Scientist
Computer Scientists research and develop theoretical foundations and practical applications of computation and information. They work in various fields, including artificial intelligence, computer graphics, and cybersecurity. The Algorithms in Java + INTERVIEW QUESTIONS course may be useful for you if you wish to become a Computer Scientist. This course covers a broad range of topics, including algorithms, data structures, and the interview process.
Investment Analyst
Investment Analysts evaluate and make recommendations on investment opportunities. They work closely with portfolio managers and other stakeholders to make informed investment decisions. The Algorithms in Java + INTERVIEW QUESTIONS course may be useful to you if you wish to become an Investment Analyst. This course covers data structures and algorithms, which are essential for understanding and evaluating investment opportunities.
Business Analyst
Business Analysts research, analyze, and recommend solutions to business problems. They work closely with stakeholders to understand their needs and develop solutions that meet those needs. The Algorithms in Java + INTERVIEW QUESTIONS course may be useful as you begin your career as a Business Analyst. This course covers data structures and algorithms, which are essential for understanding and solving business problems.

Reading list

We've selected 11 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 #1 (+INTERVIEW QUESTIONS).
Classic textbook on algorithms. It provides a comprehensive overview of the field and valuable resource for students and professionals alike.
Provides a comprehensive overview of algorithms. It valuable resource for students and professionals who want to learn more about these topics.
Provides a practical guide to algorithm design. It valuable resource for students and professionals who want to learn more about how to design and implement efficient algorithms.
Provides a comprehensive overview of data structures and algorithms in Java. It valuable resource for students and professionals who want to learn more about these topics.
Collection of four parts that cover a wide range of algorithms topics. It valuable resource for students and professionals who want to learn more about these topics.
Provides a comprehensive overview of algorithms and data structures. It valuable resource for students and professionals who want to learn more about these topics.
Provides a comprehensive overview of data structures and algorithms in C++. It valuable resource for students and professionals who want to learn more about these topics.
Provides a concise overview of algorithms. It valuable resource for students and professionals who want to learn more about these topics.
Provides a comprehensive overview of problem solving with algorithms and data structures using Python. It valuable resource for students and professionals who want to learn more about these topics.
Provides a comprehensive overview of algorithms in C. It valuable resource for students and professionals who want to learn more about these topics.
Provides a comprehensive overview of data structures and algorithm analysis in Java. It valuable resource for students and professionals who want to learn more about these topics.

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 #1 (+INTERVIEW QUESTIONS).
Algorithms and Data Structures in Python (INTERVIEW Q&A)
Most relevant
Algorithms Data Structures in Java #2 (+INTERVIEW...
Most relevant
Data Structures Fundamentals
Most relevant
Ordered Data Structures
Most relevant
Data Structures & Algorithms III: AVL and 2-4 Trees,...
Most relevant
50 Days of DSA PYTHON Dynamic Programming, Question...
Most relevant
Data Structures & Algorithms II: Binary Trees, Heaps,...
Most relevant
Java Data Structures and Algorithms Masterclass
Most relevant
The Complete Data Structures and Algorithms Course in...
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