The Good Idea Fairy strikes again. For my Java based advanced course this coming year I want to do a lot of non-coding topics. One topic is understanding bases. The binary and hex bases are kind of handy to understand in the field of computer science. I introduced binary and hex last semester so in my infinite wisdom I thought I will have the kids write a program to do the conversions. I like projects like this. I could do the usual conversion worksheet but did that and they were bored with that. For someone familiar with bases and base conversions it is a bit trivial. The emphasis of this project is on algorithm development and not on typing code. After a few minutes of doodling (that PLC training was a bit boring) I think it looks like the binary to decimal program is going to be simple to develop. I think the kids can work that one up with very little coaxing. Decimal to binary does not look so sweet. It is going to take a bit more staring at the ceiling. These are the projects I love to teach with; lots of thinking about the problem, understanding the algorithm, devolving the algorithm into some form of pseudo-code and then a little coding. These projects play to my strength in CS, thinking and staring at the ceiling. They also do not bring a lot of pressure on my CS weakness, coding.
I suck at coding. For some reason I cannot remember syntax to save my life. I think I have too many languages in my little brain. If I do not have the language reference manual next to me while coding something I am doomed. (One reason I love Small Basic. Intellisense, I love you!) This does not bother me too much. When I worked for a software company many years ago the wiz bang programmer dude in the next cubical had a really thick VB reference book right by his hand. He knew what he was doing and he still had to use it. So thinking projects it is and a handy reference book.
When I teach a language the first thing I give the kids is the location of a readable language reference manual. I expect them to use it. I expect them to use it a lot. I teach them how to read it. I do not teach them a lot of syntax, at least not through lecture using my broad knowledge of syntax. To facilitate this reading of manuals I have the kids hook up a second monitor to their laptops. This is almost a necessity when using on-line references. All my programming kids have a laptop, either their own or a school owned loaner so the second monitor is not a big issue.
For this bases conversion program I will initially have them do it in Python. I foresee the program needing some string manipulating. Reference book! I know what I want is in there somewhere because I remember reading it but I cannot do it by memory if my life depended on it. I even did the book exercises and I cannot remember what I used to do what I did. I will then have them try it in Java. Having done the project in Python they will have the algorithm figured out so all they will have to struggle with is the language.
I am not a great coder and I am not a great snowboarder but I have a blast doing both. When I teach someone how to snowboard they can get down the mountain with a little style but they are definitely not ready for a freestyle contest. The same with programming. I am not training kids to be professional programmers, I am teaching kids to think and learn. I think my plan is working.
I had better get to work on these conversion programs. Sometime the Good Idea Fairy is not nice and bites me in the rear.