Course Ouline
Home ] Up ]

 

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