| I think this has some good points, but ultimately comes to the wrong conclusion. The key idea, from my reading, was "isolate subskills and drill them." I don't think that's necessarily separate from project-based learning. To steal an example from another commenter, I'm actually nearing the end of a figure drawing course at a local community college (because, you know, sometimes I want to not be coding :) ). The three components of drawing (as described by this professor) are line, value (shading) and gesture (shape/flow). One way you could teach that class would be:
- Drill line. You're gonna straight lines, curve lines, squiggly lines until you can draw any arbitrary bezier curve you want.
- Drill value. Just draw a metric ton of gradients.
- Drill gesture. Draw lots of figure shapes without every really worrying about filling them in.
- In the final class, try to put it all together and draw a whole person. A much better way to teach it would be:
- Draw a whole person, but don't worry too much about value and gesture- just try to get the line right.
- Draw a whole person, but don't worry too much about line and gesture- just try to get the value right.
- Draw a whole person, but don't worry too much about value and line- just try to get the gesture right.
- Draw a whole person at the end using everything you've learned. The latter way "drills" subskills, but it also practices the overall skill of "drawing a person." In the same way, I'd strongly advocate project-based "drilling." Build an app to learn guis. Build an api-consuming cli to learn about apis. Build a chat app to learn networking. And if you want students to learn about networking, either assign it as an individual project or make sure all students work on the networking code (his chat app example was just a poorly-implemented assignment, not a problem with project-based learning). Overall, it's hard to argue that someone who's spent most of their time building projects won't be better at building projects than someone who has not. |