Thursday, April 27, 2017

How important is the first programming language really?

We really need people who have never faced a room full of  students in their lives to teach us how to teach computer science.

Said no CS teacher ever.

What brought that on you may well ask. Long story. First Mark Guzdial posts about changes at Stanford (Stanford CS department updates introductory courses: Java is Gone) highlighting an experimental version of their first programming course to use JavaScript. Then it hits Reddit (Stanford is moving from using Java to JavaScript for their introductory CS course) where hundreds of comments follow. Yes, hundreds. Most appear to be from people who have never taught a class themselves but have strong opinions of what a first language should be. And the occasional journalist kicks in with something like Universities finally realize that Java is a bad introductory programming language

How ever would we poor ignorant teachers get along without these experts? Fortunately for my sanity Mike Zamansky who actually is a teacher jumps in with some useful thought. A new first language? What's the follow up plan?

I believe that a first programming course is very important. The language used, while important, is not the biggest consideration. Rather is is the concepts covered (see Mike’s post) and how well the instructor does in preparing students for what comes next. The new course at Stanford is going to be taught by Eric Roberts who is one of the al time outstanding CS educators. I’d sign up for that course because of the instructor even if it was in COBOL.

Teacher is important. Curriculum is important. Projects and assignments that help learning are important. Language some where down the line.

I figure I’ve learned a new programming language about once every three years for the last 45. While I joke that I can still write a good FORTRAN program in any language the truth of the matter is that learning new languages changes how I code and how I think about problems. The first language got me hooked. But that was not the end all and be all. The first course is just the first course. There is a lot more to come and it would be a mistake to try to cram a four year undergraduate curriculum into a one semester (or even full year) high school course. And yet that is what some "experts" seem to be trying to do.


Wednesday, April 26, 2017

Surface Book–a first look

I’ve had two Surface Pros. A Surface Pro 3 and a Surface Pro 4. I love them. Make no mistake these have been idea travel computers for me. And powerful enough for just about everything I could want. They are also great for teaching as I can carry them around the room, use the tablet, and project wirelessly to my LCD projector. But I have had my eyes on the Surface Book for a while.

And now, thanks to the MIE Expert program and the Surface Experts program (https://education.microsoft.com/microsoft-innovative-educator-programs/mie-expert) I just received a new Surface Book. As someone who teaching computer science this means three things for me. 1) More disk space - more VS is being installed now 2) more memory (8gb) so emulators should run better for mobile development 3) a faster CPU.

Actually the more memory means the most to me. More disk is a close second. Modern CPUs are fast enough for just about everything I do. Also the screen on the Surface Book is larger which is also a nice thing.

As I said though memory and disk are big plusses for me. I’m not your average classroom teacher. I like to install lots of software (I’ve had as many as three versions of Visual Studio installed at once in the past) and I always want to try more things. The disk space on the Surface Pro limited me a bit. The Surface Book has twice as much disk so I have installed a bunch of Visual Studio things to play with. I may not need it all for teaching but I do for learning.

Memory is the next big item. My Surface Pros have 4gb of RAM. I can run mobile emulators but barely and I have to be very careful about what else is running. With the Surface Book and its 8gb that problem goes away. With my computer lab being updated to 8gb systems over the summer I now have a lot more options to my Mobile Development course next year. To say nothing of my own “needs” for mobile development.

The look of the Surface Book is nice as well. I’m not big on esthetics of computers but having a nice clean design is nice. I understand the keyboard (a very nice friendly keyboard BTW) comes off but I don’t need that very often. And I still have my Surface Pro 4 if I do.

All in all I am very happy with it so far. It’s everything the Surface Pro is but more. Just what a computer science teacher who can’t stop trying new things needs.

Wednesday, April 12, 2017

Code Slow Finish Fast

Looking through student code today brought this quote to mind.

“I didn't have time to write a short letter, so I wrote a long one instead.” Mark Twain

Students are always in a hurry to write the code for programming projects. No matter how strongly I suggest they think about the problem and design their code most of them start coding right away. This often results is a lot of code where a small amount of code will work just as well if not better.

Often the techniques for less code require a bit more thought. Setting up a long set of if statements with a bunch of different variable names is tedious but doesn’t always require as much planning as setting up an array and loop solution does. Students are in a hurry so they take what they think are shortcuts.

Experience tells of course. My version of Whack A Mole (our current programming project) can be changed from 5 possible “moles” to 6 by changing one 5 to a 6. Some of my students would have to write, well let’s just say I don’t want to do the math.  We’ll go over the options during our next class. The theme will be to think more before starting to code though.