CS/ECE 374 A: Homework Policies

The course staff must critically examine tens of thousands of pages of homework submissions this semester! We desperately need your help to make sure homeworks are graded fairly and returned quickly. If you have any questions or concerns about these policies, please don't hesitate to ask in lecture, during office hours, or on Piazza.

I apologize in advance for the length of this document. Most of this stuff is obvious to almost everybody, but after teaching algorithms for a couple of decades, I've seen a lot of strange things.

What homework is for

Algorithm design and analysis is a skill that can only be developed through practice and feedback, just like cooking or basketball or integration or gardening or interviewing or teaching. Yes, there are several things that are useful to know and understand, but that knowledge and understanding is not enough. That comfortable feeling of "Oh, yeah, I understand this" when you follow a well-presented lecture or hear a TA carefully explain the solution to a homework problem is a seductive and dangerous trap. You can only learn to do the thing by actually doing the thing.

The homework is your opportunity to practice doing the thing. The lectures and textbook and office hours hopefully provide good intuition and motivation and justification for the skills we want you to develop, but the best way to develop those skills is by trying to solve the problems yourself. The practice is far more important than the solution.

Because the homework is intended to help you develop new skills, you are likely to get stuck; for some problems, you may have no idea how to even start. And that's okay. That's why we have a textbook and lecture videos and office hours and Piazza and a library and Wikipedia; helping you get unstuck is part of our job. That's why we encourage students to work together; not so that you can share solutions, but so that you can share ideas and suggestions and feedback.

Similarly, you won't necessarily develop a complete solution to every homework problem yourself, and you may not be able to tell which parts of your final submitted solution are correct. And that's also okay. That's why we provide homework solutions—not just to show you the answer, but to help you see your own work more clearly. That's why we grade your homework submissions—not to give you points, but to give you feedback to help you improve.

To get the most out of any particular homework problem, it's important not just to aim for a solution to that specific problem, but to pay attention to how you're solving it. Every problem is an opportunity to practice that kind of problem; every solution is an example of that kind of solution.

It's also important to aim for improvement—not perfection (which is impossible), not being better than other people (which can be toxic), but doing the thing better than you did yesterday, every day.

In practice, course grades in 374 are determined almost entirely by exams, which ask you to demonstrate the same skills that the homework is meant to develop; homework scores have minimal impact. (In a typical semester, the median homework average in the class is around 90%.) So even if your goal is to optimize your course grade, practicing with the homework problems is more important than getting the right answers.

No Late Homework. Ever.

Deadly Sins

We've identified a small number of bad writing (and thinking) habits that are strongly correlated with poor performance in algorithms courses, but are easy to avoid. Homework and exam solutions that commit any of these sins will be penalized. We’re not trying to be scary or petty (Honest!), but we do want to break a few common bad habits that seriously impede mastery of the course material.

Logistics: How to submit

Form: How to write

Please make it easy for the graders to figure out what you mean in the short time they have to grade your solution. If your solutions are difficult to read or understand, you will lose points.

Be Honest

Be Clear

Be Concise

Content: What to write