CS 350 - Algorithms

 


Useful Links

Links
Date Topic
Review Material
Proof Writing for Discrete Math An overview of various proof writing techniques. Covers the basic strategies but doesn't go into a lot of detail.
Useful Additional Material
MIT 6.006 Intro to Algorithms MIT open courseware offers their intro to algorithms course as taught by Eric Demaine.
MIT 6.046 Design and Analysis of Algorithms MIT open courseware also offers their more advanced undergraduate algorithms course online.
Complexity
P vs NP and the Complexity Zoo An excellent high level description of the P vs NP problems and complexity classes in general.
Classic Nintendo Games are NP-Hard It's often surprising the problems that turn out to be difficult. This paper describes a technique for reducing 3SAT to many classic 2D games.
Classic Nintendo Games (Computationally)Hard A newer version of the previous paper.
Other
RegEx Crossword Puzzles Regular expressions are a useful skill and I found these to be a fun way to practice
Regular Expression Matching can be Simple and Fast While good RegEx parsing has been available since the development of Unix, some more modern languages have surprisingly inefficient implementations.
LaTeX CLRS Pseudocode If you want to use LaTeX and have your pseudocade match the textbook, this is the package for you.



Important Algorithms and Data Structures

Bellman-Ford Algorithm (Shortest path finding in weighted graphs)
Fibonacci Heap
Cooley-Tukey FFT Algorithm (Fourier transform)
RSA Algorithm
Rabin-Karp Algorithm (String matching)
Gayle-Shapely Algorithm (Stable marriage problem)
Bloom Filter
Trie (prefix tree)