What is a good design for a Capstone Course in CS? Some Computer Science programs in the US have a course that is informally referred to at a Capstone Course that attempts to bring together most of what the student has learned. The course may be required or not and is usually offered to students just prior to graduation, having several prerequisites.
One possible design is a Project (Senior Project) that may be team based on individual. The student may or may not have an advisor, similar to a thesis course. It may or may not require a write-up or a computer program.
What is a good design for a Capstone Course that requires the student to use most of what they have learnt in their program.
Most helpful would be examples with which you have some experience and which you can attest to success. Also useful would be notable failures and caveats that an implementer might need to be aware of.
Finally, what other changes do you believe are necessary to prepare the student for their future Capstone Experience.
Personally, I'm a believer in a project based capstone and a group one at that.

The project should involve going from generating (and pitching) an idea through design, development and ultimately delivery and should require integrating multiple tools. 

Since many kids would want to use such a course as preparation for internships and jobs, I'd say it's more appropriate to take in the junior rather than senior year. That's ok though since you're done with most if not all core major requirements by then and are taking electives.

I know taking a capstone prior to the senior year sounds wrong to some but it should show mastery of many if not all of the core concepts in a typical CS major and fill a big hole in a students development.