Live data from Hacker News

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

prog21.dadgum.com

171–180 of 308 posts

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

#171
post #163

Unlearning object oriented programming I think OOP became popular because it feels profound when you first grasp it. There is that euphoric moment when all the abstractions suddenly interlock, when inheritance, polymorphism, and encapsulation seem to dance together in perfect logic. It feels like you have entered a secret order of thinkers who understand something hidden. Each design pattern becomes a small enlighten…

The great achievement of OOP is that it inspires such passion. In essence OOP is just, "hey, if you have a struct and a bunch of operations that operate on that struct, let's put the name of the struct and a dot in front of the names of those operations and you don't need to pass the struct itself as an argument" It beats me how either the high priests or its detractors get so worked up about it, even with the add-on…

These patterns have seen real use (not saying optimal) in the wild.

Of course we know today composition is better than inheritance, plain data structs are enough for most cases, and "parse, don't validate". but did people know it in 1990s?

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

#173
post #140

> CSCI 2100: Unlearning Object-Oriented Programming?? People in tech industry, seem to have no idea how the systems in the wild work. Enterprise Java runs the backbone of operations for all of large business organisations such as banks. It is just as grounded as MS Office is. It is object-oriented software that is running the bulk of production environments of the world. Who is going to maintain these systems for the…

Unlearning OOP does not necessarily involve forgetting abstraction and the concept of an object. "Unlearning OOP" involves freeing yourself from the notion that all programming should be designed as an object hierarchy. There is/was a tendency in object-oriented programming to consider that it is the only way Real Software™ is made. You tend to focus more on the architecture of your system than its actual features.

Notice the prerequisite to unlearning something is learning it first. I don't think anyone proposes that the concept of an object is useless.

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

#175
post #140

> CSCI 2100: Unlearning Object-Oriented Programming?? People in tech industry, seem to have no idea how the systems in the wild work. Enterprise Java runs the backbone of operations for all of large business organisations such as banks. It is just as grounded as MS Office is. It is object-oriented software that is running the bulk of production environments of the world. Who is going to maintain these systems for the…

"CSCI 2100: Unlearning Object-Oriented Programming" immediately caused me to disagree this one.

When I code in C, in the end, I usually miss the syntax for defining "objects/classes" (structs with functions and access controls), the syntax/notation that encapsulates/binds/groups the related state and its functions/API to define some specific concept/model == custom data type.

Of course OOP can be taken to extreme complexity and then lose its usefulness.

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

#176
post #109

One other course that all undergrads should take is Unix 101 Just the basics of unix (bash, cat , sed, awk) How to grep logs, tail files

Yes! Exactly that - basics of unix - was one of the first-semester courses in my comp sci degree. It has served me well ever since.

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

#177

Earlier quoted context omitted.

I recall seeing a project on github with a comment: Q: "Sooo... what does this do that Ansible doesn't?" A: "I've never heard of Ansible until now." Lots of people think they are the first to come across some concept or need. Like every generation when they listen to songs with references to drugs and sex.

Come on music is very much cross generational? I think software engineering have so many social problems to a level that other fields just don't have. Dogmatism, superstition, toxicity ... you name it.

"Dogmatism, superstition, toxicity"

You must not know any electricians. These behaviors are far from unique to one field.

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

#178
post #11

"CSCI 4020: Writing Fast Code in Slow Languages" does exist, at least in the book form. Teach algorithmic complexity theory in slowest possible language like VB or Ruby. Then demonstrate how O(N) in Ruby trumps O(N^2) in C++.

I imagine this is a class specifically about slow languages. Writing code that doesn't get garbage collected, using vectorized operations(numpy), exploiting jit to achieve performance greater than normal C, etc.

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

#179
post #152
post #77

Earlier quoted context omitted.

One of my childhood books compared bubble sort implemented in FORTRAN and running on a Cray-1 and quicksort implemented in BASIC and running on TRS-80. The BASIC implementation started to outrun the supercomputer at some surprisingly pedestrian array sizes. I was properly impressed.

To be fair, the standard bubble sort algorithm isn't vectorized, and so can only use about 5% of the power of a Cray-1. Which is good for another factor of about 5 in the array size.

A Cray-1 was still fast at non-vector code when new.

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

#180
“Never had one lesson.” Ferris Bueller

Self-taught Python, and PHP before that. The course I always wanted might be named, “Systems: static and flexible abstractions”

Which is an expression of the frustration I had trying to learn frameworks (I forgot I attempted to learn Drupal until I read this question), where I found it nearly impossible to ask questions on SO (a lot of ‘stay in your lane’ remarks).

And the frustrations I feel today when I try to reconcile my understanding of Python used in the ‘systems’ I created for CLI scripts, and the baffling brain fog I experience when trying to understand how someone else’s code works.

Post reply on HN