CS 1501 Syllabus for Summer 2009 (209-7)
Information
without a CLASS # is tentative and may be significantly altered. Reexamine this
page frequently, as additional references, Web links, examples and other
information may be added throughout the term. Please also see the Algorithm
Animations page (thanks to Jonathan Beaver), which demonstrates many of the
algorithms covered throughout the course.
|
CLASS # |
DATE |
REFERENCES |
TOPICS/OTHER INFO |
|
1 |
May 12 |
Sedgewick Chapter 6, 7 |
Intro to the course and course information sheet, converting algorithms to programs, comparing algorithm implementations, algorithm analysis |
|
2 |
May 14 |
Sedgewick Chapter 44 |
Intro to Exhaustive Search, pruning, recursion and backtracking -- 8 Queens Example |
|
3 |
May 19 |
Sedgewick Chapter 14, 17 |
Review of simple searching methods; intro. to digital search trees; radix search tries, multiway radix search tries; Patricia trees |
|
4 |
May 22 |
Sedgewick Chapter 16 |
De la Briandais (DLB) trees – idea, examples and detailed implementation; comparison to regular multiway radix search tries Intro. to hashing; collisions; avoiding collisions and the Pigeonhole Principle; basic collision resolution schemes (open addressing, closed addressing) |
|
5 |
May 26 |
Sedgewick Chapter 36 |
Reducing collisions with a good hash function; Horner's method to hash strings Linear probing idea; clustering and its effects; double-hashing (improvement over linear probing, implementation issues); problems with delete when using open addressing; |
|
6 |
May 28 |
Sedgewick Chapter 19 |
Closed addressing using separate
chaining Intro. to String Matching; Brute force algorithm; KMP algorithm; Rabin Karp Algorithm |
|
7 |
June 2 |
Sedgewick Chapter 22 |
Boyer-Moore mismatched character
heuristic; comparison of Boyer-Moore and other string matching Intro. to Compression, Lossy vs. Lossless compression |
|
8 |
June 4 |
|
Huffman Compression: idea, block codes vs. variable length codes (and the prefix property), entropy and compressibility, building the Huffman tree, correctness (satisfies prefix property), quality, encryption and decryption LZW Compression: idea; compression; decompression; special decompression case when codeword is not in dictionary |
|
9 |
June 9 |
|
LZW implementation issues:
Dictionary implementation, bits for codewords, action when out of codewords,
I/O of byte fragments Limits of compression and information entropy http://marknelson.us/1989/10/01/lzw-data-compression/ -- Info on LZW (including link to source
code) |
|
10 |
June 11 |
|
Integer multiplication: idea; Gradeschool algorithm; simple divide and conquer algorithm; recursive algorithm analysis; improved divide and conquer with Karatsuba algorithm; Exponentiation: inefficient vs. efficient implementation |
|
MATERIAL FOR MIDTERM EXAM ABOVE THIS LINE |
|||
|
11 |
June 16 |
Greatest common divisor: inefficient vs. efficient implementation Intro to Encryption, simple
encryption algorithms (Caesar cipher, substitution cipher), better block
encryption algorithms (Vigenere cipher, Vernam cipher) Public Key encryption: Need
for, basic idea of, RSA as the most common example, RSA key generation http://www.cs.pitt.edu/~kirk/cs1501/notes/rsademo/index.html,
RSA use and its runtime. |
|
|
12 |
June 18 |
|
MIDTERM EXAM |
|
13 |
June 23 |
|
RSA implementation issues; breaking RSA;
RSA uses – digital envelope and digital signature; verification of keys |
|
14 |
June 25 |
Sedgewick Chapter 29, 30 |
Finish RSA Intro to Graphs, graph definitions, limits
on number of edges, graph representations (adjacency matrix vs. adjacency
list), Depth-First Search and Breadth First Search ideas; tracing DFS |
|
15 |
June 30 |
Sedgewick Chapter 31 |
Tracing BFS Biconnectivity and Articulation Points Weighted graphs, Minimum Spanning Trees, Priority First Search (PFS) , Implementation of Prim's MST algorithm – naďve implementation |
|
16 |
July 2 |
|
Prim’s MST algorithm: better implementation using PFS – details of PFS implementation; difference in alg. for adjacency list and adjacency matrix; Dijkstra’s shortest path and how PFS differs for it |
|
17 |
July 7 |
Sedgewick Chapter 11 Sedgewick Chapter 33 |
Priority Queues – simple implementation;
Heap implementation; Implementing a heap using an array; adding indirection
to allow for update() function Network Flow: Introduction and definitions |
|
18 |
July 9 |
|
Network Flow: Ford-Fulkerson approach
using augmenting paths; implementation details; augmenting paths with
"backward flow"; Edmonds-Karp approach of BFS or PFS to find an
augmenting path |
|
19 |
July 14 |
Sedgewick Chapter 45 |
Min-Cut and how it relates to Max-Flow; Min-Cut for an unweighted graph Unsolvable problems, intractable problems, P, NP and NP-completeness |
|
21 |
July 16 |
Sedgewick Chapter 42 |
Local Search Heuristics for NP-complete
problems; Ex: 2-OPT for TSP problem Idea of dynamic programming;
Fibonacci Example |
|
22 |
July 21 |
|
Dynamic programming for
pseudo-polynomial solutions of NP-Complete problems: subset sum example Knapsack problem, its branch and
bound solution and its dynamic programming solution |
|
23 |
July 23 |
|
Edit distance problem and its
dynamic programming solution |
|
24 |
July 28 |
Sedgewick Chapter 24 |
Intro. to Geometric algorithms; determining if a point is in a polygon; special cases |