Ask HN: What are CS topics covered in school, that aren't learned in the wild?

I'm a self-taught dev with a solid understanding of a broad scope of CS topics. However, I've recently learned that some companies filter during the interview process for CS-grads only by asking topics that specific to CS in school, but aren't necessarily learned in the wild. A good thread example is the one from yesterday about DP problems[1].

So what are some CS topics/concepts that are covered in school, but aren't learned necessarily as an Engineer at work.

1. https://news.ycombinator.com/item?id=19396042

11 points | by __ralston3 1869 days ago

8 comments

  • triska 1869 days ago
    Logic programming is one such example. Prolog and its syntactic subset Datalog are taught as part of countless CS degrees throughout the entire world.

    In fact, logic in general is such an example. At least a basic treatment of propositional logic and predicate logic, computation, unification, resolution and sequent calculus is a common ingredient of CS degrees all around the world.

    Other common examples include probability theory, statistical tests and complexity theory, all of which are part of many CS degrees, both at the undergraduate and graduate level.

    In all these examples, organizations that need these skills tend to hire people that already have them at least to some degree, making it unlikely to encounter these topics at work for the first time.

  • hackermailman 1868 days ago
    Something that isn't easily learned in the wild is precision in communications. For example the few interviews I've had, each time they asked me to implement a solution to some problem, then continue to refine the solution to be more efficient while talking through my solution(s). At any moment when I mentioned some jargon like 'invariant' or 'accumulator' they would ask me to precisely define it, something which for me would be difficult to do without some academic background, just because I would be likely to give a weak definition or inaccurate methaphor and be corrected as the interviewers I had all had degrees and it showed, they were very precise with their communications. The more courses I complete, the more I realize how imprecise I (still) communicate. I learned later after being hired what they wanted was somebody who would not bluff their way through meetings, and had the ability to precisely explain solutions or have the ability to admit 'I'm not sure' since these outfits handled a lot of money and apparently, there are a lot of bluffers around in that industry that sink companies.

    ".. and here is a boolean condition that is true immediately before every evaluation of the loop guard, and due to preservation..."

    "Stop there and define preservation for us". "Stop there and define what an undecidable problem is".

    If you want a crash course in various undergrad theoretical compsci topics to help refine your communications like how to state something is true and then justify it, there is this good YouTube playlist https://www.youtube.com/playlist?list=PLm3J0oaFux3aafQm568bl...

  • wmf 1869 days ago
    Automata and regular languages, invariants and proofs, functional programming, recursion come to mind immediately.

    (Note that I'm not interested in bikeshedding about how a small fraction of highly motivated programmers have learned these things outside of formal education.)

    • SamReidHughes 1868 days ago
      Recursion should be off that list, or at least it takes "necessarily" to a farther percentage than anything else here. Tons of engineers teach themselves that independently. In high school.
  • externalreality 1869 days ago
    Famous quote by Einstein:

    "Education Is What Remains After You Have Forgotten Everything You Learned In School"

    I don't remember the fine details of anything I've learned in school that I don't use on a daily basis yet the confidence of knowing that I studied and passed the exams is invaluable. I can go back and re-learn things if the need arises knowing that an expert once agreed with my understanding. That is invaluable.

    Basically, if this your attempt to make yourself feel better about not having a degree, why not just go get one - there are affordable schools out there that offer nice programs. You may learn something in the process and meet new people.

    But, in reality. Do you really NEED a degree to pass a little theory quiz (or for anything else for that matter) -- no you don't -- your brain works the same way with or without a degree.

  • a-saleh 1868 days ago
    T.b.h. these two were often dis-joint. Applicable skills learned in the wild and the ones learned in CS classes can have little in common. I would say they are almost orthogonal.

    But for the most white-board style algorithm questions I have heard about, it would mostly be covered by "Introduction to Algorithms" from MIT press. For overview of chapters you could look on wiki [1]

    There might be more. But I actually liked that book :-)

    [1] https://en.wikipedia.org/wiki/Introduction_to_Algorithms

    • dmlittle 1866 days ago
      For those that haven't heard or read "Introduction to Algorithms" be aware that it is not necessarily just an _intro_ book. It covers a lot of material that comprises of several classes.
  • rajacombinator 1868 days ago
    Sorting algorithms. I learned them in my first CS course 20 years ago and never had a need to know them since.
  • segmondy 1869 days ago
    Most of the relevant ones.

    algorithm & data structures.

    algorithm analysis

    OS/internals

    compiler design

    computer architecture.

    discrete mathematics.

    distributed systems.

  • 3into10power5 1869 days ago
    Scaling a webservice. Understanding graphs.