Needless to say, I was incredibly happy to spend an hour with Brian learning all about what he's up to these days. Not surprisingly,

Of course, no conversation with Brian - a physicist by training and a software architect at Microsoft - is complete without talking about some current physics problem: Finding the elusive Higgs Boson is all the rage these days, so we talk about what it means.

Brian also shares insights on Haskell, functional and hybrid programming languages (C# is imperative, but it provides functional capabilities like LINQ, for example, upon which Rx is built (Rx is LINQ-to-Streams or observable sequences of events, really)...). We also

Notes and More:

From Wikipedia - information on Markov and Viterbi:

*A hidden Markov model (HMM) is a statistical Markov model in which the system being modeled is assumed to be a Markov process with unobserved (hidden) states*

*The Viterbi algorithm is a dynamic programming algorithm for finding the most likely sequence of hidden states – called the Viterbi path – that results in a sequence of observed events, especially in the context of Markov information sources, and more generally, hidden Markov models.*

This is the **third and final part **in our introductory series of lectures exploring the fundamental logical construct that powers all that we do as software engineers—the *algorithm*.

In part 3, Dr. Gurevich teaches us about **bounded complexity and the axiomatic definition of sequential algorithms**.

Find some time to watch this. You'll be learning about algorithms from one of the world's premiere minds in the science of logic and algorithms. In this lecture, Yuri references a few of his academic papers, which you can find **here.**

**Thank you, Yuri**, for taking the time to share your extensive knowledge and gentle, kind spirit with Niner Nation. We all really appreciate it! Thanks, too, to **Wes Dyer **and **Bart De Smet** for being our live audience for this lecture and asking **great **questions.

This is the **second part **in a series of lectures exploring the fundamental logic-recipe powering all that we do as software engineers and computer scientists—the algorithm. **What is an algorithm?** You may be surprised to learn that this is not a simple question. Nonetheless, in this video, Yuri presents an answer—one that is perhaps somewhat controversial in nature—based on his own research and philosophy.

**Thank you, Yuri**, for taking the time to share your extensive knowledge and gentle, kind spirit with Niner Nation. We all really appreciate it! Thanks, too, to **Wes Dyer **and **Bart De Smet** for being our live audience for this lecture and asking **great **questions!**See Part 1See Part 3**

As is Stephan's nature, he elaborates on technical details in very substantive way. The Standard Template Library, or

In

Enjoy! Learn!

Books mentioned by Stephen:

The C++ Standard Library: A Tutorial And Reference by Nicolai M. Josuttis

Effective STL by Scott Meyers

**[STL Introduction lecture links]**

Part 1 (sequence containers)

Part 2 (associative containers)

Part 3 (smart pointers)

Part 4 (Nurikabe solver) - see Wikipedia's article and Stephan's updated source code

Part 5 (Nurikabe solver, continued)

Part 6 (algorithms and functors)

Part 7 (algorithms and functors, continued)

Part 8 (regular expressions)

Part 9 (rvalue references)

Part 10 (type traits)

]]>As is Stephan's nature, he elaborates on technical details in very substantive way. The Standard Template Library, or

In

Enjoy! Learn!

Books mentioned by Stephen:

The C++ Standard Library: A Tutorial And Reference by Nicolai M. Josuttis

Effective STL by Scott Meyers

**[STL Introduction lecture links]**

Part 1 (sequence containers)

Part 2 (associative containers)

Part 3 (smart pointers)

Part 4 (Nurikabe solver) - see Wikipedia's article and Stephan's updated source code

Part 5 (Nurikabe solver, continued)

Part 6 (algorithms and functors)

Part 7 (algorithms and functors, continued)

Part 8 (regular expressions)

Part 9 (rvalue references)

Part 10 (type traits)

]]>Here, Ai->Canvas creator, **Mike Swanson**, spends some quality time with me digging into the details inside and behind this very useful tool. We cover many areas including, but not limited to, the plug-in's architecture, performance characteristics, design decisions, native code to JavaScript conversion tactics and implementation, etc. Mike spends most of his time where a Going Deep guest must: *at the whiteboard*. He also demos his latest conversion technology and I must say, it is really impressive. Mike is a great engineer.

You can jump right into the rabbit hole with us **here**.

Tune in.

Enjoy. Learn.

]]>

Welcome to my world of photography. I love taking photos, it’s just that I’m not that great at it. I’m convinced that auto-focus, and anti-shake features were invented just for me. They’ve gone a long way to making my shots respectable, but the small LCD screens built into camera simply can’t tell you how well focused an image is going to look at full resolution on screen.

If, like me, you’ve lusted after the infamous “Image Enhance” technology that’s seemingly prevalent in every Hollywood blockbuster you can name, it might just be on the horizon.Laptop Magazine reports on a new technology demonstrated by Adobe at the NVIDIA GPU Technology Conference this week. Photography using advanced Plenoptic lenses allow images to be rendered using computational algorithms, allowing any part of a photo to be brought into focus **after** it has been taken.

Plenoptic lenses work by cramming in hundreds of lenses together. The resulting image looks like a blurry mosaic, but with much more information captured by the lens, it can be manipulated in software to allow specific areas to be focused.

Back to my lost moment earlier. Rather than a good 5 minutes with a stress ball, with plenoptics it would be Step 1. Unfocus Tree. Step 2. Focus Family. Step 3. Receive plaudits for excellence in photography.

The technology is yet to be commercialised, but check out this great demo of the use of plenoptic lenses from Adobe’s Senior Research Scientist, Teodor Georgiev. It’s a brilliant example of science fiction slowly becoming science fact.

]]>

*Each algorithm is a list of well-defined instructions for completing a task. Starting from an initial state, the instructions describe a computation that proceeds through a well-defined series of successive states, eventually terminating in a final ending state. The transition from one state to the next is not necessarily **deterministic**; some algorithms, known as **randomized algorithms**, incorporate randomness.*Here, the great Yuri Gurevich, mathematician, computer scientist and inventor of abstract state machines, will teach us about algorithms beginning with this introductory lecture that includes plenty of historical context. This is the first in a series of lectures exploring the fundamental logic that powers all that we as software engineers and computer scientists do in computing--the algorithm. What is an algorithm, exactly? You may be surprised to learn that this is actually not a very simple question...

Find some time to watch this introduction on a truly fascinating topic by one of the world's premiere minds in the field of mathematical logic and algorithms. We designed this to increase in complexity over time, like a typical college course, so Yuri moves slowly through several topics, providing plenty of time for viewers to catch up before moving on to more advanced topics.

See

See

Who better to dig into some STL internals than the great Stephan T. Lavavej? Stephan spends most of his time maintaining the STL (along with the core producers of the library, who last I heard work from a remote location in Hawaii...). Stephan is no stranger to those of us who spend time in the native programming world (and use C++, specifically, to compose), and you've already met Stephan a few times on C9.

As always, this conversation just

Thank you, Stephan, for another great lesson.

Enjoy!

]]>

Leslie Lamport is a computer scientist and mathematician best known for his work with distributed systems. In fact, Dr. Lamport’s research contributions laid the foundations for the theory of distributed systems. He currently works in Microsoft Research
where most of his time is spent developing formal semantics (with mathematical logic) for specifying and reasoning about algorithms.

Here, Dr.
Erik Meijer, computer scientist and programming language/library designer, sits down with Dr. Lamport to discuss several aspects of Dr. Lamport's body of work in computer science.

Dr. Lamport's
TLA, the Temporal Logic of Actions, is a logic for specifying and reasoning about concurrent and reactive systems. TLA+ is the latest incarnation of this formal specification toolset.

Dr. Gurevich is Professor Emeritus of Electrical Engineering and Computer Science at the University of Michigan. He is currently a principle research scientist in Wolfram Schulte’s RiSE team (Research in Software Engineering group at Microsoft Research).

Originally, Dr. Gurevich started his career as an algebraist. Later he became a logician. Then he moved to computer science, where his main projects have been Abstract State Machines, Average Case Computational Complexity, and Finite Model Theory. Dr. Gurevich
has been honored as a Dr. Honoris Causa of the University of Limburg, Belgium (1998), as a Fellow of the Association for Computing Machinery (1996), as well as a Fellow of the John Simon Guggenheim Memorial Foundation (1995).

Dr. Gurevich's fundamental work on the theory of
Abstract State Machines (ASMs) is of paramount importance for theoretical and applied computer science. The significance of the theoretical concepts developed by Gurevich is confirmed by the substantial impact they have on mathematical modeling of discrete
dynamic systems.

*This is probably the only interview in C9's history where a good case is made for
*imperative* programming versus declarative and functional (this starts right off the bat at around 02:31).

Read
Yuri's Annotated Articles

Tune in. Meet Yuri Gurevich.

The

The

The

A unique feature of the Spec# programming system is its guarantee of maintaining invariants in object-oriented programs in the presence of callbacks, threads, and inter-object relationships.

The Spec# programming system is being developed as a research project at Microsoft Research in Redmond, primarily by the
Programming Languages and Methods group.

Here, Expert to Expert guest expert and programming language guru Erik Meijer chats with MSR researchers and spec# designers Wolfram Schulte, Rustan Leino and Peter Mueller. We dig into the details of Spec# and contract oriented programming in general. Plenty
of code on the screen and lots of deep conversation. Just how we like it for Going Deep and Expert to Expert.

Enjoy!

LOW RES FILE

MP4

ZUNE

This is the first epsiode of a new series on Channel 9, Data Structures and Algorithms, that will focus on, well, data structures and algorithms Each episode will feature an engineer at a whiteboard discussing solutions to algorithms that they invented or improved upon. There are many clever people who write code for Microsoft and Channel 9 will continue to highlight them and their work. This new series is an attempt to really focus the conversation to one problem and it's algorithmic solution (which will often involve the advent of new data structures).

Enjoy. Mike is as much an engineer as he is a technical evangelist. His genetic session scheduler is an innovative approach to solving a problem rife with tediousness. Well done, Mike!

LOW RES FILE

MP4 ]]>

C5 is a library of generic collection classes for C# and other CLI languages and works with Microsoft .Net version 2.0 and Mono version 1.2 and later.

C5 provides functionality and data structures not provided by the standard .Net System.Collections.Generic namespace, such as persistent tree data structures, heap based priority queues, hash indexed array lists and linked lists, and events on collection changes. Also, it is more comprehensive than collection class libraries on other similar platforms, such as Java. Unlike many other collection class libraries, C5 is designed with a strict policy of supporting "code to interface not implementation".

Here, we dig deeply into C5. We also dive into some other interesting computer science and programming topics, as you'd expect. We spend some time discussing a very intriguing aspect oriented software project named YIIHAW. YIIHAW is a

Peter is a brilliant computer scientist and we're very lucky to have him here on C9. Thank you, Peter! ]]>