If social learning is an issue, then Pair Programming as a mode of education could be popular. Circling back to the scientific method and my earlier comment, I'd consider a team approach to a technology oriented course:

You have four members with two projects. One person is the end user, one the business analyst, and a pair of developers, and concurrently swap roles so that everyone ends up developing in parallel. Another "more real" skill is getting your requirements met by your technology resources. The developers could be programming, producing art, slide shows, or anything. The model and process is reusable and very common in business where everyone is someone else's end user.