Data Structures and Algorithms using JAVA

A 3 month course which includes content that will help you learn everything you need to know about Data Structures and Algorithms.

  • Domain : CSE
Enroll Now View demo

A Quick Overview

What is an algorithm? An Algorithm, put simply, is just a set of instructions. You wake up every morning, brush your teeth, go for a run, come back, take a bath, have breakfast and go to work. This is an algorithm that most people follow. But this can vary from person to person. A few people might take a run before they brush their teeth or a few have breakfast before they take a bath. The change is based on each individual. This is the same thing in programming, algorithms are just a set of instructions or directives that a programmer gives to a program to do a certain task or function.
All algorithms are governed by Data. A good example to fortify this statement would be the videos you watch on Youtube. If you would have noticed, your youtube suggestions change from time to time. The changes can also be based on your current locations. You are less likely to receive a video suggestion about the Japanese prime ministerial election while you live in India. But you are more likely to receive video suggestions about the IPL as you live in India. The way in which all this data is categorized comes under data structuring. 
In this course, you will be learning what algorithms are and how to create them in JAVA. We will also be focusing on data structures and the many types of data structures that are available in JAVA. You will be gaining step by step knowledge of each concept and practice them with challenges. At the end of each milestone, you will be working on a project to ensure that you have real industry knowledge of the concepts you have learnt.


Get a 1-on-1 demo to understand what is included in the course and how it can benefit you from an experienced sales consultant. The demo session will help you enroll in this course with a clear vision and confidence.

Request a Demo Session



A data structure is a named location that can be used to store and organize data. An algorithm is a collection of steps to solve a particular problem. Learning data structures and algorithms allow us to write efficient and optimized computer programs. Data structures provide a means to manage large amounts of data efficiently for uses such as large databases and internet indexing services. Usually, efficient data structures are key to designing efficient algorithms.
In the first week of this course, you will learn:
  • Stack memory vs heap memory in Java
  • Physical vs logical data structure
  • Abstract data type and data structure
  • Complexity analysis
    • Asymptotic analysis, comparison of functions, recurrence relations
    • Time complexity
    • Space complexity
    • Master theorem
    • Amortized analysis
    • Iteration vs recursion
  • Recursion - Factorial, Fibonacci, finding nCr, tower of Hanoi problem.

2Arrays, Strings, and Lists

Arrays are used to store multiple values in a single variable, instead of declaring separate variables for each value. A string is a sequence of characters like - "hello". In this string the sequence of characters is 'h', 'e', 'l', 'l', and 'o'. Unlike other programming languages, strings in Java are not primitive types like int and char. Instead, all strings are objects of a predefined class named string. A LinkedList is a part of the collection framework present in Java utility package. This class is an implementation of the LinkedList data structure which is a linear data structure where the elements are not stored in contiguous locations and every element is a separate object with a data part and an address part.

In this session, we will learn about:
  • Arrays
    • Static arrays
    • Dynamic arrays
    • 2D arrays, row-major and column-major mapping, matrices
  • Strings
  • LinkedList
    • Singly LinkedList and its operations
    • Doubly LinkedList and its operations
    • Circular LinkedList and its operation


3Stacks and Queues

The stack is a linear data structure that is used to store the collection of objects. It is based on Last-In-First-Out (LIFO). Java collection framework provides many interfaces and classes to store the collection of objects. One of them is the stack class that provides different operations such as push, pop, search, etc. The queue is used to represent an ordered list of elements. It follows the FIFO or First In First Out procedure to insert and remove elements. The queue also supports methods of collection interface.

In this session, we will be discussing-
  • Stacks
    • Implementations- using arrays, using linked lists
    • Operation
    • Applications
  • Queues
    • Implementations- using arrays, using a LinkedList, using two stack
    • Circular queues
    • Priority queues


 A tree is a non-linear data structure where data objects are organized in terms of hierarchical relationships. Java provides two in-built classes, TreeSet and TreeMap, in Java Collection Framework that cater to the needs of the programmer to describe data elements in the aforesaid form. There are many different types of tree structures available and we’ll be discussing them one by one

  • Trees.
    • Binary trees, their representations.
    • Pre-order, In-order, post-order traversals
    • Binary search trees
    • AVL trees



5 Heaps and Tries

Heap and Trie are a special case of trees. A Heap is a special tree-based data structure in which the tree is a complete binary tree. Trie is an efficient information retrieval data structure. Using Trie, search complexities can be brought to the optimal limit. In the session, we will try to solve the longest word in the dictionary problem using Tries.

  • Min Heap
  • Max Heap
  • Find K largest (or smallest) elements in the array.


  • Longest Word in Dictionary Problem



6Graphs & Algorithms

A graph is a data structure that consists of-
1. A finite set of vertices also called as nodes and
2. A finite set of ordered pairs of the form (u, v) called as edges.
Algorithms in Java are static methods that can be used to perform various operations on collections. Since algorithms can be used on various collections, these are also known as generic algorithms. We will be discussing different types of algorithms like-
  • Graphs
    • Types of graphs
    • Breadth-first search, depth-first search
    • Topological sort
    • Shortest path problem
  • Algorithms
    • Dijkstra's algorithm
    • Bellman–Ford algorithm
      • Minimum spanning tree problem
    • Prim's algorithm
    • Kruskal's algorithm



Sorting generally means to put data in a certain order. The order can either be alphabetically sorted or numerically sorted. There are many types of sorting techniques available in Java. We will be discussing each of them in this session.
  • Sorting- 
    • Types of sorting techniques
    • Bubble sort
    • Insertion sort
    • Selection sort
    • Quick sort
    • Merge sort
    • Heap sort
    • Count sort
    • Bucket sort
    • Radix sort
    • Shell sort

8Searching and Hashing

Searching is probably one of the most common actions performed in a regular business application. This involves fetching data stored in data structures like arrays, list, and maps. More often than not, this search operation determines the responsiveness of the application for the end-user. Hashing is the process of converting a given key into another value. A hash function is used to generate the new value according to a mathematical algorithm. The result of a hash function is known as a hash value or simply, a hash.
Hashing is primarily used for authentication. Chaining is the practice of calling different methods in a single line instead of calling different methods with the same object reference separately. Under this procedure, we have to write the object reference once and then call the methods by separating them with a (dot.). Similar to chaining, open addressing is a method for handling collisions. In open addressing, all elements are stored in the hash table itself. So at any point, the size of the table must be greater than or equal to the total number of keys.
During this week we will be discussing about the following:
  • Searching
    • Linear search
    • Binary search
  • Hashing
    • Hash function
    • Collision handling
  • Chaining
  • Open addressing
    • Linear probing, primary clustering
    • Quadratic probing, secondary clustering
  • Double hashing

9 Greedy Algorithms

A greedy algorithm is a simple, intuitive algorithm that is used in optimization problems. The algorithm makes the optimal choice at each step as it attempts to find the overall optimal way to solve the entire problem. Greedy algorithms are quite successful in some problems, such as Huffman encoding which is used to compress data, or Dijkstra's algorithm, which is used to find the shortest path through a graph. Such algorithms are called greedy because while the optimal solution to each smaller instance will provide an immediate output, the algorithm doesn't consider the larger problem as a whole.
The topics discussed in this session will be-
  • The strategy of greedy algorithms
  • Elements of greedy algorithms
  • Advantages of greedy algorithms
  • Disadvantages of greedy algorithms
  • Applications of greedy algorithms
  • Knapsack problem
  • Job sequencing with deadlines
  • Huffman coding

10Divide and Conquer

The divide and conquer approach is pretty straightforward, the problem in hand is divided into smaller subproblems and then each problem is solved independently. As we keep dividing the subproblems into even smaller problems, we eventually reach a stage where no more division is possible. These "atomic" smallest possible problems are then solved. The solution of all "atomic" problem sets are finally merged in order to obtain the solution of an original problem.


In the session this week we will discuss:

  • The strategy of divide and conquer techniques
  • Advantages of divide and conquer techniques
  • Disadvantages of divide and conquer techniques
  • The master theorem of divide and conquer techniques
  • Applications of divide and conquer techniques
  • Find the median of two sorted arrays



Backtracking is an algorithmic-technique for solving problems recursively by trying to build a solution incrementally, one piece at a time, removing those solutions that fail to satisfy the constraints of the problem at any point of time. We’ll discuss about two methods used to backtrack.
  • Backtracking- 
    • Brute force approach
    • N queens problem
  • After backtracking ,we will be studying how Java 8 collections framework is implemented. We will be covering the following,
    • Set
    • List
    • Queue
    • PriorityQueue
    • Map
    • HashSet
    • TreeSet
    • ArrayList
    • LinkedList
    • Vector
    • Dictionary
    • Stack


12Dynamic Programming

Dynamic Programming is also an algorithmic technique for solving the optimization of problems. It is done by breaking the problem down into simpler subproblems and utilizing the fact that the optimal solution to the overall problem depends upon the optimal solution to its subproblems.

During this session, we will be covering the following:

  • Dynamic programming- 
    • The strategy of dynamic programming
    • Properties of dynamic programming
    • Approaches of dynamic programming
    • 0/1 knapsack
    • Travelling salesman problem
    • Floyd Warshall
  • In the end, we will conclude and summarize the course by having a brief discussion on Greedy vs Divide & Conquer vs Dynamic Programming.


Projects Overview

Flexible Course Fees

Choose the plan that’s right for you


2 Months Access


Per month for 3 months

  • Access Duration : 2 months
  • Mode of Delivery : Online
  • Project Portfolio : Available
  • Certification : Available
  • Email Support : Available
  • Forum Support : Available

Lifetime Access


Per month for 3 months

  • Access Duration : Lifetime
  • Mode of Delivery : Online
  • Project Portfolio : Available
  • Certification : Available
  • Individual Video Support : 12/month
  • Group Video Support : 12/month
  • Email Support : Available
  • Forum Support : Available
  • Telephone Support : Available
  • Dedicated Support Engineer : Available


  • Engineering Students in Computer Science & Information Technology
  • Freshers looking to gain project experience in Java



Companies hire from us

See all


  • Top 5% of the class will get a merit certificate
  • Course completion certificates will be provided to all students
  • Build a professional portfolio
  • Automatically link your technical projects
  • E-verified profile that can be shared on LinkedIn


See all

Frequently Asked Questions

1Who can take your course?

Any Computer Science or Non-Computer Science Student or Professional willing to develop optimally working software. This course is designed to help a new developer explore the theory (the science behind everything), the practical (what to do and how to do?), and the bonus (Understanding existing code to optimise it). A prerequisite for this course is basic understanding of the Java programming Language.

2What is included in your course?

This course is a step-by-step description of the Basic and Advanced topics of Data Structures and Algorithms along with code implementation and problem solving sessions. It has 12 small exercises and 1 major exercise to mark course completion.

3What will the student gain from your course?

A complete and thorough understanding of Data Structures and Algorithms. Students will gain confidence in each of the topics with problem solving skills, and understanding real world implications of the algorithms. Upon completion of this course, students will feel comfortable solving code challenges optimally.

4What software skills are you teaching and how well are these tools used in the industry?

Storing data in relevant structures to solve a particular problem and selecting relevant algorithm to solve it is being taught. This is an essential part of showcasing problem solving and analytical skills specially for backend/full stack software engineering job interviews.

5What real world application for the tools and techniques will you teach in this course?

All real-world software needs an understanding of data structures and algorithms for building and refactoring. The server-side manipulation of data and implementation of optimised business logic depends on this understanding. Gaining such analytical skills is what we are aiming at.

6Which companies use these techniques and for what?

All companies creating software use these skills, especially for implementing scalable and fast software which holds the most importance for a good user experience of the Software.

7How is your course going to help me in my path to MS or PhD?

Data structures and Algorithms is one of the most important topics in Computer Science and Allied fields. Many research topics require a program to be coded with the most optimised algorithm for implementing the solution of the research, to demonstrate its results. A good understanding of Data Structures and Algorithms and their code is required for this. Hence, clearing this course in exams and using it for coding a research strategy is essential.

8How is this course going to help me get a job?

As mentioned, this course will help in developing the necessary problem-solving coding skills, for cracking coding interviews of all software companies.

9What is the ratio of theory to hands-on practical content?

40% of the course teaches theoretical concepts and 60% of it is coding and handling problems in the most optimised ways. Practising is focused on, without which no skill is learnt best.

You Might Also Be Interested In

Related Courses

See all

The Skill-Lync Advantage

See all