Friday, September 16, 2016

Teaching Beyond Programmer’s Programs

There is a difference between computer science and software engineering. There are some big and important differences. There is of course a lot of overlap. In any course advertised as “computer science” there is some tension about how much software engineering to include. In some senses this comes most into play when talking about the difference between a program that is usable only by the original programmer and one useable by just about anyone.

I have a bunch of the first type. For example I have a phone app that I use to keep track of the rotating schedule my school uses. It works well for me but I couldn’t easily hand it off to other teachers to use (even if they had Windows Phones) because it uses some initialization files that are not really that easy to set up. If I wanted to make this program easily usable by other teachers I’d have a lot of extra work to do. That may be the best example of the difference in my mind – software engineering is about making programs lots of people can use without deep CS knowledge or knowledge of how the program works internally.

Now of course Human Computer Interaction (HCI) is part of any good university computer science program but just how much of that can fit in a high school single semester course is an open question. Even a year long course, especially an Advanced Placement course, has limited room for software engineering concepts. Still I feel like it is important to include as much as does fit.

A program that does everything is is supposed to do but that is very hard to use soon becomes unused. The benefit of using a program must far outweigh the cost/work of using it. Not just a little because momentum (we’ve always done it this way) can be a lot to overcome.

So we talk about it. Adding labels to a GUI project (especially when using Visual Studio with C# or Visual Basic) can be a trivial matter to implement but add a lot to usability. I have been thinking that  maybe I should take some programs and reduce or remove things that help usability or at least understandability to start some conversations going forward. Great more work. Maybe I think to much.

No comments: