Restore meritocracy in CS using an obscure functional language.
Students who did not have the privilege of hacking since they were young are at a disadvantage in Computer Science (CS). However, CS departments can teach introductory programming using an obscure functional programming language to limit the young hackers’ advantage. Most students with prior coding experience learned a procedural programming paradigm, so forcing all students to struggle with learning a new, functional language helps restore meritocracy.
In the blog comments, Kite recounts hir experience with an intro CS course:
While I think my course was pretty sucky, one good thing it did was to knock the wind out of the sails of those guys who’d been programming for ages – by starting us on an obscure functional programming language called Miranda (oh did it ever raise a whole lotta grumbles from the boasters). Only after that did we do procedural stuff like C, and then onto C++. Mind you, the whole course seemed determined to be as academic and un-real-world as possible, so C++ was probably the most career-relevant thing we got out of it! [...]
The grumblers grumbled because they could not take advantage of their prior programming experience.
Another benefit of a functional language is noted in John’s response to Kite:
A well-known UK university did that for a while, using ML as the introductory programming language, specifically to wipe out the bad habits people learn by teaching themselves using BASIC etc.
If obscure functional languages become common in intro CS courses, it is reasonable to expect that young hackers will try to game the system for grades by learning functional languages in preparation. However, functional languages can be very different from each other, and there is still logic programming and possibly other viable programming paradigms to exploit.
In any case, basing an introductory CS course on an obscure programming language and an “academic” programming paradigm is a clever equity hack.
Additional comment guidelines: Resist the urge to talk about what programming languages you personally know. You can talk about programming languages, but try to connect it to the post topic, or say something that people may find interesting even if they don’t care about you personally. If your introductory CS programming course taught a non-procedural programming paradigm, you can talk about that.