2012 was an eventful year. We pick out some of the highlights from the programmer's point of view.

The biggest thing about 2012 was that it was Alan Turing Year. You can forget Windows 8 and grubby commercialism and remember this year gone as something pure - a celebration of pure computer science. During the year there were lots of events, but most of them were parochial in both the geographic sense and in the sense that they generally served small communities of experts.

However, enough spilled over for the general public to get to know some more about Turing and more than just his codebreaking efforts. There were books and collections of papers and at the close of the year a repeated call for a pardon for Turing - which shows progress even if you don't agree with the general idea of a pardon for a crime committed under a law that is unreasonable by today's standards. Perhaps the nicest and most poignant tribute was when Kasparov, the well-known Russian Chess Grand Master, took on Alan Turing's TurboChamp chess program which had never been run using a computer before. However you can't overlook Google's tribute in the form of a usable Google Doodle Turing Machine:

While on the subject of theory it is worth recalling some of the results that turned up this year. At the start of the year it was proved that the could be no 16-clue Sudoku - every example has more than one solution and so no fun as a puzzle with a unique solution that you can get right or wrong.

AI advances

The big AI issue in 2012 was probably the way that driverless cars finally started to make an impact on the common conscience. Various states made experimental driverless cars legal and people really started to think about the legal and ethical positions.

An even bigger revolution in AI was revealed in June. Google and Stanford used deep neural networks to recognize a cat and a human face. The trick was that they didn't tell the network what to look for - it just found the features by looking at lots of You Tube videos. Deep neural networks just kept on performing and soon provided performance improvements in translation and speech recognition. This was the year that deep neural networks proved that strong AI can work.

Year of the MOOC

This was also the year that we decided that learning to program was something for everyone to do - although why it took so long is another interesting question. During the year various online courses claiming to teach programming took off - most well intentioned and enthusiastic rather than effective. It did serve to raise the question of what programming is and how best to teach it but without much in the way of a conclusion. This was the year of the MOOC. Udacity was formed, so were Coursera and edX and they all caught the media's attention.

App Inventor, an easy to use Android programming language was finally re-established in a form that anyone could use after being ejected to MIT during a Google spring clean. This is probably the most under-rated learning resource available.

Learning to program is important for all sorts of reasons so let's hope the interest continues into 2013.

Raspberry Pi

On the hardware front, 2012 brought all sorts of new treats for us to play with but the number one has to be Raspberry Pi. It launched in January but it took a long time before supplies of this hugely popular credit card sized ARM computer settled down enough for us all to get one. The main attraction of the Pi seems to be that it was cheap enough for all those applications that a full PC was just too big for. Over the course of the year the software and the documentation got better to the point where you could just boot it up and start programming. Are there more things to come to the Pi in the following year? Who knows but the best guess is more of the same slow software development.

As well as the Pi the other hardware highlights of 2012 were the introduction of the official Windows Kinect in February, the new Arduino Leonardo and the launch of the OUYA Android games platform.

Patent problems

This was also the year that patents got in the way. As well as patent trolls, we had Oracle v Google over the unlicensed use of Java in Android. This was an unpleasant business that did as much harm to Java as to Android. The situation was more interesting when it was revealed that we had a programming judge in control. He said what we all wanted to say - you can't in all reason patent stuff that a beginner could write in a few minutes. The trial ended well for Google but it is still grumbling on, much like the Apple Samsung trial over the patent and copyright infringement of the iPhone and iPad. This ended badly for Samsung with a big fine, but the jury looked decidedly not quite right and the arguing continues. The good news is that as 2012 draws to a close the patent office has started to reject a number of the key, but obviously silly, patents that Apple was and still is using to beat up the opposition. Let's hope more silly software patents are overturned in the coming year.

HTML5

Despite initial problems, HTML5 settled down and became boring. In the middle of the year W3C and WHATWG decided to go their own ways. HTML5 was finally frozen and finished but of course WHATWG is still moving on with its own living standard. Which will have more influence in the coming year - the frozen W3C or the dynamic WHATWG? Put like that the answer seems obvious. The idea that HTML5 apps were all you need and native apps are overkill was something that gained some credence but also received a lot of doubt over the year. The biggest hold out is IE9/10 which still doesn't have a 3D facility and doesn't support WebGL for reasons that don't make a lot of sense. As the year closed Santa was tracked in 3D by Chrome and Firefox users but not IE users and the irony was that Microsoft was footing the bill for the software. Surely someone at Microsoft has to wake up in the new year and notice that IE isn't viable unless it competes as a browser rather than a marketing tool.

Windows 8 and Windows Phone 8

Talking of Microsoft, who could ignore this year of turmoil at Redmond. Of course the headline news was the release of Windows 8 but the changes run deep. It is too early to know the fate of Windows 8, but at the moment it seems to be a matter of determining how bad the fail actually is. Window 8 is probably going to be a "Vista" experience for Microsoft.

At the same time as launching Windows 8, Microsoft also launched Windows Phone 8 which no matter how hard it tries to tell everyone is backward compatible - it clearly isn't. You can port your old WP7 apps and run them on WP8 but to go forward you have to work with WP8 apps.

The new Microsoft era pushes out more than it launches. Gone is Silverlight and probably WPF and large chunks of .NET. WinRT does support .NET but there is a lot of encouragement to use C++. As WinRT is a COM based system, the fact that managed code looks like an afterthought isn't surprising.

Although nothing has actually been killed off, Microsoft very rarely kills anything off officially, it leaves the Microsoft programmer with some difficult choices in the coming year. What language to use? Is the desktop worth developing for? Is ASP.NET Web Forms dead and is there any point to using ASP.NET MVC? How much more technology can Microsoft effectively dump by open sourcing it?

With all the surprises out of the bag, Microsoft can spend the coming year trying to fix what it broke.

Apple, Microsoft's traditional opponent, didn't make much impact on the programming world in 2012. It unveiled new devices but not a lot else. Of course it dumped Google maps and we all know were that led - or not if you were using Apple mapping. Google finally came back with a new Google Map App which pleased everyone. Google seems to be attempting to take over the iOS platform by stealth - first Chrome, then maps, then search better than Siri, then email and so on. Keep an eye on what it offers in the coming year.