I'm all in favour of project-based learning in Computing -- if the project centres on a genuine problem to be solved, and the pupils are given plenty of time to solve it. I used to allow them 6 weeks. But that's a long time for kids who are more used to a much more structured set of lessons, so I used to build up over time, using micro and mini projects.
Micro projects
A micro project is where you set a problem, and give the kids one lesson in which to solve it. That's not much time, so you may have to do some of the organising for them. For instance, you may need to say who is going to do what in each small group, rather than allow them to take 20 minutes to argue it out between them.
What you're trying to teach them is how to best organise their limited time and resources and to co-ordinate and discuss their efforts.
It may be that by the end of the lesson the problem hasn't been solved at all. In fact, if it has, it must have been a pretty trivial problem in the first place. But the lesson counts as a success if by the end of it they have:
- identified what they need to do and find out next in order to address the issue further
- experienced good collaboration, ie collaboration that produces results
- learnt that division of labour works
- understood that worthwhile problems tend not to have neat solutions
- become so engaged with the problem and the process that they would like more time in which to work on it.
Mini projects
These are like micro projects, except that they last two or three lessons rather than just one.
Frequency and timing
I always set at least one micro project every four to six weeks in the first half a year with a new class that was unaccustomed to project work.
Then I would set at least one mini project in the remaining half a year, and then another one in the first term of the next year.
By the time the pupils had reached the third year of secondary school, they could work by themselves and with each other on projects lasting 6 weeks.
My six word summary
You have to think about scaffolding.