Archive for January, 2015

Beginner languages – the usual infinite loop

January 28, 2015

Alfred Thompson pointed out this article, Retiring Python as a Teaching Language, in his latest blog.  Mike Zamansky’s comment sort of hit the nail on the head.  I always wonder when I read articles like this who the authors are teaching.  High school freshmen?  Not likely unless the kids have one heck of a middle school programming curriculum.  AP level kids that have two or three years of programming background?  Then the author has an argument but they are far from “beginners”.  Most professional programmers that have ideas as to what a beginner language in education should be really do not understand the definition of “beginner”.  Beginners are not the kids that have done programming at home because it is fun.  Beginners do not know how to use an IDE of any kind.  Beginners do not understand that an equal sign does not always mean equal (or is that rarely means equal?).  Beginners do not understand that in order to use a language the language has to be downloaded and installed on the computer, sometimes not a trivial exercise.  Beginners are sometimes taught by teachers that are beginners themselves so any beginner language better be stupidly easy to install and get started with.  The language also needs a beginner level textbook written by a teacher, not a really smart expert in the language.  Beginners, more often than not, are kids taking this one and only programming course because there was nothing else offered that period.  (Small school issue but in Montana most schools are small.)

Just because a language does not do certain tasks easily is not a reason to eliminate the language.  I like to mess with Lego robots.  Visual Basic will work with Lego robots if you beat on it hard enough (the language, not the robot).  I do not want to beat on it so I use RobotC for the robots.  Does this mean I should remove VB from the list of languages to teach?  No way.  If I want a language to write a program that requires buttons of various types, text input fields, the ability to make pretty GUIs and can read and write to a simple text file VB is my choice.  Both VB and RobotC can be great beginner languages.

I will argue that the reason any language is used in a high school classroom is that the teacher is comfortable with the language.  It has little to nothing to do with the practicality of the language, its usefulness in the job market, or what the colleges want the incoming freshmen to know.  Teachers will teach what they know.  (Of course I am presently teaching Java and I know no Java, but then I am an idiot.)

Maybe JavaScript is a great beginner language but I have a feeling Scratch and Small Basic, just to name a couple of my favorite beginner languages, are much more appropriate for beginners.

Now that I have said all this I am curious about JavaScript.   I dug around for a few minutes and I noticed Khan Academy is using JavaScript as their intro language.  The trouble is KA does just coding on a web browser interface.  Nothing on how to do standalone coding on a computer, what IDE to use, what to download to program with JavaScript, how to publish to a device or any of those handy little skills.  I guess those should be obvious to a beginner.

The new semester is here!!!!

January 20, 2015

Second semester starts today and as usual I am totally prepared.  For Programming II (sophomores) we are going to do Small Basic for a while then something else.  That is all I have.  The “for a while” and “something else” are the hang ups.  I have two issues that affect those.  First is the students.  Of the six kids in my class there is one that could leave me in the dust crying.  He is very smart and really digs programming.  Two others can do anything I throw at them but are fairly typical sophomores.  The last three are capable but have motivation issues.  The other issue is the teacher that also teaches Programming II.  Programming is not his gig but he puts a lot of work into it.  He is also offering and writing a new personal finance course this semester which is going to eat his time.  Doing a language he does not know (Corona or Python) on top of that might be a killer.  He knows Small Basic so that is not an issue.  The only other language he is somewhat comfortable with is Visual Basic.  Personally I think VB is as interesting as watching paint dry but a language is a language and I am sure we can make an interesting course with it.  I had originally considered getting him started in Python but since I offer a yearlong dual credit course in Python to Juniors there is no real need at the sophomore level.  Corona would be my favorite choice but I think it would blow away some of my students and would take a lot of work on the part of the other teacher.  Corona can do some fun stuff and I like fun stuff.

So we will work out the “for a while” on the fly.  When we exhaust what we feel it worthwhile in SB we will start on VB.  Not exactly sure what we will do in VB but that just keeps us on our toes.  I did find enough textbooks for VB.Net.  I had forgotten we even had them.  It is amazing what you can find if you look.

It is nice when the class is such that the goals are flexible.  In the Junior Python the kids have to get to a certain level of proficiency and they have to retain certain amount of knowledge to make it worth the dual credit rating.  Programming I and II we can just have fun with computers and programming.

First semester of teaching Java

January 16, 2015

This is our finals week.  As such I gave my Java class a final.  I borrowed a test from the instructor from the University of Montana who has been helping me with the class.  He happens to be a friend.  Since I really dislike the concept of a single test defining a class the final was a group final.  Since my knowledge of Java is about two days more than my students I was part of the group.  This is a group of students I can do this with.  After we had discussed the test in class I invited my friend over to discuss our answers to the test.  He helps regularly with the class, after all, he knows Java.  The class had narrowed down the problems we were sure we knew the answers to and the ones we did not have a clue about.  We wanted to know how we did.  A couple of problems we thought we understand we did not have a clue about but overall not bad.  We now have a better idea on what we need to target.

When I originally thought of offering this course I knew my knowledge of Java was going to affect the direction of the course.  I understand learning a new language is usually a syntax thing, not a major issue for me after this many years of learning languages.  After teaching Java for the semester I was sort of correct and sort of not.  The problem has been understanding the Object Oriented Programming concept.  We can write Java code, it just is not pretty and does not really use the OOP strengths.  Learning to program in a new language while trying to teach it is not impossible, it just takes lots of time.  Reading, coding, trial and error debugging and understanding the why of a program/language design can really slow things down.

I am debating not offering the course again until I have actually taken a course in Java this century.  The last time I took a Java course was last century.  (I turned the assignments in through an acoustical modem.  Cutting edge shared drive storage method.  I remember the system was called Gandalf.  Programmers and network dudes were going through a Lord of the Rings phase.) The OOP paradigm just does not come through when trying to get it strictly through a book.  The “why do it this way” is missing.  When my friend comes over and explain things it is kind of a “now it makes sense” moment.  The trouble is there is no Java course taught at a time where I could take it.  That pesky daytime job thing.

I will keep tinkering with Java, after all it is one of the top 5 in languages used.  I have found a Java for Kids book that might be fun to work through.  Sure cannot hurt.

Printers, Group Policy and me. Wheee!

January 13, 2015

I have spent at least two hours a day in the last four days trouble shooting printer issues.  The printer in the main lab suddenly decided it did not want to take paper from the main tray, only the manual tray was going to work.  Of course nobody told me this has been going on for a couple of weeks.  After 30 minutes of tinkering I ordered a new printer.  The printer lasted ten years.  It was time.  That was an easy one.

Since I was touching printers I figured I would get the new(er) printer set up in the library.  The librarian had been waiting a couple of months for this so I figured it was time.  It would not deploy through group policy.  After about 4 hours of trying everything I called in a pro.  After an hour and a half of his time he figures out it is an incompatibility between the Server 2003 print server, Windows 7, the new(er) printer and the fact we need both the 32 bit and the 64 bit drivers.  Move the drivers to a Server 2008 machine, make it the print server and away she goes.  Of course this means I have to upgrade to Server 2008 or 2012 sooner than expected.  I was hoping to retire before that was needed.

Then I notice computers in the same Active Directory group are getting different printers.  Printers that do not exist anymore.  Printers that are no longer deployed.  Printers shared but not deployed through group policy from the other school.  I have at least a dozen printers shared locally in classrooms but only this one printer was showing up in wrong directory.  I think maybe the printer is stored in the local profile on the computer.  I delete the profile I am using.  Printer is still there.  I go home after school and have a couple of glasses of mead.  I come in the next day and delete all the profiles on the computer.  Printer is gone.  Must have been the mead.

Learning how group policy and printer deployment works by trial and error is an adventure.  I am convinced the system is haunted.  Maybe I have enough things networked together that the system is coming alive and is messing with me just for fun.  Either evil or a bad practical joker.  Then again a more realistic scenario is I do not have a clue how printers and group policy actually work.

The abiding question behind all this is – is this computer science?  I have to think, a lot.  I have to problem solve.  I have to second guess Microsoft.  I have to fumble around with Google or just get lucky with trial and error.  Yup, must be computer science.