Tuesday, October 23, 2012

Boring Projects

Recently someone I really respect posted a recommendation against using Visual Basic saying “ I find most textbooks for Visual Basic to have boring assignments like temperature conversion.  I also find little open-ended problem solving.” Ouch! As someone who has written a couple of Visual Basic textbooks and who liked the temperature conversion assignment I was crushed. Ok maybe not crushed but pushed out of my comfort zone at least.

I was feeling pretty good about my latest project – an application to keep score at golf and running track of who owes what to who in the Skins Game.


Now I am not so sure. What I liked about this project was that it was a step more beyond just adding a bunch of numbers. One has to keep track of ties and so the scoring is a little more complicated.  But perhaps it’s not open-ended problem solving enough. Sure there are any number of ways this could be solved and there is room for creativity. But is that enough? And is Golf too “old people” a game for high school students?

So I am reevaluating how I look at projects. I also ordered a textbook by someone I am reasonably sure has projects that fit the less boring and more open ended problem solving nature. No names or review until I’ve read it. Smile

Ultimately I am optimistic about the thinking I’m doing. I think we all tend to be challenged in our thinking from time to time. We need to stretch beyond the same sorts of projects we’ve been doing for years. Reading things from people who have different ideas, use different tools, and look at things from different directions is how we grow. It’s something I try hard to do. It’s why I read as many blogs as I can, I follow the discussions on the APCS forum and constantly look for new things on Twitter. Social media really helps me expand my horizons.

What do you or where do you go for new ideas?


Bryan said...

“Boring” from who perspective? A decades old programmer that first did the temp conversion program in say Pascal? Because for that person it bloody well should be boring and old hat. It should also allow for them a very easy solution whereby they can understand the syntax of the new tools of the language. As both a teacher and programmer I want these kinds of examples so I can quickly and easily tear apart the code and understand how these new tools work. It also allows me an opportunity to see what problems a new programmer (read student) might have tackling the example.
Additionally why are these “Boring” examples great for new programmers (again read students here)? That’s an easy one – same as for me the “Advanced” programmer – Familiarity. Now this familiarity is not with code or syntax, but with the concept of the math involved and simple experience of converting temps. With the understanding of what kind of an answer they would get from doing the math in their heads and fixing any syntax errors - the new programmer can easily spot inaccurate answers and quite possibly understand way their answer is wrong. Examples here could be something as simple as orders of operations, using only one equal sign instead of two for an evaluation, incomplete math, wrong data type – using an int instead of say a double(float?) or something more complex as flipped output of an if/else, forgetting {} around a block of code, or something as equally “Boring” to an advanced programmer.
So god bless those “Boring” examples and give me more that allow my beginners to grab a faster understanding so they too can be “Bored” on their third language or second decade of programming.

Garth said...

As Bryan implies, these old “boring” assignments are extremely useful for teaching programming. But on the flip side they are not very useful for getting kids to take an elective programming course, and for many schools, numbers in seats is very important to the existence of a program or class. I gave up on the old “boring” VB textbooks several years ago because the numbers were so low. I switch to writing simple games and now I have more kids than computers in Programming I. OK, slight exaggeration there but this semester we have 20 kids taking Programming I in a school with 180 kids 9-12. Of those 20 I expect to keep about 10 for Programming II. And we are not a “techie” high school. We can teach the same programming skills through game writing as we can through those “boring” temperature conversion programs. Using the Corona SDK the kids can actually write a simple game they can export to their Driod phone. This is not a game with simple buttons, but a game with things jumping and bouncing and moving. The ultimate in classroom seat fillers.

Joanne McGrath Cohoon said...

Golf is for older people (from most kid's perspective); bets on sports are for guys, and temperature conversion is just a class assignment. Why are so few CS teachers trying to put concepts into contexts that engage kids (and not just white male kids!) and show off some of the very interesting ways computing affects our world? Maybe you could use something related to health, like heart rate training zone, or body mass index? It's important to make clear that programming lets you solve interesting and/or important problems.

Joanne McGrath Cohoon said...

Garth, I'd love to hear about the types of games you use and the gender composition of your class. Do you expect that any of the students who go on to Programming II will be girls?

Alfred C Thompson II said...

I love the BMI idea. Always looking for stuff like that. I would also like more non-sports related and health related ideas.

Dan Waters said...

Boring assignments are boring because they are fundamental and simple, and the problems are easy to understand. Kind of like learning guitar - you have to start with pretty basic sounding stuff before you can noodle all over the fretboard. One thing that I think would scale well (no pun intended) would be teaching students (after learning language basics) how to consume 3rd party services so that they can bring in content from destinations they know and love. This is an increasingly fundamental skill in the workplace. If more students have an early look at SOA/REST principles, even through casual exposure, we'll have more capable developers who can be dropped into nearly any modern dev situation and the concept won't be lost on them. And it's fun to put live tweets in your app.

Anonymous said...

Drop me a note at gflint@mcsmt.org and I have a blog at gflint.wordpress.com.