
Ask HN: What are CS topics covered in school, that aren't learned in the wild? - __ralston3
I&#x27;m a self-taught dev with a solid understanding of a broad scope of CS topics. However, I&#x27;ve recently learned that some companies filter during the interview process for CS-grads <i>only</i> by asking topics that specific to CS in school, but aren&#x27;t necessarily learned in the wild. A good thread example is the one from yesterday about DP problems[1].<p>So what are some CS topics&#x2F;concepts that are covered in school, but <i>aren&#x27;t</i> learned necessarily as an Engineer at work.<p>1. https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=19396042
======
triska
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
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...](https://www.youtube.com/playlist?list=PLm3J0oaFux3aafQm568blS9blxtA_EWQv)

------
wmf
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
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
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
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](https://en.wikipedia.org/wiki/Introduction_to_Algorithms)

~~~
dmlittle
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
Sorting algorithms. I learned them in my first CS course 20 years ago and
never had a need to know them since.

------
segmondy
Most of the relevant ones.

algorithm & data structures.

algorithm analysis

OS/internals

compiler design

computer architecture.

discrete mathematics.

distributed systems.

------
3into10power5
Scaling a webservice. Understanding graphs.

