Categories
Uncategorized

A “Whiteboard Jam” on Monads and Coordinate Systems

And now, a left turn into Theoryland! Don’t worry, it’s good for your brain, and might even change the way you look at your day-to-day programming.

Get Microsoft Silverlight

Can’t see the video? You can download and install Silverlight or download the video in iPod, MP3, WMA, WMV, WMV (High) or Zune formats.

Here’s the latest in Channel 9’s “Expert to Expert” series of videos – a “whiteboard jam” between two big brains:

Here’s the abstract for the video:

The idea for the format of this conversation is simple: put two geniuses together, give them each a whiteboard and some markers, and see what happens. It’s much like free jazz: expert improvisation, seriously geeked-out whiteboard jamming.

The content theme for this episode — Monads as coordinate systems–is not simple. To grok this, we need to think in three dimensions: programming, physics and mathematics. But don’t worry. Brian and Greg do not expect to be jamming in front of only fellow experts. This is Channel 9, after all, and there are many different levels of knowledge out there amongst our Niner population. Accordingly, you will not feel as though you’re watching something in a language you don’t speak. That said, you should possess interests in the theoretical, in mathematics, and in physics, and an overall appreciation for learning new things.

Monads are often used in functional programming – they’re structures that describe a flow of control and data (ff you’re a SharePoint person or have developed using WF, you might want to think of them as distant cousins of workflows). As the practical upshot of Moore’s Law has shifted from “doubling in speed about every couple of years” to “doubling in cores about every couple of years” and shows no sign of shifting back, functional programming and what it offers to parallel programming are becoming increasingly important. So don’t pass by this video thinking that it’ll never apply to you – there’s a chance it might.

Explanations of monads for non-functional programmers include:

(Perhaps I should buttonhole Reg “Raganwald” Braithwaite into providing us with a nice beginner’s explanation of monads. Would you folks like that?)

This article also appears in Canadian Developer Connection.

Categories
Uncategorized

Yuri Gurevich: “Introduction to Algorithms and Computational Complexity, Part 1 of n”

Get Microsoft Silverlight

Can’t see the video? You can download and install Silverlight or download the video in MP4, MP3, WMA, WMV, WMV (High) or Zune formats.

If you took computer science in university, you might remember a course or two with a title like “Algorithms and Data Structures”. Perhaps – and this is more likely – you might not. It’s understandable: as a student, you were probably bored by the course’s deep forays into theory-land and never cracked open Rivest and company’s Big Book of Algorithms, certain that you’d never end up using this stuff in real life (and admittedly, the only time I ever found the “Could P ever equal NP” problem useful was in an extremely unusual dating situation).

As a reader of this article, the chances are that you’re out of school and working either as a programmer or at least work with them. You might have come around to thinking that you wish you’d paid a little more attention in that Algorithms course, in that wistful, grown-up “Why did I quit piano lessons when I was young?” way. If you feel this way, here’s your second chance.

Microsoft’s Channel 9 is presenting a series of video lectures by computer scientist and big math brain Yuri Gurevich,, the guy behind the abstract state machine (an enhancement of the Church-Turing Thesis, which states that if it’s computable, it can be computed by a Turing machine). In this series, he’ll walk through all those algorithms that were covered in that course, provide plenty of historical context and explanations, and hopefully give you enough knowledge to help make you a better programmer. The first lectures in the series introduces algorithms by starting with Euclid’s “greatest common divisor” algorithm, explores the history of computation (including the Entscheidungsproblem), covers the difference between solvable and non-solvable and covers all those goodies you missed in Algorithms class.

This article also appears in Canadian Developer Connection.