# Computer Science 673: Graduate Algorithms

Fall 2016 Syllabus

Time: MWF 11:45-12:50 (section 1) MWF 1:00-2:05 (section 2)
Location: LS G12 (section 1), Harney 235 (section 2)
Professor: David Galles
Office: HR 542
Office Hours: TR 10:00 - 12:00 or by appointment
Though these are my stated office hours, I am in my office most of the day.
If my door is open (and it usually is), I am happy to talk with students.
Phone: 422-5951
Email: galles@usfca.edu

Text:
Required: Cormen, Leiserson, Rivest, Stein Introduction to Algorithms, 3rd Edition

Prerequisite:

Grades will be given according to scores on written homework assignments, midterms and finals, according to the following percentages.

 Assignment Percentage Date Homework 40% Approx. Weekly Midterm 1 15% 10/05/2016 Midterm 2 15% 11/21/2016 Final 30% Wednesday, December 14th, 2016 3:00pm - 5:00pm (section 1) Friday, December 9th, 2016 3:00pm - 5:00pm (section 2)

Grades will be on a straight scale, with approximately:

 A 90% and above B 80%-89% C 70%-79% F 69% and below

These are percentages are upper limits -- thus a score of 90 is guaranteed to get at least an A-, 80 is guaranteed to get at least a B-, and so on.

Finals and Midterms
Both midterms and the final will be partially open note.  You will be allowed to use your notes for this class, solutions to previous homework assignments, and the text for this course -- but you will not be allowed to use other texts or other resources.

You are not allowed to search the web for solutions to the homework assignments. You are not allowed to use any solutions to previous version of this class in completing your homework assignments -- if you have any old solutions, throw them out now! While it is acceptable to discuss the homework problems at a high level with other students, you should not get into details, or tell another student the solution to a problem. You should write up the solutions to your homework problems entierly on your own. You should never look at the solutions of other students, or allow them to use your solutions.

Late Policy
Late homeworks WILL NOT BE ACCEPTED.  If you have difficulty with an assignment, or some type of time conflict, the correct time to see me is before it is due.  Trying to get an extension on the due date itself will lead to sympathy from the instructor, but no extension.

Learning Objectives
Upon sucssesful completion of this course, you should be able analyze the running time and space requirements for complex algorithms, both recursive and iterative. You will understand a variety of fundamental computer science algorithms, and be able to modify them to solve related problems. Most importantly, you will improve your "algorithmic thinking" skills, and be better able to create novel algorithms for new problems.

Tentative Course Outline

The following is subject to change, given the interests/knowledge of the students

Introductions
Algorithm Basics
Mathematical Foundations
O(), Ω(), o(), ω() Θ()
Recurrence Relations
Proof Techniques
Randomized Algorithms
Sorting & Selection
Heapsort, Quicksort, Randomized Quicksort, Mergesort
Selection Problem
O(n lg n) Quicksort (worst case)
sub-O(n lg n) sorting
counting sorts, radix sort, bucket sort
Modifying Data Structures
Leftest Heaps
Fibonacci Heaps
Dynamic Programming
Relation to Divide and Conquer
Fibonacci Numbers
Matrix Chain Multiplication
Longest Common Subsequence
Polygon Triangulation
Greedy Algorithms
Scheduling
Huffman Codes
Proving Correctness
Matroids
Amortized Analysis
Basic Concepts
Aggregate method
Accounting method
Potential Method
Graph Algorithms
Graph representations
BFS / DFS
Spanning Trees
Shortest Path
Maximum Flow
Other Topics (Time permitting)
String Matching
RSA & Encription
Computational Geometry
Approximation Algorithms