Design and Analysis of Algorithms : Course feedback

Consensus of feedback

  1. One week per topic is not enough
  2. Many really enjoyed study groups, but some didn't
  3. Blackboard and vocal technique could be improved, also going overtime
  4. Exercises all equally difficult, no scale
  5. Lectures, study groups, exercises not always well connected, what to expect from exam?
  6. Book is too verbal, written typeset notes would be better

Excuses

New team to run the course, not all can go smoothly first time. Switching to study groups and designing the course accordingly was a major investment. Surprising many attendees took also time for arranging and the lecturer was not used to the big auditorium environment. Preparing, rehearsing, and timing lectures suffered. Some book chapters are indeed too verbal, and it took time to prepare alternative material for the lectures.

Future plans

The biggest issue is that course is best suited for students who already are finishing their Master's, although it should be the first course in the curriculum. This will need to be changed one way or another. One way to do this is to leave some topics as "good to know" and put more depth to the others. The obvious choices for "good to know" are those that have special courses (randomized and approximation algorithms) or are topics covered inside many other courses (amortized analysis). This leads to the following proposal:

  • Week I: Lecture on simple recursions and analysis of recurrences. Study groups rehearsing analysis of recurrences (online problem solving). Amortized analysis in "good to know" level (links to courses with more of that) e.g. in exercises.
  • Week II : Lecture on more complex recurrences for divide and conquer type of problems. Study groups on divide and conquer (online problem solving for problems like this year's 1.6-1.10).
  • Week III: One lecture on network flows in "good to know" level aiming to introduce to reductions and shortest paths. Another lecture continuing with simple dynamic programming tasks like shortest paths and segmentation. Study groups on dynamic programming (online problem solving like this year).
  • Week IV: Lecture on more complex dynamic programming, like those related to trees. Study groups on reductions to maximum flow and some more dynamic programming.
  • Week V: Lecture on NP-hardness without formalities, example reductions. Study groups on NP-hardness reductions.
  • Week VI: Lecture on NP-hardness with formalities, like Cook theorem, encodings. Study groups on approximation algorithms, pseudopolynomial dynamic programming, etc.
  • Week VII: Lecture on randomized algorithms in "good to know" level touching someway all the previous topics. No study groups.

Here Week III would be a special one, with two lectures, to avoid hurrying through important material. Rest of the weeks appear completely feasible with one lecture per week (plus study groups and exercises).