Time: Section 1: MWF 9:15-10:20, Section 2: MWF 10:30 - 11:35
Location: Section 1: Harney 235, Section 2: Harney 143
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.
Required: Cormen, Leiserson, Rivest, Stein Introduction to Algorithms, 3rd Edition
CS 245 - Data Structures and Algorithms or Equivalent
Grades will be given according to scores on written homework assignments, midterms and finals, according to the following percentages.
Grades will be on a straight scale, with approximately:
|A||90% and above|
|F||59% 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 with other students, you should not tell another student the solution to a problem, and you should write up the solutions to your homework problems on your own. You should never look at the solutions of other students, or allow them to use your solutions.
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.
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
O(), Ω(), o(), ω() Θ()
Sorting & Selection
Heapsort, Quicksort, Randomized Quicksort, Mergesort
O(n lg n) Quicksort (worst case)
sub-O(n lg n) sorting
counting sorts, radix sort, bucket sort
Modifying Data Structures
Read/Black Trees & Interval Trees
Relation to Divide and Conquer
Matrix Chain Multiplication
Longest Common Subsequence
BFS / DFS
Other Topics (Time permitting)
RSA & Encription