Additional profile information on Alfred Thompson at Google+
One of the things that came up from the panel I was on last week (that panel has prompted a bunch of blog and Twitter posts already) was that students like relevant projects. Someone, it was probably Michael Kolling, suggested Facebook projects might interest students. I mentioned that there were helpful resources from/for the Microsoft platform that could be used and said I would blog about them. Well I almost forgot but not quite. So here are a couple of links.
Facebook Developer Toolkit - facebooktoolkit.codeplex.com
From the help web site at http://facebook.claritycon.com/help/
Now if you are interested in developing a mobile application for smart phones to interact with Facebook you may be interested in Facebook Development with the .NET Compact Framework. From the article summary:
Facebook has become a huge phenomenon in social networking. The site exposes a developer API to support Web and desktop applications. In this article we will explore making use of this functionality from a smart device application. The source code to accompany this article demonstrates working with key aspects of the Facebook API and tightly integrating with Microsoft® Windows Mobile®–specific APIs. The Facebook Development Toolkit, including the Facebook.Compact library and related samples, are located on CodePlex, Microsoft’s Shared Source hosting site, at http://www.codeplex.com/FacebookToolkit.
Facebook has become a huge phenomenon in social networking. The site exposes a developer API to support Web and desktop applications. In this article we will explore making use of this functionality from a smart device application. The source code to accompany this article demonstrates working with key aspects of the Facebook API and tightly integrating with Microsoft® Windows Mobile®–specific APIs.
The Facebook Development Toolkit, including the Facebook.Compact library and related samples, are located on CodePlex, Microsoft’s Shared Source hosting site, at http://www.codeplex.com/FacebookToolkit.
So if you have some students who are all excited about Facebook and what to be creative these tools may be just the places to point them. And let me know if your students (or you) do something interesting with them.
Have you ever been asked a question that you have been asked time and again but suddenly decided you have a different answer for? One of the questions I hear a lot is what programming language should be taught first and this question was asked of a panel I say on last week. Except for me it was an impressive panel. Don Slater of Carnegie Mellon and the Alice Project, Michael Kolling, University of Kent and creator of Greenfoot for teaching Java, and David Klappholz from Stevens Institute of Technology who got his PhD while I was still picking a major in college. So of course I asked to answer first because that was the only way I had a chance of adding value. Plus I had suddenly realized that I had a new answer – one that I had not tried out in public before. And I wanted to give it a go.
Normally of course I would have launched into a great explanation of why Visual Basic was the best and language wars would likely have erupted. But that just did not feel right. So I answered that it depended on a number of things such as the goals of the course, the type of student but most importantly it depended on what language the teacher was most comfortable with and had the most passion for. The first programming course is hugely important. It is during this course that many students will either be turned on to computer science or turned away from it. This is the first impression and it needs to be a good one. If the teacher knows the language, is comfortable with the language, can have fun with the language and really enjoys the language the students will have a better experience. Everyone wins
I remember teaching Java for the first time. It was not a good experience for me (I was not ready for it) and I am sure it was not a good experience for many of the students. I did then a disservice. In hind sight I should not have agreed to teach the course. But I did and I tried my best but it was not ideal. Teachers easily, and without thinking about it, transfer their feelings about material to their students. Recent reports say this is true of math for example. (Study finds female teachers' fear of math can be catching) I doubt the same is any less true for computer science education. This is why we need well trained and confident computer science teachers in our schools.
There are other considerations BTW. Michael Kolling pointed out that supporting tools are very important. Greenfoot and/or Alice for Java for example. I personally think the Visual Studio IDE makes learning Visual Basic and C# much easier than they would be using a command line and text editor. Plus the drag and drop editing of graphical user interfaces make creating real looking Windows program easy and fun. There are also curriculum materials available for some of the better tools. The Greenfoot site has some for that tool. Alice.org has some for Alice. The Scratch web site has many resources as well. The Microsoft Faculty Connection has curriculum resources for VB and C#. And there is the newly revamped beginning developer learning center. Python which is a language that has a lot of proponents (I like that it is dynamic) but not as much in the way of a support environment for teaching. Yet.
I know that a lot of curriculum is slaved to the AP CS curriculum these days but I really strongly believe that APCS is too much for a first course. Students need a gate way course that will introduce them to programming in a fun, exciting, dynamic and enthusiastic way. For that course it is best if the teacher uses a language and a platform that they love. Communicate the love not fear, the enthusiasm not the necessity of a specific language, and share passion not pain.
Last week I attended a workshop day at Stevens Institute of Technology where Michael Kolling, University of Kent and creator of Greenfoot was the keynote speaker. Some of the things he said really resonated with me. One of them was that students should be given projects that require a computer. I’ve heard that before and have long agreed that something that can easily be done in ones head or with a simple calculator really don’t communicate things to students well. But the thing he said that impressed me the most was that some really good projects inject a little surprise in the results.
He showed a program he had put together in Greenfoot that simulated any colonies foraging for food. It was a reasonable sized and fairly uncomplicated simulation of simple behaviors. But in the results there were surprises. For example clear paths showed up indicating the success of various finds of food. Add added benefit was that the simulation lent itself to tinkering – to “what happens if I change this” – and experimentation. These give students the opportunity to experiment.
I remember on my my first projects that interjected surprise for me. I was experimenting with graphical programs. This was back in the old drum plotter days before we had color monitors or even much in the way of affordable graphic capable monitors. In any case I wrote a simple program that drew geometric shapes, rotated and shrunk them and drew them again around the same center. As the first of these designs arrived from the plotter I discovered Moiré patterns. Cool. And it sparked an interest in learning more about this unexpected feature.
Conway’s Game of Life was another project that lent itself to all sorts of experimentation. Not only could you try different starting patterns but you could also try different algorithms for births and deaths. Tinkering was a natural.
Even relatively simple projects, for example Pong, lend themselves to tinkering and to asking one’s self - “what else could I do with these concepts/ideas/techniques. What happens if one paddle moves faster than the other? Could I use these same pieces of code to create a breakout style game?
I think it is important for students to develop a sense of wonder about many things. I think that they learn more when they learn by discovery – from tinkering a bit. That is why I really like the idea of open ended projects that offer the opportunity for surprise. What do you think? Do you have examples of projects that let students tinker, discover, and feel a little sense of wonder?