Haskell is used as the pseudo-code for lectures while assignments are written in Racket.
The course was great because the professor (PR) was:
1- Passionate
2- Knowledgeable
3- A kind person
I have found Racket to be a very effective way to make students (most of them have either no CS background or only have played around with imperative/OOP languages) more comfortable with functional programming.
The best memory I have was during the first lecture. After all the administrative fluff, the prof open his pdf and the first slide reads: "Induction"
I remember thinking "Is this a maths or a CS course?"
The second slide defined the set of natural numbers. As the prof start explaining the syntax and its meaning, I slowly start to realize the beauty of those few words:
Data Nat = Z | S Nat
where Z represent 0 and S the successor function.
We define the data type "Nat" to be either zero or the successor function applied to a "Nat".
It was my "ahah" moment. I was mind-blown by the language's clear syntax and immensely powerful semantics. (This is Haskell not Scheme/Racket).
We would later be introduced to lambda calculus (untyped vs typed), infinite data structures, interpreters etc... It was glorious... What a great professor.
The only "downside" to this is that Racket/Scheme isn't very much used outside of Academia. Which is clearly a shame given its incredible built-in features and elegant LISP-like syntax.
Should anyone have insights/opinions on why Racket/Scheme aren't more used, please feel free to share them with us!