Advanced Algorithms in Java
Course Description
This course is about advanced algorithms focusing on graph traversal, shortest path problems, spanning trees and maximum flow problems and a lots of its applications from Google Web Crawler to taking advantage of stock market arbitrage situations.
The course is going to take approximately 7 hours to completely but I highly suggest you typing these algorithms out several times in order to get the grasp of it. You can download the source code of the whole lecture at the last video.
In the first section we are going to talk about the main graph traversal algorithms (BFS, DFS) and its applications of course such as WebCrawler or topological ordering. The next section is about shortest pathalgorithms: there are several applications which we are going to be familiar with from image processing to FOREX market. The third chapter is about minimum spanning trees and clustering algorithms. Lastly, we are going to learn about the maximum flow problem, maybe the most important algorithm in this course. The last chapters are about how to solve NP problems with simulated annealing or genetic algorithms.
You should definitely take this course if you are interested in advanced topics concerning algorithms. There are a bunch of fields where these methods can be used: from software engineering to scientific research.
What are the requirements?
Core Java
Eclipse IDE
Internet connection
What am I going to get from this course?
Learn about the applications of data structures
Implement advanced algorithms efficiently
Able to move towards advanced topics such as machine learning or big data analysis
Get a good grasp of algorithmic thinking
What 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
Curriculum
Section 1: Introduction  

Lecture 1 
Introduction

03:29  
Lecture 2 
Graph theory – Hamiltonian and Eulerian cycles

06:54  
Section 2: Complexity Theory  
Lecture 3 
Complexity notations

09:31  
Lecture 4 
Complexity notations example

09:10  
Lecture 5 
Algorithm running times

09:37  
Lecture 6 
Complexity classes

07:13  
Section 3: Breadth First Search  
Lecture 7 
Breadthfirst search introduction

09:30  
Lecture 8 
BFS implementation

12:10  
Lecture 9 
BFS – WebCrawler (core of search engines)

05:44  
Lecture 10 
BFS – WebCrawler implementation

15:00  
Section 4: Depth First Search  
Lecture 11 
Depthfirst search introduction

10:21  
Lecture 12 
DFS implementation I – with stack

11:28  
Lecture 13 
DFS implementation II – with recursion

04:17  
Lecture 14 
Topological ordering introduction

10:31  
Lecture 15 
Topological ordering implementation

07:03  
Lecture 16 
Cycle detection introduction

06:30  
Lecture 17 
Cycle detection implementation

09:38  
Lecture 18 
Maze solving algorithm implementation

14:50  
Lecture 19 
Memory management: BFS vs DFS

05:23  
Section 5: Shortest Path Algorithms  
Lecture 20 
Dijkstra algorithm introduction – basics

05:35  
Lecture 21 
Dijkstra algorithm introduction – algorithm

05:44  
Lecture 22 
Dijkstra algorithm introduction – example

10:27  
Lecture 23 
BellmanFord algorithm introduction

08:59  
Lecture 24 
Dijkstra algorithm introduction – with adjacency matrix

09:22  
Lecture 25 
Shortest path algorithms applications

08:37  
Lecture 26 
Dijkstra algorithm implementation I

09:28  
Lecture 27 
Dijkstra algorithm implementation II

10:57  
Lecture 28 
BellmanFord algorithm implementation I

14:43  
Lecture 29 
BellmanFord algorithm implementation II

06:05  
Lecture 30 
DAG shortest path implementation

09:42  
Lecture 31 
Arbitrage situations on FOREX introduction

03:47  
Lecture 32 
Arbitrage situations on FOREX implementation

06:37  
Lecture 33 
Longest path implementation

03:50  
Section 6: Spanning Trees  
Lecture 34 
Unionfind data structure (disjoint sets)

10:56  
Lecture 35 
Unionfind data structure illustration

06:35  
Lecture 36 
Spanning trees introduction – Kruskal algorithm

10:36  
Lecture 37 
Kruskal algorithm implementation I

08:04  
Lecture 38 
Kruskal algorithm implementation II – disjoint set

15:40  
Lecture 39 
Kruskal algorithm implementation III

10:07  
Lecture 40 
Spanning trees introduction – lazy Prim’s algorithm

07:10  
Lecture 41 
Prims lazy algorithm implementation I

11:38  
Lecture 42 
Prims lazy algorithm implementation II – the core

07:06  
Lecture 43 
Spanning trees introduction – eager Prim’s algorithm

11:02  
Lecture 44 
Eager Prim’s algorithm implementation

10:45  
Lecture 45 
Applications of spanning trees

07:36  
Section 7: Strongly Connected Components  
Lecture 46 
Strongly connected components introduction

06:57  
Lecture 47 
Kosaraju algorithm introduction

08:19  
Lecture 48 
Kosaraju implementation I – the Graph class

07:28  
Lecture 49 
Kosaraju implementation II

07:41  
Lecture 50 
Kosaraju algorithm implementation III – test

01:01  
Lecture 51 
Tarjan implementation I

09:06  
Lecture 52 
Tarjan implementation II – test

00:44  
Lecture 53 
Applications of strongly connected components

06:48  
Section 8: Maximum Flow Problem  
Lecture 54 
Maximum flow introduction

09:18  
Lecture 55 
Maximum flow implementation

09:04  
Lecture 56 
Bipartite matching problem

05:18  
Lecture 57 
Bipartite matching implementation

02:37  
Section 9: Travelling Salesman Problem (TSP)  
Lecture 58 
Travelling salesman problem introduction

10:52  
Lecture 59 
TSP implementation I – with simulated annealing

14:17  
Lecture 60 
Tabu search introduction

09:47  
Lecture 61 
Genetic algorithms introduction

09:53  
Section 10: Euler cycle – Chinese Postman Problem  
Lecture 62 
Euler cycles introduction

10:49  
Section 11: Outro  
Lecture 63 
Final words

02:16  
Section 12: Source Code  
Lecture 64 
Source code

Article  
Lecture 65 
Slides

Article  
Lecture 66 
Coupon codes – get any of my other courses for a discounted price

Article 
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 BlackScholes model, or the Mertonmodel. Quantitative analysts use these algorithms and numerical techniques on daily basis so in my opinion these topics are definitely worth learning.
Course Features
 Lectures 0
 Quizzes 0
 Duration 50 hours
 Skill level All level
 Language English
 Students 1157
 Assessments Self