Sure I knew my friend Dan Garcia has been working to re-establish the joy and beauty of computer science to a whole new generation.
And yeah, talking with enthusiastic Dan convinced inspired me to develop a parallel class at my college.
Little did I know that the language to which he was gravitating was going to be so doggone fun and appropriate.
A few years ago at SIGCSE (ACM's Special Interest Group for Computer Science Education), Dan took me to Alice's Tea Party, reintroducing me to the latest generation of Alice(from CMU). It was then Dan also told me about Scratch (from MIT) and that he thought it would be the language he was going to use for the CS for non-majors course at UC Berkeley.
Fast forward two years to last month's SIGCSE, where Dan and Brian Harvey were both enthusiastically talking about BYOB (Build Your Own Blocks) http://byob.berkeley.edu/, which became the language for the "Joy and Beauty" CS intro for non-majors that Dan is currently teaching. Not only did we interview Dan, we also interviewed Brian about these very topics. Brian and Jens Mönig extended Scratch to have "No Ceiling". Scratch is an amazingly powerful visual programming language allowing your average 10 year old to make wildly powerful and expressive programs . They have extended it to have features needed for a Berkeley CS class. Brian Harvey has been my Scheme hero for some time. I came kicking and screaming into teaching LISP at my college when I was first hired. I quickly realized that the "Structure and Interpretation of Computer Language" is simultaneously the world's best textbook, one of the world's hardest textbooks to absorb. I also realized I really like DrScheme (now DrRacket) as my interpreter of choice since it was freely available on all platforms, and its IDE smoothly relieved users of the tedium of reformatting code and tracking stray parenthesis. The extensions Brian introduced to Scratch are Scheme inspired. In a nutshell, every language element should be first class, in other words you can do anything in the language with them. For functions, this means having unnamed procedures you can pass to a function and possibly return from a function. What this means to me is that the ability to think in Scheme is directly informing how I think in BYOB. Thank you Brian.
Jens did something wildly delightfully unexpected to me. He reimplemented Scratch (in Smalltalk), using a similar drag and drop paradigm. Wow. And he exposes this in BYOB so you can edit a block in the Elements editor and by saving it, recompile it into an available block in BYOB. I always wanted a reason to learn Smalltalk and now in my grasp I have YASP (yet another summer project.) BYOB looks to be one of the most elegantly extensible programming environments I have seen, with the added benefit that programs become art. I have always taught students that the flow of code should be elegant, but now there is a multicolored flow that further aids progress towards a mathematically elegant algorithm.
You may be wondering why I am lavishing praise on what might not appear to be a hard-core parallel programming language. Well in sense it is. The essence of Scratch/BYOB is having sprites collaborating on the screen by cooperating concurrently. I am still a BYOB noob, having set myself the goal of reimplementing the classic Asteroids game in BYOB as a project uniquely suited to BYOB I can't as easily program in the other languages I own. I have barely scratched the surface of the language, but I can already see support for threads, shared variables and local variables. Scratch/BYOB also has a mesh mode for running across a network. I am pleased to have found the active BYOB version 3 forum.
The acronym, BYOB, apparently has another meaning, not popular in some circles, which is leading the development team to a more neutral choice. I hear Snap is a likely candidate.
Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.
Notice revision #20110804