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
Hashing Handout

 

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
String Matching Handout

 

Intro. to Compression, Lossy vs. Lossless compression

8

June 4

 

 

 

 

lzw.txt
lzw2.txt
lzw3.txt

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

 

 

compare.txt

LZW implementation issues: Dictionary implementation, bits for codewords, action when out of codewords, I/O of byte fragments
Comparison of compression schemes

Limits of compression and information entropy

 

http://marknelson.us/1989/10/01/lzw-data-compression/  -- Info on LZW (including link to source code)
http://en.wikipedia.org/wiki/Information_entropy -- Wikipedia article on information entropy
http://www.cs.sfu.ca/cs/CC/365/li/squeeze/ -- General info on lossless compression

 

10

June 11

karat.txt

 

Power.java

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

gcd.txt

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)
http://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher
http://www.pro-technix.com/information/crypto/pages/vernam_base.html

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.
http://en.wikipedia.org/wiki/RSA

12

June 18

 

MIDTERM EXAM

13

June 23

 

 

RSA implementation issues; breaking RSA; RSA uses – digital envelope and digital signature; verification of keys
http://www.rsasecurity.com/rsalabs/node.asp?id=2152
http://www.youdzone.com/signature.html

14

June 25

 

 

Sedgewick Chapter 29, 30

graphs1.txt

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
 DFS and BFS

15

June 30

 

Sedgewick Chapter 31

Tracing BFS

 

Biconnectivity and Articulation Points
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

PFS.cpp

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
pq.h pqtest.cpp pqtest.out

 

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
Flow.java flowtest1.txt flowtest2.txt flowtest3.txt

 

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
twoopt.c

 

Idea of dynamic programming; Fibonacci Example
fibo.java

22

July 21

 

Dynamic programming for pseudo-polynomial solutions of NP-Complete problems: subset sum example
subset.java

Knapsack problem, its branch and bound solution and its dynamic programming solution
Knap.java

23

July 23

 

Edit distance problem and its dynamic programming solution
http://www.merriampark.com/ld.htm

24

July 28

Sedgewick Chapter 24

Intro. to Geometric algorithms; determining if a point is in a polygon; special cases