Real world projects or made up ones?
There was a discussion to day on a the Facebook CS Educators group about project based learning. This was initiated based on the College Board's desire to more more project work in some classes including APCS-A.
Most, actually I think all of the educators on the forum agreed that students creating projects are a good idea but the bone of contention was over real world projects vs what I'll call practice projects.
The thought is that a real world project would be a program that they might do if they were at a business - a complete web app for instance or a game, soup to nuts. A made up project might be implementing a sort or a data structure.
In the discussion some felt that all projects should be real world arguing that students will be more engaged. Others felt that while real world projects should be a goal, made up projects were more appropriate at times - like how you'll practice etudes on a musical instrument when developing your chops rather than only ever working on a piece.
I don't agree with the stance that real world projects are more engaging. Let's take games - something always paraded out as real world and engaging. Sure, to kids who like computer gaming. Not so much for everyone else. Personally, I'm not huge on gaming and neither were many of my students. That said, enough were so that it made sense to explore game projects in some classes and to certainly allow them on appropriate open ended projects.
Let's contrast that to made up projects. I've done assorted graphics projects and many had zero real world ramifications but many (not all) students found them super engaging. I've also frequently done a computer Caesar Cipher decoder. Many students found it very engaging. It wasn't real world but it gave a level appropriate foreshadowing of a lot to come - proto-AI, proto-math, proto-stats.
Not real world but very engaging and I'd argue, more valuable than forcing a real world project that was less appropriate for what we were learning.
Besides, let's look at some real, real world projects. Here are some projects that software engineers I know have worked on:
- make a round button that launches an already built feature of our platform.
- I changed my mind, make it more of a rectangle with rounded courners.
- Move that UI component down 3 pixels and over 5.
- Change all the calls in our code base to function f so that it no longer passes null as the final parameter so that it matches the new API spec.
- Write a function to check a string to make sure it conforms to our input specification.
The list goes on. The truth is more real world programmers work on small bits of a larger system. They're working in teams (something I think our students have to learn about, but not exclusively) on large systems. Very rarely does someone in the real world go from concept to completion all by themselves, although I think CS programs would better serve their students if they did teach this manner of "software architecting."
So, really, real world can be fine but it's not the be all and end all.
Some might mean "uses real world data" for real world and this can certainly work. I frequently assign data based projects - find a data source, collect it, clean it, and do something with it. If the students can find data they like that can be super motivating but again, it's not a be all and end all. I've had students go nuts over writing a Mandelbrot set explorer - no data there and not real world but super exciting for some.
I haven't even really addressed group work or solo but I think this post is long enough as it is.
The truth is, authentic assignments come in all shapes and sizes and can be inspired by all sorts of things. Real world, whatever that means can be great but are not always appropriate. In K12, most schools top out with CS0 (APCS-P or similar) or CS1 (APCS-A or similar) not much in the real world is CS0 level - real world data, real world ideas, yes but not real, real world. Made up assignments can be as good or better and freed from the constraints of real world can be much more appropriate for a students development and just as if not more motivating.