Very often is seems as though teacher tend to assign projects that mean little if anything to any one. It is as if we feel that learning is medicine that only works if it tastes bad. If students enjoy a book does that mean it is recreational and so inappropriate for school? Is creating a technically challenging computer game invalid because the result is something that can be played? Do we really think that having fun means less learning is going on? It seems that way sometimes. Oh sure someone may enjoy reading “A Separate Peace” but I don’t know that I personally know any of them. (With the possible exception of a few English teachers.) Some times I assigned a check balancing program to students but, honestly, even I found it sort of boring. My students seemed less than excited about it as well.
Other times we’re smarter about projects. We pick projects that spark creativity, imagination and most importantly they are projects that students care about. And we pick projects that require students to think rather than just follow rote instructions. I think that last part is important.
I talked to a teacher who is working to integrate technology into her schools curriculum the other day. She was saying that she had her 8th graders doing some projects with Glogster. She showed them how to use the site and gave them some ideas of what could be done and then cut them lose. Several of them really didn’t know what to do with themselves at first. They wanted step by step “do this then do this” sorts of instructions because that was what they are used to. This was not the intent of the project though. Eventually they loosened up, started trying things and really got creative. I saw some of the projects and they were really cool. Even more importantly the students were showing their work off to peers, sharing ideas, and teaching each other new things. I somehow doubt that near as much of that would be going on if they had had the step by step project they thought they wanted.
I think that we need to be open ended about projects in computer science. Oh sure we need the general exercise that demonstrates a concepts and the syntax that makes it work. Maybe we even need (shudder) worksheets at times. But when we really want students to learn how to use things, to go the extra bit, and to be motivated to actually remember the tool and develop problem solving skills we probably don’t want to be all “step by step.” There has to be a balance somewhere. There have to be projects that students want to solve for reasons other than just a grade.
This may mean looking for students to help design projects rather than forcing what is interesting to us or what is “good medicine” for us on them. As I look back on the projects that worked best in my classes they are almost always the once that grew out of a digression conversation that was started by students. At some point I would find myself “let’s make a project out of this and see where it goes.” Did it take me out of my comfort zone? A little. Fortunately I have a lot of programming experience (more than the average HS CS teacher I think) and so I felt I could code up a good solution quickly. For someone with less programming that may be even more daunting but at the same time there is nothing at all wrong with a teacher learning along side their students. I’ve looked into new areas for me with students several times. The guide on the side is a wonderful experience.
I think a lot of the project gap between what a teacher finds interesting and what a student finds interesting is generational. Many (all?) CS teachers I know are members of the over-the-hill gang, over 40 geeks. We grew up using computers primarily as tools. The kids I teach grew up using computers as a game platform. The computer as a tool was and still is secondary. A few years ago I got back into teaching programming and came up with the brilliant idea of having the kids write a program the finds the sum of the first n numbers in the Fibonacci sequence. I think I may have gotten the idea from the Project Euler site. Bad, bad idea. I am a math geek, the average kid is not. I like solving puzzles, the average kid does not. The class did the project, sort of. Lots of plagiarism involved. New idea needed. How about writing a pong game? Jackpot! Games make sense. It was what computers were meant to do. Now everything I teach is based on a game project of some type. Something as simple as Tic-tac-toe in Small Basic is not a trivial program. Having the kids do turtle graphics has also been productive. Lots of thinking and planning required to draw a cool house. I grade on originality and detail so some very interesting houses are made. If we are going to attract kids into programming it has to be relevant and games are the ultimate relevancy to kids with computers. Luckily a kid that can write a good game can write a good checkbook program. Yuck.
One of the great challenges of a good CS classroom (and perhaps any good classroom, one can argue...) is: How do we spark creativity and let each student achieve to the max of their own ability, while at the same time having consistent standards by which to measure student progress. On one end of the spectrum, a standardized test can be a solid, reliable measurement tool, but provides no outlet for student imagination and indeed can punish creativity. Conversely, a completely open-ended learning environment allows students to stretch their limits, and many will amaze us with what they can do. But others may need more structure, at least in getting started. So how do we have an "open ended" environment, yet still establish certain objectives and standards that we expect all students to reach. This is attainable, but is a challenge that good educators struggle with throughout their careers.
I completely agree Charley. Assesment is HARD. Necessary and when done correctly very helpful to the learning process. But it is hard to do correctly.