First of all I don't teach programming. I do work as a staff scientist in the Physics dept of a university and have been toying with the idea of a programming workshop that I think is somewhat similar to your situation.
Once people have a good foundation in the language (Java in this case) and some basics of data structures and algorithms, I feel the biggest thing they need to learn is how to play nice with others.
For me that means architecture, design and DOCUMENTATION.
What I was toying with was having them work as a group on a relatively big problem.
Problem #1 figure out what THEY want to do. I expect they'd want to do something flashy and well.. cool (or is it phat, I'm so uncool these days). Like a video game, or video library or ultra cool screen saver, a social media web site, who knows. I don't really think it's important what project they pick as long as they can make progress. A Chinese to Sanskrit translator is out of the question but a web based system for learning Chinese characters is a pretty good idea.
I expect them to pick something that takes way longer than would be possible to finish in the time allowed but that's OK. The goal is learn to work together and break a big problem into a bunch of little problems and implement a proof of concept rather than a finished product ready for sale. Hmmm, maybe we should sign a contract guaranteeing us a percentage of profits in case the next Jobs or Zuckenberg is in the class.
I'm a big fan of rapid prototyping and refinement. I expect the teacher/workshop leader to participate in the discussions maybe even write some of the code (if absolutely necessary) but not make any of the decisions by fiat. Help them research what tools are out there, help interpret the crappy documentation usually available. Make them work with each others code. But don't tell them what to do or how to do it. Work with them to develop a plan.
Above all I think it should be fun, interesting and challenging. Try to light the fire and the only thing you'll have to do is make sure they don't ignore their other classes.
It's not what your program can do, it's what your users do with the program.