Source: cirosantilli/computer-science

= Computer science
{wiki}

A branch of <mathematics> that attempts to prove stuff about <computers>.

Unfortunately, all <software engineers> already know the answer to the useful theorems though (except perhaps notably for <cryptography>), e.g. all programmers obviously know that iehter <p versus NP problem>[P != NP] or that this is <independence (mathematical logic)>[unprovable or some other "for all practical purposes practice P != NP"], even though they don't have proof.

And 99% of their time, software engineers are not dealing with mathematically formulatable problems anyways, which is sad.

The only useful "computer science" subset every programmer ever needs to know is:
* for arrays: <dynamic array> vs <linked list>
* for <associative array>: <binary search tree> vs <hash table>. See also https://stackoverflow.com/questions/6147242/heap-vs-binary-search-tree-bst/29548834#29548834[Heap vs Binary Search Tree (BST)]. No need to understand the algorithmic details of the hash function, the <NSA> has already done that for you.
* don't use https://en.wikipedia.org/wiki/Bubble_sort[Bubble sort] for sorting
* you can't parse HTML with regular expressions: https://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454[] because of <formal language theory>

Funnily, due to the <formalization of mathematics>, <mathematics> can be seen as a branch of computer science, just like computer science can be seen as a branch of Mathematics!