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/cse551s18.html 

Class Meeting Time: 
CAVC 351 

Instructor:
Office Hours: 
Office: Brickyard 444 Charles.Colbourn@asu.edu Monday 8:009:00, Thursday 1:002:00 

TA:
Office Hours: 
Office: Brickyard 221 Ryan.Dougherty@asu.edu Wednesdays 11:0012:00, Fridays 8:159:15 a.m. starting 01/15 

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