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.
Your 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.
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.
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)..
“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.
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.
Your 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.
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.
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)..
I have fond memories too, we used to follow "The little Schemer" for Scheme, but we had a PC lab running Windows.
“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.
If anyone wants to try the flavour of Scheme used in the book, install Racket and use:
Note that it doesn't get installed by default. You must download the package 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
I'm to understand this is meant to prepare new learners for SICP? Cool!