If you wanna be sincere about this, I think you should have a section dedicated to Gezira, and not only the more traditional imperative styles of graphics programming. The style of GUI that came out of PARC is no longer "modern", and has problems with modern development styles (e.g, single-threaded global event loops makes writing concurrent programs difficult).
If you're not familiar with it, Gezira is a full vector graphics API, including compositing, written in less than a thousand lines of Nile - a small flow-based programming language. It does its magic by treating quadratic bezier curves as the main primitive, where the author has developed an algorithm to calculate the pixel coverage of a given bezier, with anti-aliasing.. Because most operations can be treated independently, it lends itself nicely to concurrency - each operation in a data flow can run independently, and many operations can be parallelised if given sufficient inputs.
Gezira/Nile was created by Dan Amelang while working for VPRI (the research institute headed by Alan Kay). A demo of it in action can be seen here: (http://tinlizzie.org/~bert/Gezira.ogv), where it's worth noting that the entire Editor UI in this example (after first 5 seconds), including font rendering, is written with Gezira itself.
I'm not familiar with Gezira, but from what little info I could find it seems to compile to C code and runs entirely on the CPU. They say an OpenCL backend is planned for the future but not there yet. I agree it might be a good environment to learn about graphics concepts in general, but it wouldnt really teach anything about the details of GPU programming.
I've been very surprised and pleased by the accessibility of graphics programming and the helpfulness of a lot of the communities built around it. It's been a lot of fun to learn and play around with. (Plus I get to use C and C++, which the masochist in me really enjoys for some perverse reason).
Edit: I actually couldn't help myself and ended up taking a look anyways. That project is incredible at least from the small amount I've seen so far. I don't think it's an exaggeration to say the project you linked to is the coolest web-app I've seen.
I think that's what OpenCL and such are trying to be, but I know it is nascent and has competitors. I don't know enough about the hardware to tell if languages will eventually consolidated like C (with basically all higher level languages built on top of C), or if there is some fundamental heterogeneity or evolutionary divergence that means there can't be one language.
This is one of the reasons OpenCL is still playing catchup with CUDA.
Thanks to PTX, you can target CUDA directly with C++ and Fortran, besides a few other languages.
OpenCL only this year got SPIR.
NVidia's early-mover advantage is significant, but software tied to only their hardware will never be able to achieve the kind of status that the netlib stuff has. The only question is whether the gold-standard numerical libraries a decade from now will have multiple backends, or a single non-CUDA backend.
AMD can only compete through HSA and non-standard OpenCL extensions, and only companies whose hardware originates from AMD GPUs are in HSA.
OpenCL suffers from being fragmented and with very fuzzy mapping to real hardware. Even OpenGL compute shaders looks more interesting to me with their vast texture format access, and the fact that OpenCL multiple queues don't deliver in practice.
There is both SPIR and HSAIL in competition with PTX, NVIDIA can rejoice.
Yet learning GLSL has been surprisingly difficult. Either the resources available are the Khronos Group's shitty documentation, or tutorials of a different yet equal shittiness that go no further than spinning cubes.
So this sounds freaking amazing. Sign me up.
Shaders have there own stripped down C language to run on parts of the graphics pipeline as apposed to CUDA which is a much richer framework with a lot more control (and knowledge) of the GPU it's running on.
CUDA is an NVidia only GPU framework. Shaders are used in conjunction with graphics frameworks like OpenGL, DirectX(?) and WebGL.
The interactive nature is great. Normally shaders are a just a big string or file that gets submitted to the graphics card driver to get compiled and run on the GPU.
That said, I definitely agree that an interactive CUDA guide would be useful! And although my experience with graphics programming is limited to the past few weeks I've certainly experienced some of what you mentioned with regards to debugging. One of the most frustrating things starting out with OpenGL was how forgetting a specific function call would cause nothing to render at all with no hint as to what was going wrong.
I'm very familiar with the development teams for both these platforms, and they're both very friendly and desirous of collaborations!
I'll take this opportunity for a shameless plug of one of my articles [1] with some musings that may be relevant and/or interesting to read and know.
[1]: http://gamedevelopment.tutsplus.com/articles/the-end-of-fixe...
I think you should add an intro to procedural graphics chapter that goes over raymarching and other algorithms used to create meshes procedurally.
BTW, have you thought of making the values in the code samples scrubbable? (e.g. at 4:20 in this Bret Victor video http://vimeo.com/36579366). I think that that change would really aid in "feeling" the behavior of the algorithms.
EDIT: Exploring your link, I discovered Bret Victor. Anyone looking for some inspiration look at his show reel. http://worrydream.com/#!/Showreel2012
Seeing the examples rendered is nice, but changing the code doesn't work in Firefox. Seems like that might confuse a lot of people.