- Introduction
- What is an algorithm?
- Notation for programs
- Proof techniques
- Basics review: Sets - Functions - Limits - Simple series
- Fundamentals
- Instances and problems - Elementary operations.
- Efficiency
- Average and worst-case analysis
- Examples
- Asymptotic notation
- Introduction
- A notation for "the order of"
- The omega notation
- The theta notation
- The conditional asymptotic notation
- Analysis of algorithms
- Analyzing control structures
- Using a barometer
- Amortized analysis
- Solving recurrences
- Data structures
- Arrays, stacks and queues
- Records and pointers
- Lists, graphs, trees and associative tables
- Heaps
- Disjoint set structures
- Greedy algorithms
- Making change
- General characteristics of Greedy algorithms
- Graphs MST - Kruskal's and Prims's algorithms
- Graphs: shortest paths
- Knapsack problem
- Scheduling
- Divide - and - Conquer
- Multiplying large integers
- Binary search
- Sorting by: merging and quicksort
- Finding the median
- Matrix multiplication
- Exponentiation
- Quick look at cryptography
- Dynamic programming
- Making change
- Principles of optimality
- The knapsack problem
- Shortest paths - Floyd's algorithm
- Chained matrix multiplication
- Introduction to probabilistic algorithms - Parallel algorithms
- Introduction to computational complexity
|