We are just a couple of Computer Science students from Brock University in Southern Ontario Canada looking to share knowledge of effective algorithm design.

Algorithm Analysis

We look at the basics of Big Oh, Omega and Theta notations and apply it to some simple algorithms.

Runtime: 10:18

Level: Beginner

Narrated By: Karim Hamasni

Dynamic Programming

A brief introduction to dynamic programming using the Fibonacci Sequence as an example.

Runtime: 8:42

Level: Intermediate

Narrated By: Karim Hamasni

A very important property that problems need to have in order to be eligible for a solution using Dynamic Programming.

Runtime: 9:26

Level: Intermediate

Narrated By: Karim Hamasni

Not all problems are eligible to be solved with Dynamic Programming. We look at two problems that do not exhibit optimal substructure.

Runtime: 4:37

Level: Intermediate

Narrated By: Karim Hamasni

We'll apply dynamic programming to improve the efficiency of multiplying many matrices together.

Runtime: 31:00

Narrated

Level: Intermediate

By: Karim Hamasni

We'll use methods of dynamic programming to determine the edit distance between 2 strings.

Runtime: 12:39

Level: Intermediate

Narrated By: James Earle

We look at a dynamic programming solution to finding the longest common subsequence between two strings.

Runtime: 13:56

Level: Intermediate

Narrated By: James Earle

We look at a dynamic programming solution to cutting a rod of length N in the most profitable way.

Runtime: 15:22

Level: Intermediate

Narrated By: Karim Hamasni

We attempt to figure out the optimal combination of different weight and valued items to maximize the value of items in a fixed size knapsack.

Runtime: 12:36

Level: Intermediate

Narrated By: James Earle

We calculate how much change to return to a customer in the fewest number of coins using dynamic programming.

Runtime: 13:23

Level: Intermediate

Narrated By: James Earle

We explain the difference between a polynomial and pseudo-polynomial time algorithm.

Runtime: 7:14

Level: Intermediate

Narrated By: James Earle

Covering the Dynamic Programming solution that optimizes the maximum contiguous subsequence of a given array. By computing a cumulative sum based on the previous values, we can solve this problem in O(n) running time.

Runtime: 6:46

Level: Intermediate

Narrated By: James Earle

Greedy Algorithms

We maximize the value of items in a fixed size knapsack by using items that we can break apart.

Runtime: 11:06

Level: Intermediate

Narrated By: James Earle

We look at a compression algorithm that shrinks the size of data without losing information, and uses the greedy choice property.

Runtime: 8:27

Level: Intermediate

Narrated By: Karim Hamasni

Approximation Algorithms

We introduce approximation algorithms that aim to find 'good enough' solutions, and demonstrate this using the K-Center Problem.

Runtime: 10:37

Level: Intermediate

Narrated By: Karim Hamasni

We go over a greedy approximation algorithm that saves us a lot of computational effort over calculating an exact optimal solution, while still providing something considerably close.

Runtime: 12:53

Level: Intermediate

Narrated By: James Earle

Backtracking Problems

We look at a problem for placing N Queens on an NxN sized chess board so that they cannot attack one another.

Runtime: 15:12

Level: Intermediate

Narrated By: Karim Hamasni

We try to colour the nodes of a graph in a way that no two adjacent vertices share a colour, using the fewest colours possible.

Runtime: 12:09

Level: Intermediate

Narrated By: Karim Hamasni

Code Implementation

Cryptography Algorithms

We introduce the topic of cryptography, as well as a few early ciphers, and how to break them.

Runtime: 7:40

Level: Intermediate

Narrated By: James Earle

We look at a very secure, password based key derivation function, that aims to be secure against brute force and rainbow table attacks.

Runtime: 20:37

Level: Advanced

Narrated By: Karim Hamasni

Code Implementation

We go over Elliptic Curve Cryptography, particularly as it pertains to the Diffie-Hellman protocol. The ECC Digital Signing Algorithm was also discussed in a separate video concerning Bitcoin's cryptography.

Runtime: 12:10

Level: Advanced

Narrated By: James Earle

We captured our in class presentation on the cryptography behind Bitcoin and shared it with you here!

Runtime: 29:28

Level: Advanced

Narrated By: Karim Hamasni & James Earle

Sources

Karim Hamasni

Phone: +1-905-321-0109

Email: karim.hamasni@gmail.com

James Earle

Phone: +1-647-404-3067

Email: earle.jamest@gmail.com