preloader2.gif
A video learning series for budding computer scientists
Create Efficient Algorithms
Effective
Algorithm Design
Code Better Programs
Scroll Down for More

ABOUT CS BREAKDOWN

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

responsive.jpg

THE TEAM

staf2.jpg
Karim Hamasni
Student

 Graduated in July 2015 with honours, Karim that loves technology and problem solving.

535bd0c44ae8d544530004c4_staf3.jpg
James Earle
Student

 James is a coffee-fueled programming enthusiast in the 4th year of his degree in both Computer Science and Economics.

Videos

Algorithm Analysis
algoanalysispart1.jpg
Algorithm Analysis Part 1

 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
videothumb1.jpg
Dynamic Programming Intro

 A brief introduction to dynamic programming using the Fibonacci Sequence as an example.
Runtime: 8:42
Level: Intermediate
Narrated By: Karim Hamasni 

videothumbcomingsoon.jpg
Principle of Optimality

 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 

problemswooptimal.jpg
Problems Without Optimal Substructure

 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 

matrixchainmultiply.jpg
Matrix Chain Multiplication

 We'll apply dynamic programming to improve the efficiency of multiplying many matrices together.
Runtime: 31:00
Narrated
Level: Intermediate
By: Karim Hamasni 

videothumb3.jpg
Edit Distance

 We'll use methods of dynamic programming to determine the edit distance between 2 strings.
Runtime: 12:39
Level: Intermediate
Narrated By: James Earle 

longestcommonsubsequence.jpg
Longest Common Subsequence

 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 

rodcutting.jpg
Rod Cutting Problem

 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 

integerknapsack.jpg
Integer Knapsack Problem

 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 

changemaking.jpg
Change Making Problem

 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 

pseudopoly.jpg
Polynomial vs. Pseudo-Polynomial

 We explain the difference between a polynomial and pseudo-polynomial time algorithm.
Runtime: 7:14
Level: Intermediate
Narrated By: James Earle 

maxcontigsub.jpg
Maximum Contiguous Subsequence

 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
fractionalknapsack.jpg
Fractional Knapsack

 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 

huffman.jpg
Huffman Coding Algorithm

 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
kcenter.jpg
Introduction & K Center Problem

 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 

maxfloat.jpg
15 Maximum Float Problem

 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
nqueens.jpg
N-Queens Problem

 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 

graphcolour.jpg
Graph Colouring Problem

 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
introcrypto.jpg
Introduction To Cryptography

 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 

scrypt.jpg
Scrypt Algorithm

 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

ecanddh.jpg
Elliptic Curve Cryptography & Diffie-Hellman

 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 

behindbitcoin.jpg
The Cryptography of Bitcoin

 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

stay tuned

youtube
Watch Our Video Series
facebook
Keep Up To Date
Twitter
Join The Conversation
E-Mail Us
Contact Us Directly

GET IN TOUCH WITH US

Karim Hamasni

Phone: +1-905-321-0109
Email: karim.hamasni@gmail.com

James Earle

Phone: +1-647-404-3067
Email: earle.jamest@gmail.com