Programming Challenges-Welcome
Welcome!
()
Ace Your Next Coding Interview
What background knowledge is necessary?
Social Networks and Microlearning
Programming Challenges-Programming Assignment 1: Programming Challenges
Solving the Sum of Two Digits Programming Challenge (screencast)
()
Programming Challenges-(OPTIONAL) Solving The Maximum Pairwise Product Programming Challenge in C++
Optional Videos and Screencasts
Solving the Maximum Pairwise Product Programming Challenge: Improving the Naive Solution, Testing, Debugging
()
Stress Test - Implementation
()
Stress Test - Find the Test and Debug
()
Stress Test - More Testing, Submit and Pass!
()
Alternative testing guide in Python
Programming Challenges-Maximum Pairwise Product Programming Challenge
Maximum Pairwise Product Programming Challenge
Programming Challenges-Using PyCharm to solve programming challenges (optional experimental feature)
Using PyCharm to solve programming challenges
Programming Challenges-Acknowledgements (Optional)
Acknowledgements
Algorithmic Warm-up-Why Study Algorithms?
Why Study Algorithms?
()
Coming Up
()
Algorithmic Warm-up-Fibonacci Numbers
Problem Overview
()
Naive Algorithm
()
Efficient Algorithm
()
Resources
Algorithmic Warm-up-Greatest Common Divisor
Problem Overview and Naive Algorithm
()
Efficient Algorithm
()
Resources
Algorithmic Warm-up-Big-O Notation
Computing Runtimes
()
Asymptotic Notation
()
Big-O Notation
()
Using Big-O
()
Resources
Algorithmic Warm-up-Course Overview
Course Overview
()
Algorithmic Warm-up-Programming Assignment 2
Interview Questions
Greedy Algorithms-The Main Idea of Greedy Algorithms
Largest Number
()
Queue of Patients
()
Implementation and Analysis
()
Main Ingredients of Greedy Algorithms
()
Greedy Algorithms-Celebration Party
Celebration Party Problem
()
Greedy Algorithm
()
Implementation and Analysis
()
Greedy Algorithms-Maximum Value of the Loot
Maximizing Loot
()
Implementation and Analysis
()
Review
()
Greedy Algorithms-(Optional) Readings
Examples
Local vs Global Optimum
Proving Correctness of Greedy Algorithms
Implementation
Money Change
Solution: Use the Largest Denomination First
Proving Correctng
Maximizing the Value of the Loot Problem
Solution: Take as Much of the Most Expensive Compound as You Can
Divide-and-Conquer-Introduction
Intro
()
Linear Search
()
Binary Search
()
Binary Search Runtime
()
Resources
Divide-and-Conquer-Polynomial Multiplication
Problem Overview and Naïve Solution
()
Naïve Divide and Conquer Algorithm
()
Faster Divide and Conquer Algorithm
()
Resources
Divide-and-Conquer-Master Theorem
What is the Master Theorem?
()
Proof of the Master Theorem
()
Resources
Divide-and-Conquer-Sorting Problem
Problem Overview
()
Selection Sort
()
Merge Sort
()
Lower Bound for Comparison Based Sorting
()
Non-Comparison Based Sorting Algorithms
()
Resources
Divide-and-Conquer-Quick Sort
Overview
()
Algorithm
()
Random Pivot
()
Running Time Analysis (optional)
()
Equal Elements
()
Final Remarks
()
Resources
Dynamic Programming 1-Change Problem
Change Problem
()
Resources
Dynamic Programming 1-String Comparison
The Alignment Game
()
Computing Edit Distance
()
Reconstructing an Optimal Alignment
()
Resources
Dynamic Programming 1-Additional Slides
Additional Slides
Dynamic Programming 2-Knapsack
Problem Overview
()
Knapsack with Repetitions
()
Knapsack without Repetitions
()
Final Remarks
()
Polynomial vs Pseudopolynomial
Resources
Dynamic Programming 2-Placing Parentheses
Problem Overview
()
Subproblems
()
Algorithm
()
Reconstructing a Solution
()