As you know, the second test will be Wednesday, Nov. 12 from 7:15 to 8:45
in the evening in Hasbrouck 134. There will be no class at the
regular time that day. Creidieki will
hold a review session on Monday afternoon, Nov. 10, from 3:45 to 4:45
pm in the Computer Science Building, Room 140.
The test is closed book and closed notes, with no
calculators, computers, cell phones, etc. allowed. This is because
I want you to understand the material beforehand.
I try hard to make my exams like my problem sets only much easier
because they are closed book and there is a rather short limit on time.
To study for the test, I urge you to do the following:
- Go over the homeworks 5 through 8, and their model solutions, making sure that you now
understand all of these! I will hand out model solutions to
homework 8 at the discussion section on Thursday, Nov. 6, and no
late homework 8 will be accepted after that.
- Go over your notes from the lectures 8 (Sept. 25) through 15
(Oct. 30), and the
corresponding readings. In
particular, we studied a bunch of topics and algorithms that I expect you to be
comfortable and familiar with. Below is a list of the topics and algorithms that I
have in mind. However, please understand that I still expect you to
be familiar with what we did before, e.g, asymptotic analysis and
divide and conquer.
- Relax and get a good night's sleep before taking the test.
Main Topics Covered
- Graphs and their data structures and algorithms.
- Union/Find
- Greedy Algorithms.
- Dynamic Programming.
Main Algorithms Studied
- Breadth First Search and its applications.
- Depth First Search and its many applications.
- Dijkstra's Algorithm: note we gave O(n2) and O((n+m)log n) implementations.
- Prim's MST Algorithm: note we gave O(n2) and O((n+m)log n) implementations.
- Kruskal's MST Algorithm and the Union-Find data structure.
- Huffman Greedy Coding Algorithm.
- Dynamic Programming Algorithms including:
- Longest Increasing Subsequence
- Edit Distance
- Knapsack
- Warshall (transitive closure) and Floyd (all pairs min weight path) Algorithms.
Reminder: when I ask you on the test to come up with an algorithm, I
will want you to use things we have learned to build an algorithm to
solve the problem. If it makes sense to use a data structure and/or
algorithm that we have studied, then you can just quote it by name and
state its running time -- you do not have to write its pseudo-code.
The most important thing is that you do the following:
- Clearly describe a correct algorithm;
- Explain why your algorithm is correct;
- Analyze your algorithm, i.e., compute its asymptotic running time
Even if you can't get the absolute fastest possible algorithm, I will
be generous with partial credit if you successfully complete the above
steps.