Course Description: Advanced topics in formal algorithm design and analysis, including advanced shortestpaths algorithms, amortized analysis, network flows, NPcompleteness, and selected topics in computational geometry, distributed\parallel, randomized, and approximation algorithms.
Course Objectives: The goal of this course is to give you advanced fundamental knowledge in algorithms. We describe some useful algorithms and explain how they work and why they are considered good, in order to (1) help you recognize situations in which you would be better off looking in the literature or asking someone knowledgeable for a good algorithm to solve your problem instead of just coding the first idea that comes to your mind, and (2) give you enough background so that you are able to understand and navigate the literature on algorithms. In order to achieve this, you will have to work through and understand several algorithmic techniques (e.g., divideandconquer, dynamic programming, greedy algorithms, network flow algorithms, selfadjusting data structures, basic randomized/approximation techniques) and the mathematical background necessary for analyzing the properties of these techniques and the algorithms based on them (e.g., amortized analysis, recurrence relations, basic graph theory, NPcompleteness).
Students must have already mastered the material typically covered in a junior level CS Data Structures and Algorithms class (e.g., CSE310 at ASU) and its prerequisites such as Discrete Mathematics (e.g., MAT243 at ASU). In particular, you should know how quicksort and mergesort work (and be able to write and solve recurrence relations for those), you should be able to use the "bigOh" notation and you should have seen the algorithms of Dijkstra and Prim and have an understanding of how and why they work. We also assume you know the definitions and basic properties of heaps and binary search trees.
This is a graduatelevel Computer Science course; obviously we assume you know computer programming.
Course
Information: 
CSE 551: Foundations of Algorithms
http://www.public.asu.edu/~ccolbou/src/cse551f15.html 

Class Meeting Time: 
LSE 106 

Instructor:
Office Hours: 
Office: Brickyard 444 Charles.Colbourn@asu.edu Monday 11:0012:00, Wednesday 10:0011:00 

TA:
Office Hours: 
Office: Centerpoint Tutoring Center czhou24@asu.edu Monday 3:005:00, Wednesday 11:001:00 

Prerequisites: 
Data structures; Discrete mathematics. 

Special Needs:  If you are entitled to extra accommodation for any reason (such as a disability), we make every reasonable attempt to accommodate you. However, it is your responsibility to discuss this with the instructor at the beginning of the course.  
Absences:  If you will miss a test or homework submission because of a documented medical or family issue, or because of a religious observance, you must (1) bring it to the instructor's attention as early as is feasible, and (2) provide documentation. In these circumstances, arrangements will be made to replace the test or homework missed; under no other circumstances is makeup or replacement work available.  
Academic Honesty: 
Students are expected to abide by the FSE Honor Code (http://engineering.asu.edu/integrity/).
Work in this course, unless explicitly stated in writing to the contrary, is to be an effort by the individual student. It is not acceptable to use work other than your own without full attribution and acknowledgment. While you are welcome to discuss problems with others, it is not acceptable to discuss solutions with them. Depending on the severity of the infraction, penalties may include a grade of zero on the offending item, a grade of zero on the offending item and a reduction of the final grade by one full letter grade, a failing grade in the course with an indication of academic dishonesty. Such penalties might result in a requirement to withdraw from the university. All instances of academic integrity violations are reported automatically (no exceptions) to the dean's office. If in doubt about anything related to academic integrity, see the instructor. 

TextBooks:  
Required Text:  Algorithm Design, J. Kleinberg and E. Tardos. Addison Wesley, 2006.  
Recommended Text:  Introduction to Algorithms, Cormen, T. H., Leiserson, C.E., Rivest, R.L., and Stein, C., , MIT Press, , 3rd ed., 2009. 