Wednesday, March 21, 2018

The Problems With Small Programming Projects

Most programming projects for beginners are small ones. They are focused on a specific concept that is under discussion. They are often forced in the sense that a professional programmer would seldom write them they way students are asked to write. They are concept examples or exercises. Often they are also boring. Mike Zamansky wrote a nice post about teaching refactoring  in which he says “Beginners work on small "toy" which don't lend themselves to good software development practices and later on, there's so much other material like algorithms, data structures etc. to teach and learn …”. And he is so right about that.

One of my favorite courses to teach is called Honors Programming which is only a semester long. I have some fun projects but most of them are small ones. Just when we get enough of t he basics to make really interesting projects the semester ends. In one of the Indiana Jones movies, Professor Henry Jones says  “You left just when you were becoming interesting.” How appropriate for my single semester course. I often wish I had a second semester to just take on a couple maybe two, maybe only one, that would really let us get into someone big.

I’d really love to dig into concepts like refactoring, real top down design, user written classes that have serious meaning and importance, code reuse, unit testing, and of course real planning. Multi-person projects would be great as well. I do some of that with smaller projects but there is so much more than can be done with a project of real size.

The existence of the AP CS courses makes a course like this hard to fit into the schedule. Yet another reason I am not a fan of AP CS. Heavy sigh.

What’s it like at your school? Do you feel the need for large scale projects or do you get to do them? Or do you think small projects are enough for now (high school?) and they’ll get to large projects later? Hint: Small projects are a thing in most higher ed programs as well.

1 comment:

Garth said...

Large projects require that several requirements come together at once, sort of a perfect storm. A teacher that has had time to proof the project, students that are willing to commit the time, students that are willing to commit the effort, and a project that will interest the students. Therefore the small projects. This is where I wish I had more experience in industry as a programmer. I wish I knew how to plan larger projects but most programming teachers are very inexperienced when it comes to programming large projects. Learning this on the job is pretty difficult and there is definitely no professional training in this direction. But it does sound fun.