## CSE 551 Spring 2018  Foundations of Algorithms

Course Description: Advanced topics in formal algorithm design and analysis, including advanced shortest-paths algorithms, amortized analysis, network flows, NP-completeness, 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., divide-and-conquer, dynamic programming, greedy algorithms, network flow algorithms, self-adjusting 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, NP-completeness).

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 "big-Oh" 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 graduate-level Computer Science course; obviously we assume you know computer programming.

## Students are expected to have background in Advanced data structures and algorithms (CSE 310), Mathematical foundations (MAT 243).

 Course Information: CSE 551:  Foundations of Algorithms   http://www.public.asu.edu/~ccolbou/src/cse551s18.html Class Meeting Time: T Th 7:30-8:45  CAVC 351 Instructor:    Office Hours: Charlie Colbourn Office:  Brickyard 444  Charles.Colbourn@asu.edu Monday 8:00-9:00, Thursday 1:00-2:00 TA:    Office Hours: Ryan Dougherty Office:  Brickyard 221  Ryan.Dougherty@asu.edu Wednesdays 11:00-12:00, Fridays 8:15-9: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 make-up 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.