For nine years my job at Microsoft was to promote the use of Microsoft technology in computer science education. I started with universities but moved over to K12 CS education. CS education is something I feel strongly about. Spending time talking to teachers around the US (and abroad) as well as my own teaching experience has made me a bit opinionated about the subject. I do believe in a lot of Microsoft products. I would not have gone to work there is that were not true. Not a lot has changed by me leaving except that I feel a bit freer to state my opinions about what Microsoft should be doing to promote their products in and also to support K12 CS education publically.
In my honest opinion Microsoft is doing a lot of good. They have some great products and some great support resources. If you teach computer science and haven’t visited the Faculty Connection site you should visit it. DreamSpark has made software available to thousands of students at hundreds of schools (though the latest incarnation has some issues as I see it).
Their support for the Computer Science Teachers Association is pretty good as well and that is important. Not sure all parts of the company realize how important though. They also support Computer Science Education week which is a good thing. The TEALS program is placing software professionals in classrooms as part-time teachers which is a great program.
While that is more than a lot of companies (don’t get me started on how little Apple is doing for computer science) there are ways that Microsoft could help themselves and computer science educators more.
Improve DreamSpark High School
The DreamSpark program was changed not long ago to merge (more or less) the old MSDN Academic Alliance program and the earlier DreamSpark high school program. The result is a program for high schools that is more complicated and less easy to use than what was there previously. When DreamSpark was first developed Bill Gates made it clear that he wanted a high school offering and one was developed. Times have changed and there doesn’t seem to be as much interest in supporting the HS version as there used to be. High schools are not universities and they lack the technology and personal to support programs at the same level. Giving teachers access codes to handout to students seemed to work very well. I don’t quite understand why they dropped that idea.
Lastly develop a plan for DreamSpark for home schooled students. You (Microsoft) really want these kids. They are motivated and they have the opportunity to learn and study on their own. Perhaps partner with some national home schooling organization or two. There must be some out there.
Get Serious About AP CS Principles
Microsoft Research has been funding some AP CS Principles pilot programs. This is a great course and really should be getting industry support. Google has also been supporting pilots which is to their credit. The problem with the MSR funded pilots is that they have been based around C#. Now I love C# and I think it can be great for HS CS courses. But most of the pilots are using tools like Scratch, BYOB/SNAP, Alice and Python which are very different ways of starting with computer science.
Microsoft products that would be better start with Small Basic. Kodu would be good for some things but maybe not the whole course. TouchDevelop is another tool that may be great for CS Principles especially as the web-based version that doesn’t require a Windows Phone develops. One of the developers of that tool has been teaching in a HS as part of the TEALS program. This may mean there is some curriculum that could be used as a base for this course.
Rather than use university faculty to develop the curriculum I would recommend using high school faculty. They are more in tune with what works for high school students. They also have more of a vested interest in making the curriculum work.
Develop a Coherent Curriculum Story
Microsoft has products that cover a wide range of age groups from Kodu, to Small Basic, to Visual Studio with F# and Touch Develop somewhere in the mix. There are also curriculum resources for most of these tools as well. What is missing is a coherent story that would take a school system for elementary school through middle school into high school. Having something like this would benefit everyone. Schools that are starting to realize that computer science is important and that we need to introduce students to CS concepts earlier would have an easier time incorporating CS into their schools with a coherent story. Microsoft gets a generation of students learning, having fun, and developing on Microsoft platform.
The story for high school is particularly murky these days. XNA was the big thing and it was a great thing. The future of XNA doesn’t look so good though right now. It’s not fully supported for Windows 8 and there are a whole bunch of options for Windows Phone. It is far from clear which of these options is the one that teachers would be developing curriculum for. While it is easy enough for Microsoft to tell professional, or even semi-professional, developers to just choose whatever they want teachers don’t have the time to develop curriculum for all of them. Given how fast things change some guidance on which is the most reliable long term option for educators would be useful.
Microsoft these days is all about developing apps for Windows 8 and Windows Phone 8. Teachers are about teaching the basic concepts and principles of computer science. Microsoft needs to have some curriculum developed that meets both their and the teacher’s needs if they want to see students developing for their platform.
BTW Microsoft has a lot of groups marketing to and supporting education. There is the Developer & Platform Evangelism group (DPE where I used to work), Legal and Community Affairs (LCA which supports TEALS and some policy programs) and the Education group in the Public Sector organization (which mainly sells to schools for infrastructure but also manages the wonderful Partners in Learning program) and probably others. You’d be surprised at how little communication and coordination happens between all these groups. I little more coordination could help here. I was getting a lot more involved in the other groups while I was there but I’m not sure how much is going on these days.
Train Some Rock Star CS Teachers
One of the things I always wanted to do what to invite some number of top high school computer science teachers to Redmond for four to five days of serious training. I’m not sure the right number but ten to twenty five feels great. The idea would be to top off and update the knowledge of some experienced teachers. There are other ways to support new teachers and I will address some of that another time perhaps.
The first day would be an overview of tools. Kodu, Small Basic, F# (let people know there is a good functional language option from Microsoft) and TouchDevelop. Include plenty of time for breaks and interaction between sessions by the way.
I’d spend a day’s worth of time each on Windows 8 and Windows Phone development. Did I mention that Microsoft should give each of these teachers a Surface Pro and a Windows Phone 8 while they’re at it? They are not going to get them from their schools anytime soon.
I would also want the teachers to be able to talk to people from the development teams. Let the teachers share their issues with teaching with the developers. Let the developers show the development process and the things about their products that excite them. Being able to go back to school and tell their students they spoke with Microsoft developers is more valuable than you might expect for the teachers.
I think Microsoft wants these teachers to be involved with the Expert Educator Program as well. Encouraging and supporting teachers to do professional development and other events for teachers is something in everyone’s best interests.
A lot more training is needed for less experienced teachers as well. I have no easy answer for that though the CS4HS program is a good start. Google has been the major funder of that program for a while now. They seem to be pulling back some to spend more money on the APCS Principles pilots. These programs work by having universities provide the training and the facility with some funding support from the institution and some from industry (Google mostly). They are a good chance to get professional development for teachers at all levels.
Run a Software Competition (or two) for High School Students
Microsoft runs a great competitive event for students called the Imagine Cup. I am a fan - see Microsoft’s Imagine Cup – a recent post. There are a couple of problems with it for high school students though. One is that the time commitment is huge and few high school kids have the spare time that university students have. Having high school students compete with undergraduate and graduate students is not even a competition. While the top high school students do have the talent and in many cases the knowledge they just don’t have the time required.
One idea that has been bantered about is a separate category for high school students. This has some good things going for it including the branding and the fact that more students are likely to try knowing that they don’t have to beat out university students. However with the time commitment I don’t see Microsoft getting the numbers they’d like unless it was very well constructed and publicized.
Option two is some sort of online version of the traditional programming contest. You know the lock them in a room for three hours and see how many programs they can write correctly. This actually works well for HS students as it fits their competitive nature and their limited time available. Ideally you would have regional or state winners. Having a state winner in a state that may have 10 students compete may not be that meaning full but being the Texas state champ is. I’d create regions based on APCS enrollment numbers as a rough analog for having real enrollment numbers.
I would bring the top competitors to Redmond and have them compete for the national title (or if ambitious run world-wide regionals and have a world-wide finals) on campus. Of course you would want to do all the fun sorts of things that are done with Imagine Cup finalists as well. Show them around campus, get them hear from and meet Microsoft celebrities (have Major Nelson show up or have pictures taken with Master Chief for example). You’ll create student ambassadors that you’ll have for life.
One other thing to think about and it is a small thing compared to my other suggestions. Microsoft should put together a set of sponsorship packages for local and regional programming competitions. A set of prices for first, second and third place finishers. You can set the size of the prizes to the size of the competition. If you insist that a Microsoft supported language or Visual Studio be supported that is understandable. Just make sure you know if the size of teams so you send the right amount of prizes.
Also include some additional swag to give out depending on the size of the event. Even a DreamSpark access code for each student would be good. I did that one year and a year later students were badgering teachers to subscribe to DreamSpark so they could continue to get software. If there were a set of packages and a supported way to apply for them a lot of events would love to advertise “Microsoft sponsorship.” Great PR. Plus you could ask them to promote the Imagine Cup and/or other Microsoft competitions.
Microsoft really needs to win these students over BEFORE they get to university. REALLY!