Live data from Hacker News

Computer science courses that don't exist, but should (2015)

prog21.dadgum.com

281–290 of 308 posts

Re: Computer science courses that don't exist, but should (2015)

#281

Earlier quoted context omitted.

Ok simple question. Have a method called increment(n) on an object called tracker. It’s used to increment tracking id values. I want to reuse the logic of increment(n) inside another object called childHeight to increment height values. Can I import the method and reuse it inside another object? No. I can’t. But if increment was a pure function thats like this increment(c, n) then I can move it anywhere. That is what…

There are multiple ways to handle that. Class Number { static Int inc(Int n) { return n+1 } } import static Number.inc Class Tracker { Integer height = 0; incHeight() { this.height = inc(this.height) } } class Tracker extends Numbers { Integer height = 0; incHeight() { this.height = this.inc(this.height) } } Or interface Number { default Int inc(Int n) { return n+1 } } class Tracker implements Numbers { Integer heigh…

Do you see the problem? What you wrote is the problem with oop. Gotta tear your whole program apart and rewrite it. You had to create new things and rewrite your methods.

With functional you don’t rewrite. You recompose what you already have.

It means oop is not modular. You didn’t create modules that can be reused. Nothing could be reused so you had to reconfigure everything.

Re: Computer science courses that don't exist, but should (2015)

#282
post #267

> PSYC 4410: Obsessions of the Programmer Mind Identify and understand tangential topics that software developers frequently fixate on: code formatting, taxonomy, type systems, splitting projects into too many files. Includes detailed study of knee-jerk criticism when exposed to unfamiliar systems. Each class would "just" study a hackernews thread in depth.

Going by HN preferences, I'd also add "in-depth typography" and "medieval books" for some reason.

Also gut microbiome, theories about diet and exercise grounded in things other than thermodynamics and moving more, and how things ought to be taught in school.

Re: Computer science courses that don't exist, but should (2015)

#283
post #200

Earlier quoted context omitted.

I spent my teens explaining to my mum that main memory (which used to be 'core', she interjected) was now RAM, a record was now a row, a thin client was now a browser, PF keys were now just function keys. And then from this basis I watched Windows Forms and .NET and all the iterations of the JDK and the early churn of non-standardized JavaScript all float by, and thought, 'hmm.'

Evolution is a gradual thing. Branches don't have to innovate, they only have to survive.

True, but these core concepts are very cyclical. Every 7ish years there’s a new coat of paint on an architecture that was invented at Xerox PARC or before.

Re: Computer science courses that don't exist, but should (2015)

#284
post #45

I would add debugging as a course. Maybe they should teach this but how to dive deep into figuring out how to learn the root cause of defects and various tools would have been enormously helpful for me. Perhaps this already exists

The Debugging Book: https://news.ycombinator.com/item?id=45489625

Re: Computer science courses that don't exist, but should (2015)

#286
post #168

CSCI 3210: Modern text encoding and processing Learn unicode and utf-8. Unlearn the 1 char = 1 byte concept Not only encoding/decoding but searching and sorting is also different. We may also cover font rendering, unicode modifiers and emoji. They are so common and fundamental but very few understand them.

Handling text is a minefield. UTF-8 is great but when you get into graphemes, there's basically no way to handle them properly unless you write some code to generate graphene recognition based off the spec which is rather large and continuously updated.

Same for font rendering, there is a reason why harfbuzz is used everywhere. Getting an 80% working renderer is easy but the remaining 20% can take years.

It really "handling text correctly"should be a masters, and I'd sign up in a heartbeat.

Re: Computer science courses that don't exist, but should (2015)

#287

Earlier quoted context omitted.

I'm well read on the topic and I've never heard it referred to as "a social or formal science." Where is this coming from?

I have thought that's the common definition and doesn't need much thought... My dictionary absolutely implies that, it even claims that all the sciences were split of from Philosophy and that a common modern topic of Philosophy is the theory of science. The point of Philosophy is to define truth in all aspects, how is that not science? It's even in the name: "friend of truth". Philosophy is even more fundamental and…

[deleted]

Re: Computer science courses that don't exist, but should (2015)

#288
CSE 419: Resume-driven development. Develop strategies for injecting the latest buzzword tech even though you're performing maintenance for a 1990s PHP or Java 2 codebase that has no business case for it. Term project involves ripping out a reliable, fast server-side rendered app with fourteen megabytes of React that panics when a mosquito flicks its wings.

Re: Computer science courses that don't exist, but should (2015)

#289

There should be a course on Linux. Not your typical operating systems course where you write a toy OS and teach a bunch of theory, but rather a deep dive into various Linux subsystems, syscalls, tooling, etc.

Actually, I think it should be the inverse of that. A CS student should come into CS!01 after hacking for years as a teenager and know how to use something like Linux from a practical standpoint and then college course should be all about the theory and ideas. I remember when I was 10 or 12 or so hacking with my IBM 8086 and using basic, I accidentally "invented" the bubble sort. In fact, mine was extra slow and inef…

I think the reason going into music is that way because the industry is already hyper competitive as is, and the “selection” process for talent shifts earlier. Perhaps CS will go that way eventually.

Anyway, when I made the comment, I was thinking it should be an elective and intended for people who either aren’t that familiar with Linux or want to become even more comfortable with it. There are certainly plenty of such students in my experience, myself included when I was in college.

Also just to be clear, this shouldn’t be just about “being able to run Linux at home” level of material, but things like writing non trivial applications using Linux subsystems and being able to troubleshoot them.

Re: Computer science courses that don't exist, but should (2015)

#290

CSCI 3240: Ignoring Hype - How to ignore the latest platform/library/thing everyone is talking about on HN CSCI 3120: Novelty Driven Development - How to stay interested in your job by using the latest platform/library/thing everyone is talking about on HN even if it isn't actually necessary NB: CSCI 3120 cannot be taken at the same time as CSCI 3240 PSYC 4870: Meeting Techniques - mentioning problems before, during…

There should also be PSYC 5640: How to become a guru by reading the documentation everyone else is ignoring. Cannot be taken at the same time as PSYC 5630.
Post reply on HN