Monday, February 28, 2011

Interesting Links 28 February 2011

Lots of interesting posts by computer science teachers last week. And some news from various sources to share. But let’s start with the teacher blog posts.

Kathleen Weaver writes about her experiences with Programming for Windows Phone 7 for teachers and students. Kathleen has a couple of applications in the Windows Phone 7 app store already and is now introducing her students to Windows Phone development. Looks like fun. I can’t wait to see what her students come up with.

Interesting "find the max" project by Ben Chun (@benchun) There is some really good discussion in the comments about objects early or late and teaching the concepts in general.

Rob Miles (@robmiles ) posted an interesting Programming Puzzler. The useful part is the discussion in the comments. And I see that Rob did add more detail to the post itself since I originally read it. It’s a good discussion question.

My manager Bob Familiar helped Andrew Parsons with a multi-day game development camp at Pace University over the weekend. Bob wrote about it at Get your app on! Students learn XNA and Silverlight Gaming at Pace Game Camp They even has a 12 year old student there who was very successful. Seems like game development doesn’t have to start in high school let alone college. In more Windows Phone 7 development news, read about  My School App: A First (Real) Windows Phone 7 App Project for Beginners. Mark Frydenberg of Bentley University has created and posted a fun and easy first Windows Phone 7 app project on the Microsoft Codeplex: http://myschoolapp.codeplex.com/.

The Microsoft Tech Student Twitter account (@MSTechStudent) has a reminder for us Visual Basic people about Visual Basic Windows Phone 7 Series: How to create a microphone application for Windows Phone 7 using Visual Basic.

Speaking of gaming news – did you hear that a Kinect for Windows SDK to Arrive Spring 2011? Designed for educational and research use by the good folks at Microsoft Research. What will your students do with it?

Under the heading of both fun and educational xkcd takes on the problem of address space http://xkcd.com/865/geek humor at its finest. A possible conversation starter as well.

And this video from the UK, Introducing Nellie the School Computer (1969) shows just what operating a school computer was like in the late 1960’s. You’ll like the way they teach how a binary adder works as well. Something to think about today.

In more Microsoft news,  Microsoft now has local tech news sites for Silicon Valley, Boston, Chicago, and LA .

Last but not least, I see there is a Math 4.0 teacher guide out along with a bunch of other guides including one for Movie Maker that looks useful

Wednesday, February 23, 2011

FizzBuzz–A Programming Question

Projects or exercises that lend themselves to many different “correct” solutions are just about the best sorts of learning experiences I can imagine. They really open the possibilities for discussion and from discussion – questions, answers, explanations – comes real learning. Recently Dennis Shaw, a student at Old Dominion University and a Microsoft Student Partner, told me about the FizzBizz exercise. (see Using FizzBuzz to Find Developers who Grok Coding for where it comes from) This is exactly that sort of multiple solution but not that difficult sort of exercise I love. Briefly stated the exercise is:

Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”.

So there you have it. It involves using some sort of conditional of course. Nested or unnested? It can be done either way. Which way is best? Do you check for multiples of three first or five? Do you check to see if the number ISN’T one of those cases  first or if it IS one of those cases? Or rather than If statements is there a different way completely? Perhaps a select/case structure? Does creating functions/methods complicate of simplify the result? If students know multiple programming languages is there one that is better for this than another (think especially about functional languages v. procedural languages). Are there special operators (like perhaps the ternary operator in C#, C/C++ and Java) that might make the code “tighter?” Is there a trade off between complication and understanding? Oh and of course, does your solution actually work?

Justify your answers. (Don’t you just just love the teacher-ness of “justify your answer?” Smile)  I can see asking students to write up an explanation of how their solution works and why they did it that way as a means for forcing examination of the solution. And as a side benefit a lot of students can benefit from yet another writing exercise. Code that can’t be explained isn’t properly understood and that causes problems in the long run. A piece of code should not be “magic” to the person who wrote it.

There are many solutions on the Internet to the FizzBuzz question. So yes, some student might go searching for one and even try to use it. The “justify your solution” question means that they still have to understand and explain how it works and why they like it. I can’t see a student saying “I like this solution because I found it on the Internet and it works.” Well, I hope they wouldn’t try that. But if they do, grade them on how well they explain the benefits of using borrowed code and if they credited the original source properly. And of course they should also be able to explain why this solution is better than others they might have found. Surely they were not so lazy and to hand in the first solution they found?

BTW a couple of related posts of mine are Teaching, Learning and the Job Interview and Characteristics of a Good Programming Project

Tuesday, February 15, 2011

Triangle Shooter–An XNA Windows Phone Game By Kenny Spade

Kenny Spade is a Microsoft Academic Developer Evangelist out in California who has been writing a series of blog posts that help one learn how to write a Windows Phone game using XNA. There is code, pictures, explanations of what is going on and lots of good information here. It doesn’t seem to be getting the attention it deserves so I thought I would pass a long some link love. The series so far is:

If you are interested in games for the Windows Phone, other XNA development for the Windows Phone or XNA in general give Kenny’s blog a look.

Monday, February 07, 2011

Making the Case for Becoming a Computer Science Teacher

Mark Guzdial asks the question What’s the argument for becoming a computer science teacher? on his blog. It’s a good question. While as a former computer science teacher I may appear to be a strange one to make the case but I’m going to try. Being a computer science teacher is a great job. Really being a teacher in any subject is a great job and a lot of the reasons for teaching other subjects are part of teaching computer science. The student interaction, seeing students learn new and exciting things, and generally making a difference for good in the world. But there are of course some special things about teaching computer science that complicate the picture somewhat.

One is that if you are really qualified to teach computer science you are probably qualified to get a much better paying job in industry. If this is true, and generally it is, why take the lower paying teaching job?

Well besides the teacher benefits there is a certain amount of freedom to learn new things that one doesn’t always have in industry. In industry your learning can be channeled in certain directions by management. And with work hours in the computer industry often being as time consuming as those in teaching (trust me – I’ve done both) one doesn’t always have the time to learn about ones own interests. Computer science education is somewhat directed by the AP CS exam but that is only for one course. And while some teachers, by desire or necessity, focus all their courses around that one course many find the time and incentives to learn things in other directions. Game development for example using C# and XNA. Or more web development (perhaps using Expression Web with some free curriculum) In all of this, because of the nature of teaching, one can often focus on breath over depth. So rather than being confined to digging deeply into one of two technologies teachers can often dig lightly into a wide variety of technologies.

Of course this brings up the fact that some people are not excited about learning a lot of new technologies and having the curriculum change on a regular basis. I have no doubt at all that this is true. I have met teachers who are totally resistant to change and want to do the same thing year after year. To that I ask, do we really want people like that teaching (period – let alone computer science)?

The biggest problem is the law of supply and demand. There is not enough of a demand. Yes, NSF has a 10,000 computer science teacher effort but I don’t see much of a sign that the states or even school districts are buying this. If there were lots of advertisements for full-time computer science teachers we’d probably see more people looking at doing it. Many people don’t want to teach several sections of Math or history or English that they can teach one or two sections of computer science. This is widely true I think. We don’t make the jobs common enough or interesting enough (and by interesting I am not talking about money) for excited young people to move into the field of CS education.

When done correctly, allowing some teacher freedom to develop new curriculum for new technologies, availability of in-service training,  providing support in both facilities and recruiting help (not hindrance) from guidance, teaching computer science to high school students is a really great job. It is a chance to start the next generation of world changing computer/computing scientists and industry professions with a solid base. It is a chance to work with smart kids who have a real passion for the subject. Why become a computer science teacher? It’s a fun job and a world changing job. If you love computer science it is even more fun than any other teaching job you can have.

Note: Take a look at Computing in the Core which is an effort to help get computer science adopted into the core curriculum in schools.