logoalt Hacker News

chao-today at 3:20 AM4 repliesview on HN

In the early 2000's, I entered a university at the EXACT trough between the Dotcom Crash and the Web 2.0 Moment. In fact, I transferred from a lower-tier uni to a top-tier CS uni. At the time, they had still retained their "weed out" approach to intro CS (in Lisp) from the late 90's, hoping to keep kids from taking CS while thinking "I'll make a website and money will rain from the skies!"

My new uni completely rejected my previous uni's Intro CS curriculum. They forced me to retake their version: A Lisp-then-Java cycle that was a theoretical whiplash, which initially I resented. Who wants to re-take a class for topics they "already" learned?

By my second year, I saw the light. I understood the approach.

While my highschool friends at other unis had courses to learn {{topic}} and separate courses to learn {{language}}, the uni I was at had a policy of "languages are incidental" for most courses. Professors had a list of the languages that they would accept for projects. "Anything but Perl" was common, although "systems" courses required C. For every class with a required language, it was not taught during class. There would be an optional lab that you could attend to learn at least one of the languages allowed for the course. The expectation was that you could learn enough in two or three weeks before the first project kicked off, and the TAs really were there to help you figure it out (most courses had 20-30 students for 2-3 TAs).

The "bookend" intro courses that taught extreme FP and extreme OOP served as a forcing function that made me realize "Oh, languages really don't matter. Just pick up the details for the paradigm, and get on with the work."

As much as I resented having to "redo" an intro course cycle at first, I am forever grateful for the fearlessness that the overall experienced instilled in me.


Replies

tharkun__today at 3:36 AM

    For every class with a required language, it was not taught during class. 
This.

We did have the oblig "learn language X" course. Which used to be C and had just switched to Java at our uni. But it was just to learn a language.

The Operating System class used Minix in a VM to teach concepts. You were expected to just use a Minix vi (that was fun!) or somehow figure out yourself how to best use something outside while still having a fast enough feedback loop. Nobody taught us C (since we were already a Java language year. You were just expected to figure it out. Quite a bunch of people couldn't and literally quit CS entirely over that course. I loved it!). We had to add a memory compactification algorithm to Minix to pass the course. That was a fun learning experience! And made me appreciate modern (well, I guess this was like 25 years ago now lol!) operating systems.

Scripting languages course: Pick one and do a project and turn it in. That was it. (I turned in something I had written in Perl as a side-job for hire and got an A without doing any course work at all (except for the two initial attendance checked classes)

userbinatortoday at 4:50 AM

"Anything but Perl" was common

I would probably be the one to choose x86 Asm or APL... or even a mix of the two.

nextostoday at 4:20 AM

> languages really don't matter. Just pick up the details for the paradigm

True. The best programming books also reflect this ethos. Some people think Introduction to Functional Programming (1989) by Bird & Wadler is the best programming book ever.

The language-specific details (Miranda) are limited to a three-page appendix! The rest of the book is language agnostic, provided that your target language is functional.

whattheheckhecktoday at 3:37 AM

What's the largest project you've spearheaded with your knowledge?

show 1 reply