Hmmm-- yeah, honestly, the coursework that I've seen up close tends to allow for independent projects on a pretty regular basis. Now, it may require instructor approval, but that is an opportunity to practice real-world problem solving and theory (which depends on the course). This would include both engineering and computer science coursework, obviously, but less obviously, it's also common in the sciences and in math.
Also just noting that my explanation of lab activities is predicated on a perspective from the physical sciences. Dude's is in computer science. My objection to 'virtual' lab exercises is founded in
precisely Dude's argument: that these activities don't really ALLOW for serendipitous learning beyond the scope of the planned exercise... and the reason is that interaction with a machine basically is perfectly reproducible aside from human error. The framework/scaffold is too tight. That just doesn't exist in a chemistry or microbiology lab setting-- there are
always things that go wrong. I've taught literally thousands of lab sessions, and I can count on one hand the number that never resulted in something unexpected. It's of value to students to watch the problem-solving of an expert in action on a real-world problem like that, for one thing. "Hmmm... wonder what happened here... do you mind if I try something? Huh. Let me check this other thing, then...oooooo... I think that this reagent wasn't completely dry before you started. Let me explain why I think that."
I really don't like "foolproof" lab activities, because I consider them sort of pointless. They might as well be demonstrations.