Hacker News new | ask | show | jobs
by lamerose 915 days ago
Preferable to doing the Javascript edition of SICP.
2 comments

Alas, the focus is on optimizing job placement at graduation, so intellectually engaging choices are lower priority. We’re in a situation where CS departments are incentivized to spend every year that a student is in school optimizing their ability to produce BFS or DFS in Python within 15 minutes.
Maybe I'm missing something, but it sounds like you're making a general statement from a very specific and personal situation?
Well, it's up to the reader to follow the implications. But the industry does hold sway in the design of university curricula, sometimes to the disappointment of academics, and this is nothing new.

For example, back in 2001, Dijkstra expressed his dismay at Java replacing a different functional programming language, Haskell, in UT Austin's introductory programming course. https://www.cs.utexas.edu/users/EWD/transcriptions/OtherDocs...

Also consider that MIT used the Scheme version of SICP as their introductory programming textbook for years, and it remains a classic, but nowadays MIT leans into Python for introductory programming courses.

You have been voted down, but this is 100% truth. I’d been a professional software developer for 10 years and programming since a young child when I stumbled across the MIT Scheme open course (this was nearly 10 years ago now). Learning Scheme as an exercise dramatically improved me as a software developer, as it is the near perfect teaching language. The fundamentals of most computer science concepts are so clearly laid out, with no distractions. I wish I’d had the exposure at a younger age!

MIT Scheme is pretty much useless as a practical language, vastly less useful than Python. Python is infinitely more powerful to actually “make things”. But this is not the point of University!

The academic languages are powerful for learning, and it is a huge shame that they are being replaced with “professionally relevant” languages.

Real software engineering is a drudgery of stitching together other people's libraries and APIs, responding to the product team's "can't we just...?" queries, and alphabetizing your HTML properties. College doesn't prepare you for that. Shiny happy Schemeland doesn't prepare you for that. It's like the old joke about Bill Gates and the beta version of hell.
> College doesn't prepare you for that. Shiny happy Schemeland doesn't prepare you for that.

I see no problem with that. That's not what university should be about. They're not supposed to be software dev bootcamps for companies.

Dijkstra was a great computer scientist who was also very generous with his expressions of dismay. You can find him expressing dismay over a great variety of topics not all of which have turned out to merit it in the long run.
This says nothing about whether or not this specific instance of dismay is warranted. All you've said is a man can't be right 100% of the time which I don't find very useful.
It's not specific and personal. Obviously it doesn't apply 100% but there is definitely a trend towards rote memorization and single language focus.
definitely a trend towards rote memorization and single language focus

What's some evidence of this trend you can think of?

I'd be interested in seeing an analysis that traces the programming language paths built into university curricula and how those paths have tended to change over the years. The weakening of theory components is also of interest. My sense is that the trends are real, based on what I've noticed and conversations with instructors in higher education, but I don't have an empirical dataset to support it.

A decent theoretical model can be extrapolated from Goodhart's law. Graduates' performance on programming and leetcode-style interviews is a measure that many stakeholders care about, so it's a target for university departments that would lose value as a measure of educational quality. As a CS department optimizes its performance on that measure, elements of the curriculum are reprioritized. It becomes okay for the department to sacrifice educational quality in order to enhance performance on the measure. What doesn't go directly into the measure, such as experience outside of a core programming language intended for programming interviews, gets chipped away over the years through market pressures as universities' graduates compete for relative performance on the measure. This is a theoretical model, but to me it's convincing.

Leetcode?
Sadly true - I majored in math in college and had no plans of going into a programming-heavy job, so I was able to take fun “applied” CS classes like a “language grand tour” or physically based rendering, but skip core classes with those pressures like algorithms etc. entirely.
Not a fan of Python, but it isn't too bad pedagogically speaking. JS on the other hand... I hope WASM can one day kill it, leave it obsolete, and have it forcefully deprecated like Flash.
Can you explain what you find bad about js ? I use typescript and I am honestly finding it awesome; and I am the type of person that coded in lisp for a long time.

We have lambdas, flexible structures, FP methods (map, filter, reduce...), can express recursion easily, we have ternary operators, array and object destructuring (const {a,b,...rest}=init()). We have a nice way to deal with asynchronicity. We have some kind of class system. And thanks to typescript we have a really great and expressive type system that's very cool and eases the job a lot.

Ihave been using guile extensively for a couple of years. It has destroyed writing recursive functions in other languages for me. There are no stack overflows in guile, and a recursive function won't fail until you have used all a avilable memory. This lets you write very elegant functions in places where the state is a tree or a linear data structure. Doing the same in python means having to actually deal with state. It just feels so unnecessary and error prone.