Simply Scheme: Introducing Computer Science (1999)

people.eecs.berkeley.edu

91 points by AlexeyBrin 4 days ago


linguae - 6 hours ago

I wonder if there are still undergraduate CS programs that use a functional programming language in the intro course? MIT switched away from SICP (Scheme) to Python back in the late 2000s, and Berkeley switched away from Scheme sometime afterwards. Shriram Krishnamurthi has heavily promoted Racket in education and continues to do so, but for introductory CS he has moved on to Pyret, which has Algol-like syntax as opposed to S-expressions and doesn’t require programmers to think in terms of functional programming; for example, Pyret has loops and mutable variables.

At my institution (Ohlone College in Fremont, California), we teach the intro courses in C++. However, for discrete math, a sophomore-level course, each instructor is allowed to choose the language. I chose Haskell the last time I taught the class, and I plan to use Haskell again, since I believe it’s a great vehicle for coding discrete math, plus I believe it’s a great thing teaching undergraduates functional programming early on.

fdr - 6 hours ago

I enjoyed my work with Scheme, having received my instruction in the early 2000s. I'm not a functional language or lisp language advocate in any way, and I don't even dislike Python for professional work, but I do regret that it is not taught anymore: Python's management of scopes is not as good for the instruction.

nomilk - 3 hours ago

Love the site, but seems a shame not to link to the full (~460 page) pdf for offline perusal.

EDIT: this might be it: https://people.eecs.berkeley.edu/~bh/ss.pdf

(saving to laptop and phone; perfect for passing time on a long haul flight)

AlexeyBrin - 9 hours ago

If anyone wants to try the flavour of Scheme used in the book, install Racket and use:

    #lang simply-scheme
Smalltalker-80 - 6 hours ago

Ah, Scheme was part of a programming language course, studying CS in ~ 1990. We students struggled to match all the parenthesis on our VT100 terminals. And to understand the intended purpose of the functions, which are not attached to modules or classes (without macro's)..

whartung - 6 hours ago

“Simply Scheme” was a foundational work on my path to a parenthesta.

Simply, for me it was a Rosetta Stone that put Lisp/Scheme concepts into ones that I already understood. Simple things like using “function” instead of “lambda” were Aha moments that lead to breakthroughs.

Super helpful for me.

jampekka - 5 hours ago

I'm currently teaching an introductory programming course in Python, and I definitely feel the allure to teach using a simpler language like Scheme.

Python has become a huge language over time, and it's really hard to make a syllabus which isn't full of simultaneous "you'll understand when you're older" concepts. OTOH students don't seem to mind it much and they do seem to learn to write code even with very shakey fundamentals.

functionmouse - 9 hours ago

I'm to understand this is meant to prepare new learners for SICP? Cool!