Archive for February, 2011

Next Year’s CS Curriculum

February 25, 2011

I have started working on next year’s curriculum.  Every year I look at what CS content/courses we are teaching.  I try to decide if we are meeting the needs of students, the capability of the CS staff (all both of us) and the changes in technology.  Presently our freshmen take an apps class (Office, Photoshop, Audacity, etc) and/or a tech class (internet use, viruses, hardware, networking, etc).  They have no room in their schedule for anything else.  Many of our incoming freshmen do not need an apps course.   They have had most of the content in the 7th and 8th grade so I have to decide do we bag the apps course, re-write the apps course, and if we bag it what do we put there instead?  Our kids are required to take one semester of tech for graduation so these satisfy that requirement right away.  Our other non-programming class is the yearbook.  This is counted as a tech class because the kids work extensively with Photoshop, digital cameras, and Jostens on-line yearbook software.  The apps teacher would also like to offer a Photoshop/Web page course at the freshman/sophomore level.  This might be a good substitute for the apps course

 On the programming side of the house we offer Programming I to Programming until I run out of kids.  If I have kids I will offer 6 semesters worth of courses.  There is always something for them to do.  Right now we have the following:

 Programming I – Scratch, Small Basic – mostly mainstream sophomores that could not find another elective.

Programming II – Visual Basic – sophomores, juniors

Programming III – more VB – juniors

Programming IV, V, VI – depends on the kids and the assets.

 My present thinking:

Programming I – Scratch, Small Basic – still mainstream kids

Programming II – C# (probably with Rob Miles “Yellow Book”)

Programming III – C# with XNA (more Rob Miles)

Programming IV – Java (to see something other than a Microsoft IDE)

Programming V,VI – Phone Apps, depends on the kids and the assets

 Previously we offered VB as our Programming I course and were losing kids because the text was as exciting as watching toast cook.  Now the kids write some simple games in Scratch and SB, the fun factor has gone up, they still get the basics of programming and hopefully the retention in the CS program will go up.  C# now has textbooks that are appropriate for beginning programmers and there is some equally good XNA material out there.  The Java may not even last a semester.  With two semesters of C# before Java may be anticlimactic.  Just enough to get an idea of the IDE and language.  I plan on watching how the AP Principles pans out.  APCS is always out there but the numbers just do not justify it at the moment.

 I really think phone apps will be the wave of the programming future.  Laptops and netbooks will fade and phones with docking stations will take over.  My summer target is to get some sort of course figured out so kids can write apps for their own phone.  Win7Phone would be the obvious choice except this is Montana and the largest provider (Verizon) does not do Win7Phone.  The iPhone is just now arriving in the state so it will be either that or Android.  I would not be surprised that in a couple of years our Programming II is the phone apps writing course.  I suspect it might increase class sizes.

Java coming up

February 21, 2011

Dang this blog is handy.  After my post about Java I got several great suggestions.  One recommending Greenfoot and another BlueJ.  After a little Googling they both seem to be viable options.  Greenfoot seems to be more beginner oriented and more “entertaining” with its graphics and gaming approach.  BlueJ seems more traditional but more comprehensive.  I think I will get a copy of “Introduction to Programming with Greenfoot” and give it to my two seniors.  Being smarter than I am they should be able to show me what it is all about before the school year is out.  I will also order a copy of “Objects First with Java”.  It gets rave reviews so I should be able to figure out Java with BlueJ.  It is always good to have two possible routes to a goal.  I had seriously thought about avoiding Java but I got an email the other day from one of my last year’s graduates.  He is slogging through a Java course right now at a university in Portland, OR.  My local university uses Java as their intro programming language so it seems in order to give my kids a better foundation I should do something in Java.  I may not go hog wild with an APCS Java course quite yet, I really want to where the APCS Principles goes, but enough so they have a general idea of the language.  I still think C# will stay my language of choice for the advanced kids, and C# is Javaesque enough that I probably do not need to do Java but it is always good to have that added exposure to something different.  It will also get them out of the Microsoft IDE environment.  I think working outside the Microsoft environment will be a revelation.  I expect to have five seniors in programming next year.  They are getting a bit smart for their britches.  Revenge will be sweet.  Cackle, cackle.  (Sorry, it is late and I have not had lunch.  Lack of sugar is affecting my brain.)

The future of school techies

February 21, 2011

This is off the topic of programming but is definitely on the topic of computer science.  I am the school’s computer tech (along with teaching programming and senior statistics) so when things die I am supposedly the fix it guy.  (That is what happens when you go off to Iraq for 18 months; you come back and are offered a new job because they hired someone for your old job.  Talk about PTSD.)  Being a small school (500 kids k-12) I am the one and only.  Wednesday the school email takes a digger.  It happened sometime after school was out so I was not aware of an issue until I get a call as I am on the way to school.  Being the IT genius I am I immediately rebooted the Exchange server.  No luck.  The next step in my informal troubleshooting protocol was to look in the Event Viewer for errors.  Found lots of those.  So continuing with my highly detailed informal troubleshooting protocol I called my local guru consultant.  He reboots the domain controller; email starts working for some but not all.  Two hours later we (OK, he) have things fixed.  For some reason beyond the pale of worldly DNS knowledge a bunch of stuff in the DNS decided it needed to go somewhere else.  “Where did it go?” says I.  “Beats me” says he.  A little quick rebuilding from the secondary domain controller and things were alive again. 

What bothers me about the whole incident is I could not have fixed the problem if my life depended on it.  I can kill most viruses, install printers, rejoin the domain, install an OS, and do quite a few general trouble fixing tasks but I am not a trained DHCP/DNS/Exchange/DC/Group Policy troubleshooter type dude.  A quick purview of the local school techs indicates we are all former teachers that are learning the job as disasters happen.  I took some of the MCSA certification courses a few years ago so I can sort of set up a new Server 2000 computer or at least read the manuals.  I know nothing about the latest and greatest version of Server, I do not have time.  But troubleshooting is way more complex.  How many schools out there actually have techs that are computer network/security/anti-virus/server/etc specialists?  And if they were good would they be willing to work for $33,000 per year?  There are major issues finding enough high school programming teachers.  Finding qualified school techs is going to be just as bad if not worse. 

The knowledge base required to keep a school up and running is just so broad that it is a bit over whelming.  Most professional consulting services are way out of budget and with school budgets getting tighter the ability to call in the expert is going to get too pricy.  Sooner or later (I am guessing sooner) the need for school techs is going to reach some sort of critical mass.   Will this result in a reduction of technology use in the school, a reallocation of budget to cover the costs of professional consultants, or some equally less desirable result?  As schools become more tech based (1-1 laptops, smartphone communications between school and students, Moodle, computers in every room) the need for an on-site tech that actually knows how to do more that reboot is going to be a necessity.  These techs will probably continue to come from the teaching staff simply because they like schools and kids and are willing to work for the wages.

I really cannot see a solution to the training issue.  Microsoft courses seem to focus on setup.  The basic Cisco course offered at my local VoTech teaches some good basics but then takes off to the Cisco world.  I am just real glad my consultant guru is an alumnus, the former school tech (he left the school due to the need for money) and a close friend.  Without him we would be toast.

Maybe APCS, maybe not.

February 15, 2011

I got the brilliant idea that we should offer AP Computer Science next year.  Since I do not know much Java I figured I had better play with an IDE for Java.  I bought a book, downloaded Eclipse and sat down to get to work.  OMG!  I have been using Microsoft IDEs way too long.  Microsoft may have some issues (Vista was one of them) but they definitely know how to write an IDE.  Eclipse was free and usually you get what you pay for but Microsoft Express IDEs are free and they work nice.  Just to get the Java IDEs set up is a major operation.  AP is rewriting their curriculum to be language non-specific.  I am thinking of waiting until I can do APCS in VB or C#.  I do not mind a challenge but time becomes a major factor for a challenge like this.  Of course I would also have to learn to actually program as opposed to my present method of beating a project to death but that is a minor detail.  I will have to watch for a book titled “An Idiots Guide to APCS in C#”.

Teaching and learning with Battleship

February 7, 2011

I have been working on the Battleship project diligently.  Without two requests for help to the msdn forum and a suggested approach from Alfred Thompson I would have been dead in the water.  It is interesting to take on a program like this.  I have been teaching Small Basic for the last few years and the programs have been fairly sedate.  Usually the kids build Pong or Tic-Tac-Toe which are fairly simple.  The VB I have been teaching has been almost strictly out of the book so it was a very cook book approach and I also did some simple graphics exercises that force the kids to think procedurally but do not require a lot of fancy coding.  This Battleship program has required me to really challenge my VB coding and program design skills.  Since my formal VB training is absolutely nil I have had to rely on a couple of text books and lots of trial and error. One of the draw backs with programming in SB is there is no need to understand the passing of parameters, it does not do it.  VB on the other hand is big on parameter passing.

 My game is a two player game, not against the computer.  I did not want to deal with working out a computer play procedure that was logical and not just purely random.  One way to program a two player game is to duplicate a lot of the procedures, one for player 1 and another for player 2.  After all there are going to be two ship arrays, two game boards, two hit arrays and so on.  This simply rubbed me the wrong way.  I am one of those guys that if I see two procedures in a program that look alike, I have to figure some way to get rid of one.  He with the shortest program wins.  Thus parameter passing.  Not something I am intimately familiar with.  I should have started a project like this years ago just for the knowledge being gained.  Learning something one day and teaching it the next is not a good strategy.  But is does keep me off the streets at night. 

When I originally started this project I thought Battleship would be a fairly easy game to work up the logic for and to program.  Surprise!  There are all sorts of little details that need to be considered; things like the ships are placed either horizontally or vertically and pieces of the ship are in adjacent cells.  This is not trivial in the code; in fact I am presently ignoring this little detail because I think it is going to be a pain to code.  I have reached the point where I can place ships and shoot ships.  No player turns, score tracking or winning yet.  I am having way too much fun with this project.  I just hope I do not lose the kids; they are not quite as geeky.