5 ms·
Simply Scheme: Introducing Computer Science (1999)
- AlexeyBrin 9mo agoIf anyone wants to try the flavour of Scheme used in the book, install Racket and use: #lang simply-scheme
- gus_massa 9mo agoNote that it doesn't get installed by default. You must download the package https://pkgs.racket-lang.org/package/simply-scheme https://pkgs.racket-lang.org/package/simply-scheme The easiest way is to go to inside DrRacket and open the menu File > Package Manager and add "simply-scheme". Or if you prefer the command line, something like raco pkg install simply-sheme
- antfarm 9mo agoCool, I just started using Racket this week, for prototyping an S-expression based DSL. The full PDF is available here: https://ia800200.us.archive.org/13/items/SimplyScheme/Simply%20Scheme.pdf https://ia800200.us.archive.org/13/items/SimplyScheme/Simply...
- functionmouse 9mo agoI'm to understand this is meant to prepare new learners for SICP? Cool!
- Smalltalker-80 9mo agoAh, 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)..
- juancn 9mo agoI have fond memories too, we used to follow "The little Schemer" for Scheme, but we had a PC lab running Windows.
- whartung 9mo 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.
- linguae 9mo agoI 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.
- ecshafer 9mo agoYour discrete mathematics class has programming and is taught by the CS department? I can't say I have seen that. My Discrete mathematics class was taught in the Math department, no programming, and we had a few CS theory courses in the CS department which are basically Discrete++ but they were all sans programming.
- linguae 9mo agoWe teach discrete structures as mostly a math class with problem sets, but we have some programming exercises to help “concretize” some of the more abstract portions of the class and to also provide motivation to students who want to see practical applications of discrete math.
- nluken 9mo agoNortheastern held out for a long time, only switching away from Racket, despite the protest of students and professors alike, in the last year or two.
- dmux 9mo ago
- fdr 9mo agoI 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.
- jampekka 9mo agoI'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.
- bunderbunder 9mo agoOTOH I work in Python and I’ve seen that recent graduates who were only taught Python and Java in school are often in for a nasty shock when they first encounter (for lack of a better term) real-world code. When I’m helping them understand some subtle point about async/await, I sure do wish they had a semester’s worth of Scheme in their background so I could rely on them already having a crystal-clear understanding of what a continuation is.
- jampekka 9mo agoIndeed. It's hard to teach Python as it's idiomatically used in the wild. There's just so much stuff going on (iterators, generators, async, context managers, comprehensions, annotations etc etc), it takes a lot of study/experience to learn it all.
- fn-mote 9mo agoYes, so the point is that teaching it at all is a choice of style not substance. Not sure I 100% believe that, but buy-in (and LLM help) are significant parts of a successful onboarding.
- bunderbunder 9mo agoThere is at least something to be said for having spent a semester starting with a bare-bones but malleable language like Scheme, and then building up your own libraries to implement more advanced features like object-oriented programming and list comprehensions. Because then you’re interacting with these things in a really concrete way rather than just talking abstractly about what’s going on inside the black box. And I’m fairly well convinced at this point that mechanisms like virtual method tables and single dispatch functions are the kind of thing where an hour or two just making one yourself will go a lot farther than many days’ worth of lectures. Perhaps even many years’ worth of hands-on experience.
- nomilk 9mo agoLove 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 https://people.eecs.berkeley.edu/~bh/ss.pdf (saving to laptop and phone; perfect for passing time on a long haul flight)
- antfarm 9mo agoThe full PDF is available here: https://ia800200.us.archive.org/13/items/SimplyScheme/Simply%20Scheme.pdf https://ia800200.us.archive.org/13/items/SimplyScheme/Simply...
- so-cal-schemer 8mo agoBrian Harvey was really a wonderful professor. You could tell he really cared about his students and loved teaching computer science -- especially from Ableson and Sussman's masterpiece. https://github.com/alebricio/cs61a https://github.com/alebricio/cs61a