I found that I got much improved submissions by supplying concrete test programs that students had a chance to experiment with themselves. The Nachos assignments included in the distribution are very general and leave out many details. I got much better results by providing more detail about what needs to be done and how to do it. Although students get a benefit greatly from figuring out things on there own, I found too many students were getting lost and frustrated. Students with weak backgrounds are especially vulnerable.
Students have a tendency to try to solve the entire problem at once, rather than one step at a time.
This is particularly problematical with Nachos, because students often don't understand the big picture. I found it useful to break up an assignment into smaller standalone pieces, each building on the previous pieces, with a rough indication of the weight for each part. There are two benefits. First, solving one component of an assignment frequently leads to a better understanding of the issues necessary to solve subsequent components. Second, students know how much credit they will receive for the work done so far, and can better decide whether they should keep working on a project or use their time in other ways.