# Algorithms

### Spring 2019

Documents

- Syllabus and Schedule - Revised April 30, 2019
- About Laptops and Phones in Class
- Course Policies
- Academic Calendar
- Academic Honesty
- Academic Review Sessions
- Department of Computing Technology Goals

Books

- Our Textbook
- Introduction to Algorithms, Third Edition by Cormen, Leiserson, Rivest, and Stein
- Other Algorithms Books
- Algorithms by Jeff Erickson - FREE
- Web resources for Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne
- Related Books
- Open Data Structures books by Pat Morin - FREE
- Computational Complexity: A Modern Approach by Sanjeev Arora and Boaz Barak - FREE draft
- Discrete Mathematics: An Open Introduction, 3rd ed by Oscar Levin

Assignments

- Embrace Computer Science scholarship and write your labs using LaTeX. ShareLaTeX / OverLeaf is probably the easiest way to do this. I've written a lab example you can use as a template. There are more LaTeX resources below.
- Assignment Zero - Limericks in LaTeX
- Assignment One - Data Structures and magic items.
- Assignment Two - Sorting, Searching, and Hashing
- Assignment Three - Graphs and Trees
- Assignment Four - Dynamic Programming (graphs) and Greedy Algorithms (spice)

Examples

- Asmyptotic Curves
- Common Sorting Algorithms with animations
- More Common Sorting Algorithms from Rosetta Code
- Hash code tests and analysis as text and as Java code

Resources

- Desmos - graphing calculator
- Introduction to Graph Theory
- Bellman-Ford
- LaTeX
- Comprehensive TEX Archive Network
- Overleaf (formerly ShareLaTeX)
- LaTeX Tutorial from Overleaf
- TeX Stack Exchange
- TikZ package tutorial (for drawing DFAs and NFAs)
- Git
- A Gentle Introduction to Git and GitHub from Alan
- Try Github - a tutorial
- Git Guides
- Git Basics - Starting
- Git Basics - Tips and Tricks
- GitHub for Beginners, part one from ReadWrite
- GitHub for Beginners, part two from ReadWrite
- Advanced: Git From the Inside Out
- How to Write a Git Commit Message - pretty good advice
- The Issues Feature on GitHub
- Dangers of GitHub and Amazon

Articles

- A summary of runtime complexity
- Big O and Friends
- Some Essential Algorithms
- Donald Knuth, The Yoda of Silicon Valley
- Incompleteness Ex Machina
- Church-Turing Thesis from Communications of the ACM
- The State of P vs. NP today
- Ineffective Sorts from XKCD
- A General Method for Solving Divide-and-Conquer Recurrences by Jon Bentley et. al in 1980 - basis for the master method. Here's an earlier version from CMU / Naval Research in 1978

I reserve the copyright for all parts of my courses.
Commercial reproduction of any course material, including lecture notes
taken by students, without my EXPRESS WRITTEN consent, is prohibited.
Seriously.