everything.study
18.410

Design and Analysis of Algorithms

4-0-8 units · Undergraduate

See description under subject 6.1220J.

Spring 2015

Topics

  • Overview, Interval Scheduling
  • Divide & Conquer: Convex Hull, Median Finding
  • Divide & Conquer: Smarter Interval Scheduling, Master Theorem, Strassen’s Algorithm
  • Divide & Conquer: FFT
  • B-trees
  • Divide & Conquer: Van Emde Boas Trees
  • Amortization: Union-find
  • Amortization: Amortized Analysis
  • Randomization: Matrix Multiply, Quicksort
  • Randomization: Randomized Median
  • Randomization: Skip Lists
  • Randomization: Universal & Perfect Hashing
  • Dynamic Programming: More Examples
  • Augmentation: Range Trees
  • Dynamic Programming: Advanced DP
  • Dynamic Programming: All-pairs Shortest Paths
  • Greedy Algorithms: Minimum Spanning Tree
  • Greedy Algorithms: More Examples
  • Incremental Improvement: Max Flow, Min Cut
  • Incremental Improvement: Matching
  • Incremental Improvement: Applications of Network Flow & Matching
  • Linear Programming: LP, Reductions, Simplex
  • Complexity: P, NP, NP-completeness, Reductions
  • Complexity: More Reductions
  • Complexity: Approximation Algorithms
  • Complexity: Fixed-parameter Algorithms
  • Complexity: Approximations
  • Synchronous Distributed Algorithms: Symmetry-breaking. Shortest-paths Spanning Trees
  • Asynchronous Distributed Algorithms: Shortest-paths Spanning Trees
  • More Distributed Algorithms
  • Cryptography: Hash Functions
  • Cryptography: Encryption
  • Cryptography: More Primitives
  • Cache-oblivious Algorithms: Medians & Matrices
  • Cache-oblivious Algorithms: Searching & Sorting

Readings

Spring 2012

Topics

  • Introduction, median finding, solving recurrences
  • Median finding, interval scheduling
  • Greedy algorithms, minimum spanning trees: Kruskal’s
  • Minimum spanning trees: Prim’s
  • Fast Fourier transform
  • Dynamic programming, all pairs shortest paths: Floyd-Warshall
  • All-pairs shortest paths II: Johnson’s
  • Randomized algorithms
  • Randomized algorithms, high probability bounds
  • Hashing
  • Amortized analysis
  • Competitive analysis
  • Network flows
  • van Emde Boas data structure
  • Advanced data structures: disjoint sets
  • P vs. NP
  • Approximation algorithms
  • Compression
  • Sub-linear time algorithms
  • Clustering
  • Derandomization
  • Computational geometry

Readings

Fall 2005 · Introduction to Algorithms (SMA 5503)

Topics

  • Administrivia
  • Correctness of Algorithms
  • Asymptotic Notation
  • Divide-and-Conquer: Strassen, Fibonacci, Polynomial Multiplication
  • Recurrences, Sloppiness
  • Quicksort, Randomized Algorithms
  • Heapsort, Dynamic Sets, Priority Queues
  • Linear-time Sorting: Lower Bounds, Counting Sort, Radix Sort
  • Order Statistics, Median
  • Applications of Median
  • Hashing, Hash Functions
  • Universal Hashing, Perfect Hashing
  • Binary Search Trees, Tree Walks
  • Relation of BSTs to Quicksort
  • Red-black Trees, Rotations, Insertions, Deletions
  • 2-3 Trees, B-trees
  • Augmenting Data Structures, Dynamic Order Statistics, Interval Trees
  • Skip Lists
  • Range Trees
  • Amortized Algorithms, Table Doubling, Potential Method
  • Competitive Analysis: Self-organizing Lists
  • Competitive Analysis: Ski Rental, Randomized Competitive Algorithm
  • Dynamic Programming, Longest Common Subsequence
  • Greedy Algorithms, Minimum Spanning Trees
  • Shortest Paths I: Properties, Dijkstra’s Algorithm, Breadth-first Search
  • Shortest Paths II: Bellman-Ford, Linear Programming, Difference Constraints
  • Graph Searching: Depth-first Search, Topological Sort, DAG Shortest Paths
  • Shortest Paths III: All-pairs Shortest Paths, Matrix Multiplication, Floyd-Warshall, Johnson
  • Ethics, Problem Solving (Mandatory Attendance)
  • Advanced Topics
  • Advanced Topics (cont.)

Readings

  • Listed reading
  • The table below provides information on the course’s reading assignments, which are taken from the course textbook:
    Listed reading
  • Analysis of Algorithms, Insertion Sort, Mergesort Chapters 1-2
    Listed reading
  • Substitution, Master Method Chapters 3-4, excluding section 4.6
    Listed reading
  • SES #: L3 · TOPICS: Divide-and-Conquer: Strassen, Fibonacci, Polynomial Multiplication · READINGS: Sections 4.2 and 30.1
    Reading assignment
  • SES #: L4 · TOPICS: Quicksort, Randomized Algorithms · READINGS: Sections 5.1-5.3
    Reading assignment
  • SES #: R3 · TOPICS: Heapsort, Dynamic Sets, Priority Queues · READINGS: Chapter 6
    Reading assignment
  • SES #: L5 · TOPICS: Linear-time Sorting: Lower Bounds, Counting Sort, Radix Sort · READINGS: Sections 8.1-8.3
    Reading assignment
  • SES #: L6 · TOPICS: Order Statistics, Median · READINGS: Chapter 9
    Reading assignment
  • SES #: L7 · TOPICS: Hashing, Hash Functions · READINGS: Sections 11.1-11.3
    Reading assignment
  • SES #: L8 · TOPICS: Universal Hashing, Perfect Hashing · READINGS: Section 11.5
    Reading assignment
  • SES #: R6 · TOPICS: Binary Search Trees, Tree Walks · READINGS: Sections 12.1-12.3
    Reading assignment
  • SES #: L10 · TOPICS: Red-black Trees, Rotations, Insertions, Deletions · READINGS: Chapter 13
    Reading assignment
  • SES #: L11 · TOPICS: Augmenting Data Structures, Dynamic Order Statistics, Interval Trees · READINGS: Chapter 14
    Reading assignment
  • Reading assignment
  • SES #: L13 · TOPICS: Amortized Algorithms, Table Doubling, Potential Method · READINGS: Chapter 17
    Reading assignment
  • SES #: L14 · TOPICS: Competitive Analysis: Self-organizing Lists · READINGS: Sleator, Daniel D., and Robert E. Tarjan. “Amortized efficiency of list update and paging rules.” Communications of the ACM 28, no. 2 (February 1985): 202-208.
    Reading assignment
  • SES #: L15 · TOPICS: Dynamic Programming, Longest Common Subsequence · READINGS: Chapter 15
    Reading assignment
  • SES #: L16 · TOPICS: Greedy Algorithms, Minimum Spanning Trees · READINGS: Sections 16.1-16.3 and 22.1
    Reading assignment
  • SES #: L17 · TOPICS: Shortest Paths I: Properties, Dijkstra’s Algorithm, Breadth-first Search · READINGS: Section 22.2
    Reading assignment
  • SES #: R10 · TOPICS: Graph Searching: Depth-first Search, Topological Sort, DAG Shortest Paths · READINGS: Sections 22.3-22.4
    Reading assignment
  • SES #: L19 · TOPICS: Shortest Paths III: All-pairs Shortest Paths, Matrix Multiplication, Floyd-Warshall, Johnson · READINGS: Chapter 25
    Reading assignment
  • Reading assignment
  • SES #: L24 · TOPICS: Advanced Topics (cont.) · READINGS: Demaine, Erik D. “Cache-Oblivious Algorithms and Data Structures.” To appear in Lecture Notes from the EEF Summer School on Massive Data Sets , a volume of Lecture Notes in Computer Science . Berlin, Germany: Springer-Verlag.
    Reading assignment
  • Aho, Alfred V., John E. Hopcroft, and Jeffrey D. Ullman. The Design and Analysis of Computer Algorithms . Reading, MA: Addison-Wesley, 1974. ISBN: 0201000296. The classic text, but it lacks topics in network flows and linear programming, as well as more recent algorithms.
    Listed reading
  • ———. Data Structures and Algorithms . Reading, MA: Addison-Wesley, 1983. ISBN: 0201000237. Revised and more elementary version of the first six chapters of The Design and Analysis of Computer Algorithms.
    Listed reading
  • Baase, Sara. Computer Algorithms: Introduction to Design and Analysis . 2nd ed. Reading, MA: Addison-Wesley, 1988. ISBN: 0201060353. General reference, although the exposition is sometimes terse or sketchy.
    Listed reading
  • Bentley, Jon Louis. Programming Pearls . Reading, MA: Addison-Wesley, 1986. ISBN: 0201103311. Applications of algorithm design techniques to software engineering.
    Listed reading
  • ———. More Programming Pearls: Confessions of a Coder . Reading, MA: Addison-Wesley, 1988. ISBN: 0201118890. More applications of algorithm design techniques to software engineering.
    Listed reading
  • ———. Writing Efficient Programs . Englewood Cliffs, NJ: Prentice-Hall, 1982. ISBN: 0139702512. Performance hacking extraordinaire.
    Listed reading
  • Brassard, Gilles, and Paul Bratley. Algorithmics: Theory and Practice . Englewood Cliffs, NJ: Prentice-Hall, 1988. ISBN: 0130232432. Good examples and problems. Focus on methods rather than specific problems.
    Listed reading
  • Chung, Kai Lai. Elementary Probability Theory with Stochastic Processes . New York, NY: Springer-Verlag, 1974. ISBN: 0387900969. Intuitive introduction to probability.
    Listed reading
  • Even, Shimon. Graph Algorithms . Rockville, MD: Computer Science Press, 1979. ISBN: 0914894218. Broad treatment of graph algorithms, including network flow and planarity.
    Listed reading
  • Feller, William. An Introduction to Probability Theory and Its Applications . 3rd ed. 2 vols. New York, NY: John Wiley & Sons, 1968, 1971. ISBN: 0471257087. ISBN: 0471257095. Excellent reference for probability theory.
    Listed reading
  • Garey, Michael R., and David S. Johnson. Computers and Intractibility: A Guide to the Theory of NP-Completeness . San Francisco, CA: W. H. Freeman & Co., 1979. ISBN: 0716710447. Reference book devoted to NP-completeness. The second half contains an extensive list of NP-complete problems and references to algorithms in the literature for polynomial-time special cases.
    Listed reading
  • Gonnet, Gaston H. Handbook of Algorithms and Data Structures . Reading, MA: Addison-Wesley, 1984. ISBN: 020114218X. Code in Pascal and C, comparisons of actual running times, and pointers to analysis in research papers.
    Listed reading
  • Gusfield, Dan. Algorithms on Strings, Trees, and Sequences: Computer Science and Computational Biology . Cambridge, UK: Cambridge University Press, 1997. ISBN: 0521585198. General treatment of algorithms that operate on character strings and sequences.
    Listed reading
  • Horowitz, Ellis, and Sartaj Sahni. Fundamentals of Computer Algorithms . Potomac, MD: Computer Science Press, 1978. ISBN: 0914894226. Good on data structures, dynamic programming, and branch-and-bound algorithms.
    Listed reading
  • Kingston, Jeffrey H. Algorithms and Data Structures: Design, Correctness, Analysis . Reading, MA: Addison-Wesley Publishing Co., 1991. ISBN: 0201417057. A nice introductory book on data structures, with a good chapter on algorithm correctness.
    Listed reading
  • Knuth, Donald E. The Art of Computer Programming. 3rd ed. 3 vols. Reading, MA: Addison-Wesley, 1997. ISBN: 0201896834. ISBN: 0201896842. ISBN: 0201896850. Encyclopedic work in three volumes: (1) Fundamental Algorithms, (2) Seminumerical Algorithms, and (3) Sorting and Searching.
    Listed reading
  • Lawler, Eugene L. Combinatorial Optimization: Networks and Matroids . New York, NY: Holt, Rinehart, and Winston, 1976. ISBN: 0030848660. Graph algorithms (dense graphs), network flows, and linear programming. First few chapters are excellent.
    Listed reading
  • Liu, Chung L. Introduction to Combinatorial Mathematics . New York, NY: McGraw-Hill, 1968. ISBN: 0070381240. Combinatorial mathematics relevant to computer science. Excellent problems.
    Listed reading
  • Manber, Udi. Introduction to Algorithms: A Creative Approach . Reading, MA: Addison-Wesley, 1989. ISBN: 0201120372. Elementary text with an emphasis on creativity.
    Listed reading
  • Mehlhorn, Kurt. Data Structures and Algorithms. 3 vols. New York, NY: Springer-Verlag, 1984. ISBN: 038713302X. ISBN: 354013641X. ISBN: 0387136428. Three volumes: (1) Sorting and Searching, (2) Graph Algorithms and NP-Completeness, and (3) Multidimensional Searching and Computational Geometry. Lecture notes on basic and advanced topics.
    Listed reading
  • Niven, Ivan, and Herbert S. Zuckerman. An Introduction to the Theory of Numbers . 4th ed. New York, NY: John Wiley & Sons, 1980. ISBN: 0471028517. Readable introduction to number theory.
    Listed reading
  • Papadimitriou, Christos H., and Kenneth Steiglitz. Combinatorial Optimization: Algorithms and Complexity . Englewood Cliffs, NJ: Prentice-Hall, 1982. ISBN: 0131524623. Linear programming and its variants.
    Listed reading
  • Press, William P., Brian P. Flannery, Saul A. Teukolsky, and William T. Vetterling. Numerical Recipies in C: The Art of Scientific Computing . Cambridge, UK: Cambridge University Press, 1988. ISBN: 052135465X. Code for numerical algorithms.
    Listed reading
  • Reingold, Edwin M., Jurg Nievergelt, and Narsingh Deo. Combinatorial Algorithms: Theory and Practice . Englewood Cliffs, NJ: Prentice-Hall, 1977. ISBN: 013152447X. Good on recurrence relations and binary search trees.
    Listed reading
  • Sedgewick, Robert. Algorithms . 2nd ed. Reading, MA: Addison-Wesley, 1988. ISBN: 0201066734. Elementary text with an excellent breadth of topics. Light on analysis, but lots of figures.
    Listed reading
  • Sipser, Michael. Introduction to the Theory of Computation . Boston, MA: PWS Publishing Company, 1997. ISBN: 053494728X. A good text on computability and complexity theory.
    Listed reading
  • Tarjan, Robert Endre. Data Structures and Network Algorithms . Philadelphia, PA: Society for Industrial and Applied Mathematics, 1983. ISBN: 0898711878. Advanced book with tons of good stuff.
    Listed reading

Prerequisites & course information

Same subject as 6.1220J Prereq: 6.1200[J] and 6.1210 U (Fall, Spring) 4-0-8 units

Sources