My Home Page

Computer Science and Engineering 101
Design and Analysis of Algorithms
Summer 2003
Assignments

Revised August 4, 2003

Monday, June 30, 2003
Lecture topic: Overview.
Time analysis, big O, Omega, Theta.
Tuesday, July 1, 2003
Lecture topic: big O, Omega, Theta. Solving recurrences.
Timing analysis.
The combinatorial explosion.
In every usage of stacks that I have ever seen in programming, the stack holds unfulfilled obligations..
Today I will introduce the master theorem for solving recurrences. The master theorem does not permit you to solve all recurrences, but it does help for many that arise in practice.
Discussion Session 3:00-4:00, CNTR 113
Wednesday, July 2, 2003
Today I will given an informal proof of the master theorem for recurrences.
I will also give the algorithm to translate an infix expression into a postfix expression.
Thursday, July 3, 2003
Lecture subject: basic algorithmic techniques.
Lecture topic: Using data structures to improve the efficiency of algorithms.
There was a last little bit of the proof of the master theorem leftover from yesterday. I finished it up on the board after class, with some help from three of the students. (You have to manipulate logarithms.)
Today I will explain how to use a queue to visit a directed graph in breadth-first order.
Today I will explain how to use a binary search tree to speed up insertion sort.
Homework 1 is due today.
Discussion Session 2:00 - 3:00, CNTR 113
Monday, July 7, 2003
Lecture subject: basic algorithmic techniques.
O(n2)-time simple sorting algorithms: bubblesort, array insertion sort, and array selection sort.
Divide and conquer sorting algorithms: mergesort and quicksort.
Lower bounds on sorting time.
Tuesday, July 8, 2003
Lecture subject: basic algorithmic techniques.
Radix sort / Bucket sort, Shell's sort, and polyphase mergesort.
Can your computer add n-bit integers in o(n) time? A divide-and-conquer algorithm for very fast addition that is wired into some computers.
Master theorem review. Some practice recurrence problems. Answers.
Discussion Session 3:00-4:00, CNTR 113
Wednesday, July 9, 2003
Midterm Examination
Study Guide.
Thursday, July 10, 2003
Lecture subject: basic algorithmic techniques.
I will hand back the examination, but not discuss it.
Heaps and heapsort.
Using a heap to find minimum paths in a weighted directed graph. (Dijkstra's algorithm.)
Discussion Session 2:00 - 3:00, CNTR 113. The examination will be discussed.
Monday, July 14, 2003
Homework 2 is due today.
Lecture subject: basic algorithmic techniques.
Fast addition using parallel processors.
Fast powers, with applications to RSA coding.
Lecture topic: Backtracking. /dd>
The 8 queens problem.
Lecture topic: Dynamic Programming.
Tuesday, July 15, 2003
Lecture subject: basic algorithmic techniques.
Lecture topic: Dynamic programming, dynamic programming and memoization, and parallel dynamic programming.
Discussion Session 3:00-4:00, CNTR 113
Wednesday, July 16, 2003
Lecture subject: basic algorithmic techniques.
Lecture topic: Dynamic Programming.
Bellman's algorithms.
Thursday, July 17, 2003
Lecture subject: basic algorithmic techniques.
Lecture topic: Dynamic Programming.
Edit distance.
Lecture topic: Bounding the Search Space.
Matrix searching. Read about Gaspard Monge.
Homework 3 is due today.
Discussion Session 2:00 - 3:00, CNTR 113
Monday, July 21, 2003
Lecture subject: basic algorithmic techniques.
Lecture topics: backtracking, dynamic programming.
Graham's scan, a backtracking algorithm for the convex hull of a set of points in the plane.
Challenge for the top students: Work these problems
before the end of the term.
Tuesday, July 22, 2003
Lecture subject: basic algorithmic techniques.
Lecture topic: greedy algorithms.
Kruskal's algorithm for minimal spanning trees, a greedy algorithm which uses the union/find ADT.
Prim's algorithm for minimal spanning trees.
Another algorithm for minimal spanning trees.
The coin collector's problem.
Huffman's algorithm for optimal prefix codes.
Hu and Tucker's algorithm for optimal alphabetic trees, a greedy algorithm which uses mergeable heaps.
Discussion Session 3:00-4:00, CNTR 113
Wednesday, July 23, 2003
Midterm Examination.
Study Guide.
Thursday, July 24, 2003
I will give the correct version of Prim's algorithm today. (We will have three greedy algorithms for the minimum spanning tree problem: Kruskal's, Prim's, and the one I presented Tuesday, where you delete the maximum weight edge that does not disconnect the subgraph.)
Knuth's dynamic programming algorithm, making use of a Monge property to speed up the search for an optimal binary search trees from O(n3)-time to O(n2)-time.
I will be in email contact Friday and Saturday from Las Vegas.
Discussion Session 2:00 - 3:00, CNTR 113
Monday, July 28, 2003
Today we will revisit recurrences, and show how to work many problems which do not yield immediately to the master theorem.
We will also introduce a number of definitions involving graphs, and discuss some graph algorithms that we have not yet covered.
Homework 4 is due today.
Tuesday, July 29, 2003
Today we will discuss hashing. (Section 7.3 of your textbook.)
Discussion Session 3:00-4:00, CNTR 113
Wednesday, July 30, 2003
Final Examination, Part 1. Note Change!
Study Guide.
Thursday, July 31, 2003
Final Examination, Part 2.
Friday, August 1, 2003
I can now email grades. Please include your student ID in your email request.
Eventually, grades will be available at Student Link. Click on Academic History.