Snap! is a visual, blocks-based programming language powerful enough to support serious computer science courses. It has first class procedures, to support arbitrary control structures; first class lists, to support arbitrary data structures; and first class continuations, partly to justify the title of this talk, but also useful to allow users to build multithreading independent of the thread scheduler built into Snap! itself. It also includes an object system with prototype-based inheritance, which we argue is the right choice in a language for learners.
I’ll also briefly discuss the “Beauty and Joy of Computing” course that has informed the design of Snap!, as part of a wider effort to bring computer science to an audience outside its usual population of white and Asian males.
I’ve been teaching since 1976, ranging from six-year-olds (as a volunteer) to graduate students. I wrote the three-volume Computer Science Logo Style series for teenagers, developed (with UC Berkeley students) the Berkeley Logo interpreter, taught a SICP course at Berkeley for 25 years, wrote (with Matthew Wright) the SICP “prequel” Simply Scheme, developed (with Daniel Garcia and UC Berkeley students) the “Beauty and Joy of Computing” course for non-CS majors, and helped develop (with the brilliant Jens Mönig) the Snap! visual programming language (Scheme disguised as Scratch) used in the BJC course. Although theoretically retired, I’m currently working with colleagues at Education Development Center to turn BJC into a curriculum package usable in high schools, especially for nontraditional CS students (women and minorities).
Mon 31 OctDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
10:30 - 12:10
|SPLASH-I/E Keynote: The dream of a lifetime: Shaping how our children learn computingKeynote|
Simon Peyton Jones Microsoft Research, CambridgeMedia Attached File Attached
|Snap!: Scheme Disguised as Scratch|
Brian Harvey University of California, BerkeleyMedia Attached