CS 3343/3341
Analysis of Algorithms
Spring 2012
  Outline of Lecture Topics  

Lecture Schedule
 Week  Tuesday    Thursday
1 17 Jan 2012 20 Jan 2012
2 24 Jan 2012 26 Jan 2012
3 31 Jan 2012 29 Feb 2012
4 7 Feb 2012 9 Feb 2012
5 14 Feb 2012 16 Feb 2012
6 21 Feb 2012 23 Feb 2012
7 28 Feb 2012 1 Mar 2012
8 6 Mar 2012 8 Mar 2012
Spring Break
       
Lecture Schedule
 Week  Tuesday    Thursday
9 20 Mar 2012 22 Mar 2012
10 27 Mar 2012 29 Mar 2012
11 3 Apr 2012 5 Apr 2012
12 10 Apr 2012 12 Apr 2012
13 17 Apr 2012 19 Apr 2012
14 24 Apr 2012 26 Apr 2012
15 1 May 2012 Study
15 7 May 2012 Final
 


Week 1
Tue., Jan 17:
  1. Course Organization. Look at the course web page and the various items on it.
  2. Introduction. Computer science: the study of algorithms. What is an algorithm?
    Answer: a set of rules for carrying out a computation. OK, then, what is a computation?
    Answer: there is a precise mathematical answer to this which we will (sort of) get to late in the semester. For now, a computation is what these computers all around us are doing.

    Definition: algorithm (from Knuth, until we get to the mathematical definition later).
    "A finite set of rules which gives a sequence of operations for solving a specific type of problem. An algorithm has five important features:

    1. Finiteness: Will terminate after a finite number of steps.
    2. Definiteness: Each step must be precisely defined.
    3. Input: Zero or more inputs.
    4. Output: One or more outputs.
    5. Effectiveness: Each basic step must be doable."

    Algorithms are fiendishly difficult to understand. No one takes them for granted. They are sensitive to the most minute changes, which can be catastrophic, in contrast with, say, an electric transformer, where small modifications in the size of elements or the number of windings in a coil will not keep it from working.

  3. Logarithms. See logs. [Text, p. 56] We will refer to items as needed.
  4. Exclusive-or. See xor. We will refer to items as needed.
  5. The exponentiation algorithm. See exponentiation. [Text, pp. 956-7]
  6. 1 WOM Storage.

Thu., Jan 19:

  1. Binary search. See binary search (Java and C). [Text, pp. 39, 799]
  2. Ternary search. See ternary search (Java and C).
  3. Comparison of searches. See three searches (Java).
  4. Test of searches. See test three searches (Java).
  5. 2 Fibonacci Search.


Week 2
Tue., Jan 24:

  1. Random Number Generation. See RNGs. [Text, p. 117]
  2. Quicksort. See
  3. 3 Bolts & Nuts.
Thur., Jan 26:

  1. Algorithm to randomize array order. See Randomize an array. [Text, p. 126]
  2. Randomized Quicksort. [Text, pp. 179-185]
  3. Defeating an opponent who has arbitrary computing power.
  4. 4 Fake Coin.
  5. Quiz 1, Answers.

Week 3
Tue., Jan 31:

  1. Quiz, Recitation 1, circular queues, etc.
  2. 5 Fibonacci matrix 1.
Thur., Feb 2:

  1. Growth of Functions: Asymptotic Notation. See Asymptotics. [Text, pp. 43-52]
  2. Recursion Trees and Cost Analysis. See recursion trees. [Text, pp. 88-92, pp. 174-178]
    Look at logs again. [Text, p. 56]

Week 4
Tue., Feb 7:

  1. Looking at asymptotics and recursion trees from previous class.
  2. 6 Newton's Meth. 1.
Thur., Feb 9:

  1. Divide and Conquer: Merge Sort. See Merge Sort
  2. Divide and Conquer: Ordinary matrix multiplication. See Matrix Multiplication

Week 5
Tue., Feb 14:

  1. Strassen's matrix multiplication. See Strassen's Matrix Multiplication
  2. Strassen's Matrix Multiplication: Theory. See strassen [Text, pp. 75-82]
  3. Asymptotic behavior of Strassen's method.
  4. Quiz 2, Answers
Thur., Feb 16:

  1. Matrix multiplication and master method for solving recurrences. [Text, pp. 93-97] See master method
  2. Multiplication faster than Θ(n2). See Multiply in Θ(n1.585)

Week 6
Tue., Feb 21:

  1. Catch up on Recitations, other topics.
Thur., Feb 23:

  1. Memoization, illustrated with Fibonacci Numbers. See Fibonacci Numbers
  2. Dynamic Programming. See Subset Sum Problem

Week 7
Tue., Feb 28:

  1. Areas of Computer Science Related to Algorithms. See Areas of CS.
  2. Applications of Dynamic Programming. See Matrix Chain Multiplication
Thur., Mar 1:

  1. More Dynamic Programming.

Week 8
Tue., March 6:

  1. Review for midterm.
Thur., March 8:

  1. Midterm exam.

Week 9
Tue., March 20:

  1. XXX.
Thur., March 22:

  1. XXX.

Week 10
Tue., March 27:

  1. XXX.
Thur., March 29:

  1. XXX.

Week 11
Tue., April 3

  1. XXX.
Thur., April 5

  1. XXX.

Week 12
Tue., April 10

  1. XXX.
Thur., April 12

  1. XXX.

Week 13
Tue., April 17

  1. XXX.
Thur., April 19

  1. XXX.

Week 14
Tue., April 24

  1. XXX.
Thur., April 26

  1. XXX.

Week 15
Tue., May 1

  1. XXX.