Why homework doesn't count:
After my first 7 years of teaching algorithms, I decided that homework is the least fair way to evaluate students. My assignments are quite challenging and thus time consuming, and were a big reason for this course being notoriously difficult.
Unfortunately, many students ended up resorting to academically dishonest practices, or getting TAs to explain the full solutions, often leaving some of the best students at a disadvantage. Also, many students only
tried out homework on the due date, already stressed about the deadline. On the other hand some students put too much effort into trying to solve the homework problems too early, without being patient and spending time understanding the basics. This left them frustrated and led to a lack of confidence. Others focused all of their effort on homework, and ended up cramming for the exams. (In other words, their studying was over-constrained).
For these reasons I have made homework assignments non-mandatory, and they no longer count towards the final grade. Students can still receive feedback if they submit their work, and it is useful to practice writing rigorous solutions with all the details, rather than just thinking about the general idea. So completing the assignments is still a great way to learn.
The problems are designed so that you can do them only if you have a
solid understanding of the material. Except for a few problems at the beginning of the course, you can't just look up a technique and simply plug in some numbers without giving much thought. The course is about designing, not just implementing.
It is now up to the student to show the required maturity and put in
significant time thinking about these homework problems. Students should use office hours frequently to discuss their approaches and make incremental progress.