Algorithms and Data Structures in Java - Part II

Data compression, tries, substring search and sorting
4.6 (21 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.
543 students enrolled
Instructed by Holczer Balazs IT & Software / Other
$19
$20
5% off
Take This Course
  • Lectures 69
  • Length 7 hours
  • Skill Level All Levels
  • Languages English
  • Includes Lifetime access
    30 day money back guarantee!
    Available on iOS and Android
    Certificate of Completion
Wishlisted Wishlist

How taking a course works

Discover

Find online courses made by experts from around the world.

Learn

Take your courses with you and learn anywhere, anytime.

Master

Learn and practice real-world skills and achieve your goals.

About This Course

Published 4/2016 English

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

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 hash tables and ternary search trees. The second part will be about data compression. 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 step by step 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.

What are the requirements?

  • Core Java
  • Eclipse or other IDE

What am I going to get from this course?

  • 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

What 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

What you get with this course?

Not for you? No problem.
30 day money back guarantee.

Forever yours.
Lifetime access.

Learn on the go.
Desktop, iOS and Android.

Get rewarded.
Certificate of completion.

Curriculum

Section 1: Introduction
Introduction
Preview
01:10
Complexity theory
Article
Section 2: Prefix Tree - Tries
Prefix tree introduction - basics
09:14
Prefix tree introduction - insert
05:58
Prefix tree introduction - sorting
05:39
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
Section 3: Ternary Search Tree
Ternary search tree introduction - basics
03:57
Ternary search tree introduction - operations
07:34
Ternary search tree introduction - applications
03:34
TST implementation I
08:12
TST implementation II
05:20
Section 4: Substring Search
Brute-force search introduction
05:58
Brute-force search implementation
06:35
Boyer-Moore search introduction
14:03
Boyer-Moore implementation
09:32
Rabin-Karp algorithm introduction
08:42
Section 5: Strings
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
Section 6: Basic Sorting Algorithms
Sorting introduction
Preview
07:58
Adaptive sorting algorithms
Preview
03:35
Bogo sort introduction
02:23
Bogo sort implementation
04:48
Sleep sort
03:29
Bubble sort introduction
Preview
06:25
Bubble sort implementation
03:03
Selection sort introduction
07:31
Selection sort implementation
04:25
Insertion sort introduction
07:59
Insertion sort implementation
04:06
Shell sort introduction
08:32
Shell sort implementation
04:17
Quicksort introduction
16:42
Quicksort implementation
06:18
Merge sort introduction
14:45
Merge sort implementation
06:11
Hybrid algorithms introduction
05:59
Non-comparison based algorithms
02:11
Counting sort introduction
09:15
Counting sort implementation
04:20
Radix sort introduction
06:29
Section 7: Data Compression
Run length encoding introduction
09:03
Run length encoding implementation
09:04
Huffman encoding introduction
12:03
Huffman decoding
04:52
Huffman encoding implementation I - helper classes
05:45
Huffman encoding implementation II - encoding
08:37
Huffman encoding implementation III - testing
04:47
LZW compression introduction
07:30
LZW implementation I - compress
09:51
LZW implementation II - decompress
06:14
LZW implementation III - testing
02:39
Section 8: Source Code & Slides
Slides
Article
Source code
Article
Discounts for other courses
Article

Students Who Viewed This Course Also Viewed

  • Loading
  • Loading
  • Loading

Instructor Biography

Holczer Balazs, 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.

Ready to start learning?
Take This Course