# News:

## Location and Hours

Please check the course schedule.

## Staff

*Instructors:*- li.ca.uat|aagon#nolA agoN .forP
- li.ca.uat|dohinar#doH inaR .rD
*Assistants:*- moc.liamg|reldeirf.rihpo#reldeirF rihpO
- moc.liamg|nedranola#nedE nolA

Feel free to coordinate reception hours with the assistants via email.

## Prerequisites

Data Structures, Linear Algebra, Calculus, Discrete Mathematics.

## Grade and Homework Assignments

There will be 6 homework assignments. The average of the all six assignments will be worth 10 points of your final grade. The final exam will be worth 90 points, though you must pass the exam to pass the course.

The submission of homework assignments is not compulsory; for each assignment you don't submit, you will get a 0. All the HW grades (whether you submitted or not) will be taken into consideration when calculating your grade. (Therefore, if you choose not to submit any assignment, your final grade will be at most 90.) In any case, we strongly advise against not submitting, as our experience shows that students who don't try the assignments tend to do badly in the exam .

# Text Books

Most of the course follows the following two books.

*Introduction to Algorithms*, by T. Cormen, C. Leiserson, R. Rivest, and C. Stein. Third edition, MIT Press, 2009.*Algorithm Design*, by J. Kleinberg and E. Tardos. Pearson/Addison Wesley, 2006.

Additional reading:

*Graph Algorithms*, by S. Even. Computer Science Press, 1979.*Data Structures and Network Algorithms*, by R. E. Tarjan. SIAM, 1983.*The Design and Analysis of Algorithms*, by D. Kozen, 1992.

# Course Syllabus

*Graph Algorithms:* Breadth first search, Depth first search, Topological sort, Strongly connected components, Biconnected components, Minimum spanning trees (Kruskal, Prim), Shortest paths (Dijkstra, Bellman-Ford), All-pairs shortest paths (Floyd-Warshall, Johnson), Dynamic programming, Flow algorithms (Ford-Fulkerson, Edmonds-Karp, Dinic), Linear programming.

# Some extra material

- A booklet of algorithms.
- The LP material that is not in the booklet.
- A beginners guide to dynamic programming.
- A short outline of Ford Fulkerson variants and proofs for the Max Capacity Augmentation variant
- How to find a basic feasible solution for running the Simplex algorithm

# Links

Note that the definitions used in other courses and websites may differ from the definitions given in the course. Please keep this in mind when browsing outside of the course website.

- A free online algorithms class given by Tim Roughgarden of Stanford University.
- Technion's algorithms course.
- MIT's algorithms course.
- Some examples of dynamic programming (from MIT).
- Some old tests and unofficial solutions.
- Some tests and unofficial solutions (Shlomi Rubinstein's site).
- Why you should never say things like "let's look at all the cycles in G"