Do sample solutions increase student 'productivity'? I'm not 100% sure whether this belongs here, but since I am a PhD student (teaching) in the TCS/Algorithms department, I'd like to know what fellow, maybe more experienced, teachers think. 

The question at hand is whether we should offer sample solutions to all our exercises for, e.g., a Data Structures &amp; Algorithms lecture.
I am convinced that this would be a highly beneficial service for our students whereas my advisor is against it. Here are the pros and cons that we came up with:

Pros:


Students have access to high-quality answers when they don't understand something.
Our expectations on verboseness, conciseness, depth of proofs, etc. can be communicated more clearly.
A student can individually study using the solutions and is not forced to attend the tutorials if this is not his preferred style of learning
We (the professor/tutor) have a clearer idea of what solutions to expect since we have to work the problems ourselves.
The tutor (me) is more free in the design of the tutorial. Without sample solutions, the tutorial basically boils down to writing the sample solutions on the blackboard. Otherwise I can't be sure that everyone has at least seen the correct way how to solve it. Little interaction is involved.


Cons:


It costs time and/or money.
Students may stop being engaged in the exercises since they know they can always look at the sample solutions.
Students may stop coming to the tutorials.
We can't reuse exercises from past years since students might have access to (and use) past sample solutions.
If we do it once, the students might expect we do it for every lecture.


To be clear, in both cases the students are expected to solve the exercise sheets on their own, and they will be graded. I'm merely interested in what to offer after this has happened.

I think that's all. Optimally, I would like to find some kind of empirical study that proves that sample solutions increase the "productivity" of students. Data always wins. However, so far I couldn't find anything like this.

To discuss the points mentioned above, my general opinion on these matters is that if we can offer more services using little work, we should always do it. If someone really misuses it (as stated in the cons), he or she will notice that this is the wrong approach the latest in the exams. My advisor, however, wants to minimize the time spent on lectures and have me rather do the research relevant to my PhD. Since I have to do the solutions anyway, the overhead for providing a sample solution is maybe 2-3 hours/week.

What do you think?
I have three types of exercises in my algorithms classes: homework problems, exam problems, and discussion problems.  I'm not entirely sure which you're asking about.

I release detailed solutions and grading rubrics for all homework and exam problems, in part for the advantages you list, in part to speed up grading, and in part to better calibrate my own expectations for the students.  (If it takes too long for me to write up the solution, the problem is probably too hard for them.)  I take them all down again at the end of each semester.  I don't actually mind if students have access to my old solutions—as long as they write in their own words and cite their sources—because homeworks are only a small part of the course grade.  (Students who are stupid enough to submit my old solutions verbatim, typos and all, are not quite publicly fed to the wolves.)

On the other hand, I deliberately do not release solutions for discussion problems (which we discuss in, you guessed it, discussion sections) because the solutions are not the point.  The point is to practice finding the solution.  I know students are adults, but it takes a lot more discipline to practice hunting when someone just regularly hands you the meat.  Also, some discussion problems reappear later on my exams.

But this is really an individual choice.  I know plenty of algorithms instructors who don't give students solutions, and others who hand out solutions on paper but don't distribute them on the web, and others who distribute them on the web but behind a firewall, and others who beg people like me to please for the love of god stop giving away homework solutions because coming up with good algorithms homework problems is really really HARD.



Update:  Starting in 2017, I now regularly release solutions for my discussion problems, typically a few days after each discussion meeting.  (Just like homework solutions, I take these down at the end of every semester.)  Perhaps as a result, these discussion problems are now effectively fixed from one semester to the next -- in a typical semester I replace 5%-10% of them -- and discussion problems almost never appear on exams.  (I should also clarify that discussion problems do not contribute to the final grade.)

I also include an extra solved problem in each homework, with a complete grading rubric.  Again, these solved problems rarely change (as opposed to the problems the students need to solve, which change every semester).

In both cases, the idea is to provide concrete examples of the structure, precision/formality, and level of detail expected from their own work.    Realistically, once the discussion sections are over, unsolved discussion problems are not as valuable as the solutions; students are busy!  And I have lots of other unsolved exercises in my lecture notes for students who want unsullied practice.

Writing all those lab solutions (just over 100 pages of text) was a lot of work, but now it's done.  The net effect of releasing all these solutions seems to be positive—more clearly for teaching evaluations, but also for student performance.