Tuesday, March 25, 2014

Assigning Projects That Create Programs Students Use

I spend a lot of time thinking about projects for my students. For programming, for applications (Office apps etc.) and just in general. I want to  find projects that students are interested in doing, that teach them things and that they want to do. Today I was reading a post by R. Michael Shanahan Professor and Department Chair of Computer Science at Harvey Mudd College at The Computing Community Consortium Blog  called Computer Science for Non-Majors  that had several interesting suggestions including this one below.

Giving students the tools to write programs that they actually want to use.  Here are two simple litmus tests:  Will students spend at least as much time using their programs to explore something new as they did writing them (e.g., using a program to align biological sequence and make inferences from those alignments, building their own music recommender system, etc.)?  And, does the assigned work offer creative avenues for students to invent and implement their own ideas (e.g., in the form of innovative features above-and-beyond the minimum requirements)?

Well there is really two suggestions in that paragraph. One, “does the assigned work offer creative avenues for students to invent and implement their own ideas”, I already try to do. I always try to leave room for students to exercise some creativity and to explore beyond the bounds of lectures and “must include” features.

The second one, “Will students spend at least as much time using their programs to explore something new as they did writing them”, got me thinking. On one hand I like to think that by the nature of programming courses we give students “the tools to write programs that they actually want to use.” But do we do this is a way that they can see the potential to solve their own problems?

What I wonder about is can we come up with assigned projects that students can use to solve problems that are interesting to them? We tend to use games a good deal because students are interested in them but do we have them create games they actually want to play? Maybe but I wonder if that is really the best thing. What I am spending some time now it thinking about programs I can assign that students can use to do non-trivial explorations on their own.

I’ve been borrowing some media ideas, image manipulations, that some students really enjoy doing, using and exploring the effects of. They like to change pictures. More of that might be a good thing. I’m on the look out for more ideas across more curriculum areas. Something to think about. Any suggestions?

1 comment:

Garth said...

At the intro level I teach finding projects that are “real” is, I think, not practical. The knowledge level to produce something just is not there yet. There are always things like “write a program that solves the quadratic equation” but for some odd reason kids do not get too excited about that project. I used to do that one; it was like 5 day old fish in hot weather. When teaching Corona we build a game. There is a lot more interest but unless the game is simple like Whack-a-Mole the level of complication for the algorithm and game play can bury the code teaching objective. This is not necessarily a bad thing, but it is a thing.