Data Structures and Algorithms - High Level MADE EASY
3.2 (190 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
14,442 students enrolled

Data Structures and Algorithms - High Level MADE EASY

Abstract reasoning makes algorithms easy. Learn about Sort, Search, Trees, Hash Tables, and Heaps.
3.2 (190 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
14,442 students enrolled
Created by Gopal Shangari
Last updated 7/2018
English
English [Auto]
Current price: $139.99 Original price: $199.99 Discount: 30% off
5 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 8.5 hours on-demand video
  • 35 downloadable resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • they will be able to use algorithms with ease to solve their programming problems.
  • build a search engine from scratch
Course content
Expand all 37 lectures 08:19:44
+ Introduction
4 lectures 52:26

•important for all other branches of computer science

•plays a key role in modern technological innovation

Preview 18:31

We talk about  Karatsuba Multiplication and whether and algo is more efficient by using less recursive steps.  

Intro Continued
10:40

Brief course overview

•Vocabulary for design and analysis of algorithms

•Divide and conquer algorithm design paradigm

•Randomization in algorithm design

•Primitives for reasoning about graphs

•Use and implementation of data structures

– Heaps, balanced binary search trees, hashing and some variants (e.g., bloom filters)

Course Overview
18:14

Who should take this course?

•It doesn’t matter

•Ideally, you know some programming.

•It doesn’t matter which languages you know.

•Some (perhaps rusty) mathematical experience.

–  Basic discrete math, proofs by induction etc.

Course Overview Part 2
05:01
+ Algorithmic Thinking
27 lectures 06:26:11

Work through a sample of our first algorithmic thinking, merge sort.  

Merge Sort
08:59

We use Merge Sort to run a pseudocode example and begin comparing Log vs x^2, basically calculating run time for merge sort vs other less efficient sorting algorithms.  

Pseudocode
18:01

Proving the running time of merge sort

Merge Sort Analysis
19:51

The guiding principles of analyzing algorithms

Guiding Principles of Algorithm Assessment
20:23

We go over the definition of Big Oh.  

Big Oh Definition
08:28

We mathematically prove and then contradict the definition of big oh mathmatically

Big Oh Examples
12:01

Go over omega, theta and small oh notation.  

Omega, theta, little oh
12:09

We go through additional examples for Asymptotic notation.

Additional Examples
11:43

Using Divide and Conquer (Merge Sort) to solve inversions.  

Divide and Conquer Inversions
20:06
Counting Inversions
14:02

Solving the Cubic time problem of multiplying Matrices by using Stassen's.

Multiplying Matrices
19:42
Closest Pair Part 1
18:01
Closest Pair Part 2
12:17

This lecture is the introduction to the Master method and will  introduce new terminology for applying recursive algorithms. We will discuss using Gauss's algo and optimizing the use of merge sort algorithm.  

18. Master Method
13:56

We start using the master method in preparation of going through some examples.  We define 3 cases of the Master Method.

Master Method Precise
13:03

We work on 6 examples of the Master Method, mentioning cases where A is less then, equal to or greater then B to the D.  We compare situations in case three where we get some optimization of a quadratic algorithm.  

Master Method Examples
18:05

We go through a proof of the master method that should enhance your understanding of the use of the master method.  

Master Method Proof Part 1
14:55

We continue on the proof of the master method.  

Master Method Proof Part 2
13:25

Our final talk about the master method proofs.  

Master Method Proof Part 3
07:46

Quick sort is a favorite programming algo and we will introduce this topic to you here.  The next few lectures will support this lecture.  

Quick Sort
11:08

Using a partition to subroutine to optimize quick sort

Quick Sort Pivot Partition
15:02

Using randomization to select a pivot point

Quick Sort Pivot Point
24:12

We continue with Quick Sort

Partition Subroutine
15:02

We are working on defining the quick sort.  

Quick Sort Decomposition
06:54

We are proving the true running time of quick sort.  

Quick Sort Proof Continued
05:35

We talk about probability with algorithms

Probability
21:19

We introduce the R select algorithms

R select
10:06
+ Data Structures
6 lectures 01:01:07

We wrap up our sorting algos with linear time selection

Linear Time Selection
04:07

Just a warm up to Data structures

Data Structure Intro
06:30

We get started on talking about the HEAP data structure.  

Heaps
19:41

We do a few examples of heaps.

Heap Implementation
03:36

Balanced Binary Search Trees.

Balanced Binary Trees
08:05

Our last lecture is focused on talking about Hash Tables on a high level.  

Hash Tables
19:08
Requirements
  • Some programming experience is helpful but not required
Description

Have you ever used data structures in Python or Java?  Well, do you really understand how they work?  If you struggle with algorithms, it means you are approaching this topic the wrong way!  

There are lots of places to copy code from, but without having high level understanding, it can be difficult to handle data structures well.   

This course teaches the fundamentals of algorithms, so you can apply knowledge easily.  This course contains NO PROGRAMMING, JUST PSEUDOCODE to encourage understanding of Algorithms and how to use them

Whatever the reason, if you are looking for a course that focus on the implementations to give you a complete understanding of how things work, then this is the course for you.  This course is a combination of two courses I took as an undergraduate and taught to graduate students at Cornell and Stanford.  

This course goes over the theory of how things work, but only to give you what you need to know to understand the implementation covered. 

This is a hands-on course!  If you want to try understand things at a deep level, and work on implementations, rather than theory, then again, this is the course for you.

Topics covered:-

Arrays Linked Lists Trees Hashtables Stacks Queues Heaps Sort algorithms Search algorithms

The course also spends more time than most other courses of its kind looking at what’s available in the JDK. Students wanting to understand how things work "under the hood" will benefit enormously from this course.


Why learn about data structures and algorithms? 

The reality is, the more you learn about data structures and algorithms, the better a programmer you become.

Why?

Because, data structures and algorithms are effectively patterns for solving problems.   You want to add as many of them as you can to your skill-set.  By doing so, you will find you solve more problems, and use the right tools for the job, in a more elegant way.  And you will learn HEAPS of them in this course.

Why enrolling in this course is the best decision you can make.

Most courses focus on giving you the theory of how things work, so that you can take an interview.  Whilst the theory is important, the knowledge of how to implement these data structures and algorithms are of vital importance. This course goes over the theory of how things work, but only to give you what you need to know to understand the implementation covered.   The main focus of the course is to give you a real understanding of how things work under the hood, so that you can apply this to future programming projects.

If you want to actually understand how things work, and be able to take that understanding and apply it to your own programs, then this course is for you.

After completing this course, you will have a solid understanding of data structures and algorithms. The sooner you sign up for this course, the sooner you will have the skills and knowledge you need to increase your job or consulting opportunities.    Both Python and Java developers with key skills and understanding of data structures and algorithms are in high demand and get paid extremely well.  You need to MASTER ALGORITHMS to be a respected programmers.  

If you are ready for that new job promotion or consulting opportunity, it's time to get started.

Why not get started today?

 Click the Signup button to sign up for the course

Who is the target audience?

  • Developers who have some knowledge of Python or Java looking to understand data structures and algorithms at a deep level


Who this course is for:
  • Anyone interested in programming in any language.