Algorithms and Data Structures in Java - Part I
4.5 (229 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.
2,022 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Algorithms and Data Structures in Java - Part I to your Wishlist.

Add to Wishlist

Algorithms and Data Structures in Java - Part I

AVL tree, red-black tree, B-tree, binary search tree, array, linked list, stack, queue and splay tree
4.5 (229 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.
2,022 students enrolled
Created by Holczer Balazs
Last updated 3/2017
English
Current price: $10 Original price: $35 Discount: 71% off
1 day left at this price!
30-Day Money-Back Guarantee
Includes:
  • 11.5 hours on-demand video
  • 7 Articles
  • 4 Supplemental Resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • grasp the fundamentals of algorithms and data structures
  • develop your own algorithms that best fit to the personal need
  • detect non-optimal code snippets
  • get to know basic complexity related definitions
  • get to know linked lists
  • get to know arrays
  • get to know balanced trees: AVL trees and red-black trees
  • get to know hash tables
View Curriculum
Requirements
  • Core java
  • Eclipse or other IDE
Description

Hi!

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 11 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.

In the first part of the course we are going to learn about basic data structures such as linked lists, stacks and queues, heaps and some advanced ones such as AVL trees, red-black trees or hash tables. We will try to optimize each data structure ( for example avoiding obsolete references ) as much as possible.

In each chapter I am going to talk 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.

LAST UPDATE OF THE COURSE: 2016 october

Who is the target audience?
  • This course is meant for everyone from scientists to software developers who want to get closer to algorithmic thinking in the main
Students Who Viewed This Course Also Viewed
Curriculum For This Course
Expand All 121 Lectures Collapse All 121 Lectures 11:22:48
+
Introduction
4 Lectures 09:10

Why to use data structures
03:54

Data structures and abstract data types
03:58

Complexity theory
00:05
+
Arrays
4 Lectures 30:21
Arrays introduction - basics
05:55

Arrays introduction - operations
05:53

Using arrays
09:51

ArraysLists in Java
08:42
+
Linked Lists
9 Lectures 01:03:32
Linked lists theory - basics
07:09

Linked list theory - operations
09:32

Linked list theory - doubly linked lists
01:40

Linked list theory - linked lists versus arrays
06:36



Linked list implementation III
07:55

Doubly linked list introduction
05:59

Linked lists in java.util
08:14
+
Stacks & Queues
12 Lectures 01:17:36
Stack introduction
04:00

Stacks in memory management ( stacks, heaps )
07:23

Stacks and recursive method calls
07:02

Stack implementation with linked list I
07:28

Stack implementation with linked list II
03:37

Stack implementation with arrays
11:01

Dijkstra's interpreter introduction
01:18

Dijkstra's interpreter implementation
09:12

Java built in java.util.Stack
05:09

Queues introduction
05:12

Queue implementation with linked list
09:43

Java built in java.util.Queue
06:31
+
Binary Search Trees
12 Lectures 01:19:36
Binary search trees theory - basics
10:23

Binary search trees theory - search, insert
04:25

Binary search trees theory - delete
06:08

Binary search trees theory - in-order traversal
04:25

Binary search trees theory - running times
02:10

Binary search trees implementation I - Node, Tree
07:02

Binary search trees implementation II - insertion
09:55

Binary search tree implementation III - maximum, minimum
07:24

Binary search tree implementation IV - traversal
05:41

Binary search tree implementation V - remove
09:25

Binary search tree implementation VI - remove II
05:54

Custom objects in a tree
06:44
+
Balanced Trees: AVL Trees
15 Lectures 01:35:58
AVL trees introduction - motivation
04:13

AVL trees introduction - basics
05:21

AVL trees introduction - height
08:44

AVL trees introduction - rotations cases
10:17

AVL trees introduction - illustration
10:50

AVL trees introduction - sorting
03:38

AVL implementation - Node and Tree
03:21

AVL implementation - balance and height parameters
04:45

AVL implementation - implementing the rotations
07:35

AVL implementation - insertion I
06:03

AVL implementation - insertion II
08:52

AVL implementation - testing
03:19

AVL tree remove introduction
06:35

AVL tree remove implementation I
08:30

AVL tree generic implementation
03:55
+
Balanced Trees: Red-Black Trees
15 Lectures 01:12:29
Red-black trees introduction - basics
10:38

Red-black trees rotations- cases I
05:10

Red-black trees rotations- cases II
04:25

Red-black trees rotations- cases III
03:17

Red-black trees rotations- cases IV
02:45

Red-black trees introduction - example I
04:47

Red-black trees introduction - example II
04:19

Red-black tree versus AVL tree
03:25

Red-black tree implementation I - Node class
04:28

Red-black tree implementation II - traverse
02:06

Red-black tree implementation III - insert
03:39

Red-black tree implementation IV - rotate left / right
05:48

Red-black tree implementation V - fixing the violations
09:51

Red-black tree implementation VI - fixing the violations
05:52

Red-black tree implementation VII - testing
01:59
+
Splay Trees
5 Lectures 35:49
Splay tree introduction I - basics
12:49

Splay tree introduction II - example
03:52

Splay tree implementation I - find, rotate
09:44

Splay tree implementation II - spalying
05:50

Splay tree implementation III - testing
03:34
+
B-Trees
7 Lectures 40:00
B-tree introduction - basics
10:40

B-tree and external memory
04:07

Disk access times
05:41

B-tree introduction - search
02:46

B-tree introduction - insertion
07:10






B-tree introduction - deletion
05:30

In-order traversal
04:06
+
Binary Heaps
12 Lectures 01:11:14
Priority queues introduction
08:13

Heap introduction - basics
08:14

Heap introduction - array representation
09:17

Heap introduction - remove operation
04:43

Heap introduction - heapsort
05:13

Heap introduction - running times
05:05

Other types of heaps: binomial and Fibonacci heap
02:59

We start the implementation of the MAX heap. So the maximum value will be the root node!

Heap implementation - insertion
07:10

Heap implementation - get the minimum/maximum
06:33

Heap implementation - heapsort
03:04

Heap implementation - testing
02:10

Heaps in java.util.PriorityQueue
08:33
2 More Sections
About the Instructor
Holczer Balazs
4.4 Average rating
2,364 Reviews
24,177 Students
21 Courses
Software Engineer

Hi!

My name is Balazs Holczer. I am from Budapest, Hungary. I am qualified as a physicist and later on I decided to get a master degree in applied mathematics. At the moment I am working as a simulation engineer at a multinational company. I have been interested in algorithms and data structures and its implementations especially in Java since university. Later on I got acquainted with machine learning techniques, artificial intelligence, numerical methods and recipes such as solving differential equations, linear algebra, interpolation and extrapolation. These things may prove to be very very important in several fields: software engineering, research and development or investment banking. I have a special addiction to quantitative models such as the Black-Scholes model, or the Merton-model. Quantitative analysts use these algorithms and numerical techniques on daily basis so in my opinion these topics are definitely worth learning.

Take a look at my website and join my email list if you are interested in these topics!