
•important for all other branches of computer science
•plays a key role in modern technological innovation
We talk about Karatsuba Multiplication and whether and algo is more efficient by using less recursive steps.
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)
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.
Work through a sample of our first algorithmic thinking, merge sort.
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.
Proving the running time of merge sort
The guiding principles of analyzing algorithms
We go over the definition of Big Oh.
We mathematically prove and then contradict the definition of big oh mathmatically
Go over omega, theta and small oh notation.
We go through additional examples for Asymptotic notation.
Using Divide and Conquer (Merge Sort) to solve inversions.
Solving the Cubic time problem of multiplying Matrices by using Stassen's.
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.
We start using the master method in preparation of going through some examples. We define 3 cases of the Master Method.
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.
We go through a proof of the master method that should enhance your understanding of the use of the master method.
We continue on the proof of the master method.
Our final talk about the master method proofs.
Quick sort is a favorite programming algo and we will introduce this topic to you here. The next few lectures will support this lecture.
Using a partition to subroutine to optimize quick sort
Using randomization to select a pivot point
We continue with Quick Sort
We are working on defining the quick sort.
We are proving the true running time of quick sort.
We talk about probability with algorithms
We introduce the R select algorithms
We wrap up our sorting algos with linear time selection
Just a warm up to Data structures
We get started on talking about the HEAP data structure.
We do a few examples of heaps.
Balanced Binary Search Trees.
Our last lecture is focused on talking about Hash Tables on a high level.
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?