Algorithms and Data Structures in Java - Part II
4.7 (63 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.
1,357 students enrolled
Wishlisted Wishlist

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

Add to Wishlist

Algorithms and Data Structures in Java - Part II

Data compression, tries, substring search and sorting
4.7 (63 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.
1,357 students enrolled
Created by Holczer Balazs
Last updated 5/2017
English
Current price: $10 Original price: $35 Discount: 71% off
5 hours left at this price!
30-Day Money-Back Guarantee
Includes:
  • 7.5 hours on-demand video
  • 4 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 data compression
  • Get to know sorting algorithms
View Curriculum
Requirements
  • Core Java
  • Eclipse or other IDE
Description

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

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 Boyer-Moore algorithm and we will discuss brute-force approach as well as Raabin-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.

Hope you will like the course, let's get started!

Who is the target audience?
  • This course is meant for university students with quantitative background (mathematics, computer science) but anyone with core java knowledge can get a good grasp of the lectures
Students Who Viewed This Course Also Viewed
Curriculum For This Course
74 Lectures
07:35:26
+
Introduction
2 Lectures 01:15

Complexity theory
00:05
+
Prefix Tree - Tries
15 Lectures 01:39:16



Prefix tree introduction - autocomplete
05:19

Prefix tree introduction - trie as a hash table
09:01

Prefix tree introduction - hashing versus tries
06:47

Prefix tree introduction - applications
02:05

Prefix tree implementation - insert, search I
06:49

Prefix tree implementation - insert, search II
08:46

Prefix tree implementation - insert, search III
08:10

Prefix tree implementation - as a map
06:56

Prefix tree implementation - autocomplete
09:08

Prefix tree implementation - sorting
02:32

Longest common prefix
05:21

Longest common prefix in networking
07:31
+
Ternary Search Tree
6 Lectures 34:26
Ternary search tree introduction - basics
06:01

Ternary search tree introduction - insert
05:30

Ternary search tree introduction - get
04:18

Ternary search tree introduction - applications
05:05

Ternary search tree implementation I
08:12

+
Substring Search
7 Lectures 45:53
Brute-force search introduction
06:42

Brute-force search implementation
07:04

Boyer-Moore search introduction
06:38

Boyer-Moore search example
04:26

Boyer-Moore implementation I
10:15

Boyer-Moore implementation II
02:06

Rabin-Karp algorithm introduction
08:42
+
Strings
6 Lectures 38:17
Strings introduction
13:01

String reversion
06:37

Suffixes
05:01

Prefixes
04:00

Longest common prefix
05:34

Longest repeated substring problem
04:04
+
Basic Sorting Algorithms
24 Lectures 02:31:09
Sorting introduction
08:02

Adaptive sorting algorithms
03:05

Bogo sort introduction
03:35

Bogo sort implementation
06:43

Sleep sort
03:08

Bubble sort introduction
05:35

Bubble sort implementation
05:15

Selection sort introduction
06:39

Selection sort implementation
04:12

Insertion sort introduction
07:39

Insertion sort implementation
04:49

Shell sort introduction
08:14

Shell sort implementation
06:46

Quicksort introduction I
08:53

Quicksort introduction II
07:41

Quicksort implementation
06:55

Merge sort introduction - divide
06:50

Merge sort introduction - conquer
08:54

Merge sort implementation
06:26

Hybrid algorithms introduction
05:50

Non-comparison based algorithms
02:27

Counting sort introduction
08:06

Counting sort implementation
06:42

Radix sort introduction
08:43
+
Data Compression
11 Lectures 01:25:04
Run length encoding introduction
10:46

Run length encoding implementation - encode
05:15

Run length encoding implementation - decode
05:45

Huffman encoding introduction
09:13

Huffman decoding
04:05

Huffman encoding implementation I - helper classes
07:27

Huffman encoding implementation II - encoding
07:58

Huffman encoding implementation III - testing
07:51

LZW compression introduction - compression
10:27

LZW compression introduction - decompression
06:53

LZW implementation
09:24
+
Source Code & Slides
3 Lectures 00:06
Slides
00:01

Source code
00:01

Discounts for other courses
00:02
About the Instructor
Holczer Balazs
4.5 Average rating
3,133 Reviews
30,861 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!