I started Win 7 Phone Development for Absolute Beginners with my two advanced programming classes today. I am not a big fan of video tutorials but the price is right. The problem with video tutorials is the pace does not always match the watchers knowledge level and skipping through the video often misses some pearls in the mud. I really like the way the Bob presents the material but the video is a bit slow for my classes. They have quite a bit experience with Visual Studio IDE through VB but very little C# so the videos are very tedious through certain parts. A text document to accompany the video would be a major assist. The kids could skip over the parts they are familiar with and only endure the new material video. Another approach is having the written text be the main part of the material with the video as a backup. If the kids get bored or cannot move at a faster pace than the video they have a tendency to give up or shoot the teacher. As the material gets more unfamiliar the videos will become more useful and less tedious but right now I am just hunkered down in my corned pleading with them to not shoot. I think written material would solve this problem. I am sitting here considering how much work it would be to build a text based program at this level, something like Rob Miles’ C# Yellow Book. Of course I would have to plagiarize the heck out of the video material but that does not seem to be a major problem considering nothing is for profit. One big advantage of writing this thing is I would sure learn the material. It could also be patched into some of the higher level videos from channel9 Windows Phone Jump Start. These are next on my watching list. I went cruising at Barnes and Noble this weekend looking for text material but there was nothing on the shelves.
Archive for November, 2010
In the time it took me to write and post my last article Microsoft posted this: http://myblog4fun.com/archive/2010/11/15/windows-phone-7-development-for-absolute-beginners.aspx. This is my “Win 7 Phone Game Writing for Idiots” as requested. What timing.
Job security requires kids in my classes. Not really but having three kids in a class is not being fiscally responsible in a private school. My school has a computer requirement for graduation. It can be an apps class, a technology class (hardware and basics on how the thing works) or programming. The majority of the kids we get in the Programming I classes are main stream kids than cannot get their schedule to fit the apps class. Programming is the last thing they want to take. So I need to make the course attractive to get kids in it initially but also to get kids to stay in the CS program. If my class titles have the word “game” in them or if the syllabus says “game design and writing” I will get kids, guaranteed. Not only will I get the usual computer geeks (I say that in a good way) but I will also attract a lot of the main stream kids. Since computer geeks are few and far between I want the main stream kids. It is amazing how many stick with programming once they get a taste. So, let the games begin.
There are enough professional languages out there with a game writing component that I can find a good variety to teach. VB is not the greatest language for games but the syntax is fairly easy and there are some fun turtle graphics that can be done if the Small Basic turtle library is imported. It also helps that I can program in VB. I will start there to get the kids familiar with a “professional” line code language with a professional IDE. Transitioning from Scratch or Small Basic to line code with a fancy IDE can be a bit of a shock for the kids. If I am not comfortable with the language the transition would be even worse. Game platforms that the kids can identify with that I know of are iPod Touch/Xcode, Droid/Java, Win 7 Phone/C#, and Xbox 360/C#. The school has some iPod Touches and the required Macs. We also have an Xbox. There are enough kids with Droids in school that I am bound to have a kid in the class with one. As soon as Win 7 Phone shows up I plan on replacing my present five year old Win Mobile phone with something a little newer. Using my own phone to install games may be a bit risky but anything for the cause. The Win 7 Phone needing Windows 7 issue has been solved thanks to Alfred Thompson and MSDN Academic Alliance. I have all the platforms covered. Now I just have to decide where to go.
There are languages like GameMaker out there but they lack the transferability that I want. GameMaker is tempting because it is quick, easy and gets cool results. One of my sophomores dabbled in it last year and was able to produce a nice simple game rather quickly. Anything that interests the kids and tempts them farther is worthwhile. What is super cool with the iPod/Droid/WinPhone approach is the kids can stick their program on a mobile device and show people what they did. Now that is a recruiting scheme for a programming curriculum.
Primarily I want languages that are used for other purposes than strictly games. If, for some strange reason, they want to solve Project Euler problems or even want to write a coffee house point-of-purchase program, I want them to have a language to do so. Heading off to college with an intimate knowledge of GameMaker may not be a winning approach. The main problem for me is that these are not the greatest languages for beginners (compared to something like Small Basic). It does not help that I know little to nothing about these languages. I can do a little C# if I follow Rob Miles’ directions closely and there are no typos in the textbook. I took a Java course many years ago. (If I remember right I connected my phone handset to an acoustic connector and dialed something called Gandalf to turn in programming assignments. Things from that far back are a little vague.) And I can spell Xcode. Alfred Thompson, as usual, suggested a solution to the problem in his blog “Teaching real-world programming”. I know the guy who wrote the iPod game “Jake”. He lives in town. I have a parent who knows a guy who has written a couple of high level Droid apps and he lives in town. This may solve a couple of problems. And I have a feeling that soon Microsoft will have something available like “Win 7 Phone Game Writing for Idiots”. The iPod Xcode has a limited access issue, the Mac lab is in a math classroom and I only have two Mac Books so I am going to save that for next year. Attrition will thin out the kids advanced enough to work on it and it will give me a summer to learn to do more than spell Xcode.
Narrowing things down to just Java and C# not only makes life easier but it suits my purposes. I want the kids to see more than one language. Java may be an antique but it is still very commonly used. It is the introduction to programming language at many college CS departments. C# is a comparative new comer but it appears to have a strong future. Being a Microsoft language guarantees support and longevity.
I think the only reason we cannot get kids into programming is because it looks, sounds and, in many cases, is boring. We do not need to attract the computer geeks, they are already hooked. We need to attract the “normal” kids that typically would never think of taking a programming class. Let’s admit it; learning to program is a lot of brain sweat. If we give the kids a goal they are interested in perhaps we can reduce the CS shortage; in kids, teachers and courses.
Writing a comment for Alfred Thompson’s CS blog post “Lines can be fun” got me thinking about what I want to teach and how I want to teach programming. My advanced kids have been grinding through “Programming in Visual Basic 2008” by Bradley and Millspaugh. It is a good book to teach simple coding; comprehensive and easy to read, but absolutely boring. The projects are just plain uninteresting. Computing sales for a coffee house just does not interest kids. The book is intended for entry level so it cannot get too crazy but you would think authors would realize that this does not attract kids to programming. With all the blog discussions and statistics flying around it seems obvious we (the US education system) are having a little problem with attracting students into CS. Most intro books on programming just reinforce the stereotype that programming is about as exciting as watching grass grow. The last few years our Programming I kids (usually sophomores) started out doing this type of programming in VB. Attrition was high. The only Programming II kids I got were the diehard programmers or those that could not find a class in that time slot (small school, not many choices). This year I convinced the Programming I teacher to switch to Scratch and to make games. The kids are enjoying the class, are proud of the games they make and best of all they are learning quite a bit of programming. The class has nine kids, four of which are girls. Keeping girls in CS has been a big issue for us. I think I am going to get three of them in PII. The gaming approach allows the kids to be artistic, imaginative, original and requires lots of planning. With the previous VB/textbook approach all the assignment solutions looked identical, not much originality is required in a checkbook program. With the games they are all original. They get ideas on how to solve the programming problems from each other, but the code ends up looking quite different for each student. It is really hard for the kid that wants to only copy some one else’s code for turn in to do so. And they really do not want to; they want some ownership and uniqueness to their game. The games are not fancy. The first is just getting an object through a maze in time without touching a wall. The next game adds bouncing objects to the playing field that need to be avoided while going through the maze. Presently they are working on their own version of the “Red Square Game” which is a simple dodge the bouncing objects game. It is a bit creepy during the class; a bunch of main stream students exclaiming how cool their program is and trying to outdo each other with their program. It is just not normal. So my curriculum is going gaming.
I got a new tech toy to test yesterday, a Dell S300wi projector. “A projector a tech toy” you say? For sure. This projector is wireless and plugs into the internet. It projects four computers simultaneously, each in its own screen quadrant. The really slick thing is any computer in the school can log in to it and project. There is a logon code to prevent drive-bys. If I have a kid working on code and there is something interesting (an error, an interesting approach, a completed project, whatever) the kid clicks a shortcut on the desktop, enters the login code and the whole class is seeing the monitor on the wall. It behaves the same way with a wireless laptop. This thing is also a short throw projector so it is only about 3 feet from the wall which minimizes obstruction shadows. I am always trying to find ways to get away from the front of the room when teaching. The front of the room is addicting, I think it makes the teacher feel in command and when you have a bunch of people staring at you command is a comforting thing to have. Devices that allow the teacher mobility, that allow students to share and discuss information are where it is at. I am not too sold on Smartboard like devices; they seem to be just a blackboard with some software behind them. The teacher or student is still in the traditional front of the room but now they are also going blind from the projector. I think this projector combined with an eInstruction Mobi pad and the Interwrite software can add a needed dimension to the classroom. The projector does come with an interactive pen that is supposed to do the job of the mouse. It has a severe case of the twitches and it pretty much useless.
Well, another brilliant idea bites the dust. I was going to throw my three bright boys at Windows Phone Apps by using the emulator. They are a little bit familiar with C# so I figured they could get something up and running in a quarter. There is one minor issue, Microsoft Visual Studio 2010 Express for Windows Phone is for Win 7/Vista only and the school is XP. We do not have a Win 7 machine in the school. I did have two but for some strange reason they stopped talking to my domain and I could not figure out why, so XP they became again. Working with XP is like working on a ’56 Ford pickup truck. Lift the hood and everything is recognizable and fairly simple. It may not be glamorous but it does what is needed in a fairly simple and robust way. Working with Win 7 is like working on a 2010 Toyota pickup. Once you find the hood latch and get the hood open you go “ohh, pretty”, and close the hood. It also has lots of really cool whistles and bells that I really do not want the kids using. A couple of the local schools are going to Win 7 and are having way too much fun with trying to get it to work with their system. Besides, if it is not free, we usually do not own it and we own XP. I am still planning on the Mac/iPod app route but want to save that for next semester and was hoping to do something somewhat familiar. Maybe it is Droid time. I am not a big fan of Java but that is caused somewhat by ignorance and a really bad college instructor many years ago. I have never used Eclipse and learning a new IDE can be a bit daunting. It definitely would not hurt the kids to be somewhat familiar with a little Java and considering that is how much Java I remember that might be a good way to go. Time to hit Barnes and Noble.