Lecture Outline
August 19th, 2007This is a lecture outline for the class. When appropriate, I will reference chapters and sections from the textbook (KT 3 refers to Chapter 3). This outline is subject to minor changes, but I expect that the top level topics will be covered in the corresponding order.
- Introduction. The history of algorithms, computability, and efficiency. The difference between a problem and an algorithm. Administrivia.
- Analysing recurrence relations (see Quicklinks)
- [KT 5] Divide & Conquer/Recursion: Mergesort, closest pair, integer multiplication
- [KT 5] Divide & Conquer/Recursion: FFTs
- [KT 6] Dynamic Programming: Interval scheduling, curve fitting, subset-sum.
- [KT 6] Dynamic Programming: Sequence alignment
- [KT 4] Greedy Algorithms: Optimality principles, examples
- [KT 4] Greedy Algorithms: MSTs
- [KT 8] NP-hardness: P vs NP. “Trust, but verify”. The Cook-Levin theorem & CIRCUIT-SAT
- [KT 8] NP-hardness: Recap, 3SAT is NP-Complete. Reduction from Independent Set to Vertex Cover
- [KT 8] CLIQUE, Independent Set, Set Cover, classification of types of NP-hard problems.
- [KT 11] Approximation Algorithms: Definitions, Vertex Cover.
- Approximation Algorithms: Vertex Cover 2-approx, Interval scheduling, Set Cover
- [KT 11] Approximation Algorithms: Dynamic programming and PTASs (Knapsack, and a cameo by TSP)
- [KT 11] Approximation Algorithms: LPs and Rounding.
- [KT 7] Network Flows: Max flows and Ford-Fulkerson
- [KT 7] Network Flows: Max flows and min cut
- Network Flows: Min-cost max flows
- [KT 7] Network flows: Applications
- Randomized Algorithms: Hashing
- [KT 13] Randomized Algorithms: Min cut
- [KT 13] Randomized Algorithms: Chernoff Bounds
- Randomized Algorithms: More examples
- War Story: Sorting out the genome
- [KT 12] Heuristic methods
- Parallel Algorithms
- Quantum Computing
- A whirlwind tour of what we didn’t cover.
- Wrap up.
Critical dates for homeworks/exams: these are tentative, but as requested, I’m giving them out here. Hopefully, changes to these dates will be minor.
- HW 1. OUT 9/10, IN 9/24
- HW 2. OUT 9/24, IN 10/5 (fall break starts the following day)
- HW 3. OUT 10/22, IN 10/29
- HW 4. OUT 10/29, IN 11/12
- HW 5. OUT 11/12, IN 11/26
- HW 6. OUT 11/26, IN 12/05
Midterm: Oct 17 (most likely a take-home handed out in class, to be turned in on Oct 19)
Final: TBA (there are some date constraints with students in the class). According to university guidelines, the final exam should be scheduled on Monday Dec 10 in class and I’ll likely do that. It’ll still be a take-home.
August 19th, 2007 at 1:30 am
[...] detailed lecture outline (for the first 14 lectures) is now available under the Outline tab. Note that you can subscribe to [...]
August 20th, 2007 at 5:10 pm
There is a LaTex tool for Linux. It is an IDE called Kile. Here’s the URL for its documentation. http://kile.sourceforge.net/Documentation/html/index.html
August 27th, 2007 at 2:42 pm
While going through the lecture outline, I wondered if you might be able to squeeze in a little time to touch base with Parallel algorithms… Although I understand that it’s domain is vast enough, but just thought that parallel algorithms (in some sense) may serve as a good extension to the kind of Divide & Conquer algorithms we talked in class today - and perhaps more valuable given the way our modern multiprocessors work.
August 27th, 2007 at 3:41 pm
It’s an interesting suggestion. Frankly, I’ve never spent time on parallel algorithms, because sometime in the early 90s people started losing interest (at least from the algorithms side). you are right though that with modern multicore systems, parallel algorithms are back in vogue. I have some unaccounted for lectures, so maybe I’ll throw in one on the basics.
thanks for the suggestion !
August 28th, 2007 at 1:49 pm
Could we have some sort of a class time-table with schedules (even if tentative) for all our homework’s out & due dates and exam dates? It would be a great help to manage our other works alongside, by accessing the days which are expected to be busy/important for this class. Thanks.
August 28th, 2007 at 3:33 pm
Definitely. I have the dates, I just didn’t put them in yet. I’ll update this post with the desired information.
August 30th, 2007 at 1:18 am
Another interesting note on parallel algorithms. The original CLR Intro to Algorithms has a nice chapter on parallel algorithms, with basic definitions of PRAM, CRCW, EREW etc, and Brent’s principle. The newer version, CLRS, has excised this chapter completely ! Sign of the times ?
October 2nd, 2007 at 10:10 am
I was windering if you could invest a class on amortization …
October 2nd, 2007 at 1:17 pm
Ah. another fascinating topic. Sometimes I wonder whether I should do advanced algorithms II, which would eliminate the first 11 lectures of this class, and replace it with other new stuff
right now any topic I introduce will be at the cost of something else. I’ll have to think about it. But it’s a great suggestion. Amortization is a valuable tool in data structure design (and in computational geometry)
November 9th, 2007 at 6:51 pm
test comment