Mathematics

   Mathematics (also math or maths, from Greek mathematicos, learned) is the
   best [1]science (yes, it is a formal science), which deductively deals
   with [2]numbers and other [3]abstract structures with the use of pure
   [4]logic, in as rigorous and objective way as possible. In fact it's the
   only true science that can actually prove things thanks to its tool of
   mathematical [5]proof (other sciences may only disprove or show something
   to be very likely). It is immensely important in [6]programming and
   [7]computer science. Mathematics is possibly the intellectually most
   difficult field to study in depth, meant for the smartest people; the
   difficulty, as some mathematicians themselves say, comes especially from
   the extremely deep abstraction (pure mathematics often examines subjects
   that have no known connection to reality and only exist as a quirk of
   logic itself). It is said that mathematics is the only universal
   [8]language in our universe -- if we ever get in contact with an
   intelligent alien civilization, mathematics is likely to be used for
   communication. While most people only ever learn basic algebra and some
   other mechanical operations that are necessary for mathematics, true
   mathematics is not about blindly performing calculations, it is a creative
   discipline that constructs [9]proofs from basic [10]axioms, something that
   can frequently be extremely hard to do.

   Some see math not as a science but rather a discipline that develops
   formal tools for "true sciences". The reasoning is usually that a science
   has to use [11]scientific method, but that's a limited view as scientific
   method is not the only way of obtaining reliable knowledge. Besides that
   math can and does use the principles of scientific method --
   mathematicians first perform "experiments" with numbers and generalize
   into [12]conjectures and later "strong beliefs", however this is not
   considered [13]good enough in math as it actually has the superior tool of
   [14]proof that is considered the ultimate goal of math. I.e. math relies
   on [15]deductive reasoning (proof) rather than less reliable [16]inductive
   reasoning (scientific method) -- in this sense mathematics is more than a
   science.

   Mathematics as a whole is constructed with [17]logic from some basic
   system -- historically it was based e.g. on [18]geometry, however modern
   mathematics has since about 19th century been built on top of [19]set
   theory, i.e. all thing such as [20]numbers, [21]algebra and [22]functions
   are all derived from just the existence of [23]sets and [24]classes and
   some basic operations with them. Specifically Zermelo–Fraenkel set theory
   with [25]axiom of choice (ZFC, made in the beginning of 20th century) is
   mostly used nowadays -- it's a theory with 9 [26]axioms that we can
   consider kind of [27]"assembly" of mathematics.

   [28]Soydevs, coding monkeys (such as webdevs) and just retards in general
   hate math because they can't understand it. They think they can do
   programming without math, which is just ridiculous. This delusion stems
   mostly from these people being highly incompetent and without proper
   education -- all they've ever seen was a shallow if-then-else [29]python
   "[30]coding" of baby programs or point-and-click "coding" in gigantic
   [31]GUI frameworks such as [32]Unity where everything is already
   preprogrammed for them. Of course this is not completely their fault (only
   partially), the [33]shitty system just produces robot slaves who can't
   really think, just do some task to blindly produce goods for the economy
   etcetc. By Dunning–Kruger they can't even see how incompetent they are and
   what real programming is about. In reality, this is like thinking that
   being able to operate a calculator makes you a capable mathematician or
   being able to drive a car makes you a capable car engineer. Such people
   will be able to get jobs and do some repetitive tasks such as web
   development, [34]Unity game development or system administration, but they
   will never create anything innovative and all they will ever make will be
   ugly, [35]bloated [36]spaghetti solution that will likely do more harm
   than good.

   On the other hand, one does not have to be a math [37]PhD in order to be a
   good programmer in most fields. Sure, knowledge and overview of advanced
   mathematics is needed to excel, to be able to spot and sense elegant
   solutions and to innovate in big ways, but beyond these essentials that
   anyone can learn with a bit of will it's really more about just not being
   afraid of math, accepting and embracing the fact that it permeates what we
   do and studying it when the study of a new topic is needed.

   The power of math is limited because the power of [38]logic itself is
   limited. In 1930s this actually caused a big crisis in mathematics,
   connected to so called Hilbert's program which aimed to establish a
   completely "bulletproof" system to be the foundation of mathematics,
   however in 1932 [39]Kurt Godel mathematically proved, with his
   [40]incompleteness theorems, that (basically) there are logical truths
   which math itself can never prove, and that, put in a simplified way,
   "math itself cannot prove its own consistency", which of course killed
   Hilbert's program; since then we simply know we will never have a
   logically perfect system. This is related to the limited power of
   [41]computers due to [42]undecidability (there are problems a computer can
   never decide), proven by [43]Alan Turing.

   What is mathematics really about? Elementary school dropouts think math is
   about calculations and [44]numbers -- sure, these are a big part of it but
   mathematicians mostly give a different answer. The core and [45]art of
   high mathematics is constructing [46]proofs, but it also involves
   exploration, a common theme is e.g. [47]generalization: mathematicians
   love to take already existing knowledge and patterns and extend them into
   other domains, find more general rules of which currently known rules are
   only a [48]special case. By this they are discovering universal laws and
   find that even seemingly unrelated concepts may have a lot in common.

Overview

   Following are some math areas and topics which a programmer should be
   familiar with:

     * basics (high-school level math): arithmetic, algebra, expressions,
       basic [49]functions, [50]equations, geometry,
       [51]trigonometry/goniometry, systems of linear equations, quadratic
       equations, [52]complex numbers, [53]logarithms, [54]analytic geometry
       (many problems are equivalent to relationships of shapes in N
       dimensional spaces), [55]polynomials (used in many areas, e.g. error
       correction codes in networking), ...
     * advanced notation: ability to understand the notation that's often
       used in papers etc. (the big sigma for sum, calculus notation etc.)
     * formal [56]logic: computers are based on [57]Boolean logic, knowing
       basic formulas and theorems here is crucial (e.g. the completeness of
       [58]NAND or [59]De Morgan's laws), formal logic is also just generally
       used in formal texts, one should know about predicate vs propositional
       logic etc.
     * [60]proofs: core of high level mathematics, one should know the basic
       proof techniques (direct, [61]contradiction, [62]induction, ...).
     * [63]linear algebra: aka "vectors and matrices", essential in almost
       every field ([64]graphics, [65]machine learning, ...).
     * [66]calculus and [67]differential equations: just essential for
       advanced math and many fields (graphics, machine learning,
       [68]electronics, physics, any optimization, ...).
     * theoretical [69]computer science: [70]computational complexity (very
       important), [71]computability, [72]formal languages, computational
       models ([73]automata, [74]Turing machines, ...), ...
     * [75]graph theory: generally useful tools, especially important e.g. in
       networks or indexing structures in [76]databases.
     * [77]number and [78]set theory: [79]sets and operations with them
       (basis of all mathematics), [80]classes, sets of numbers ([81]natural,
       [82]rational, [83]real, [84]complex, ...), [85]prime numbers
       (important e.g. for [86]cryptography, [87]quantum computing, ...), ...
     * discrete math: basic structures such as [88]groups and [89]fields,
       [90]abstract algebras and the properties of these structures.
     * [91]signal processing: [92]Fourier transform and other integral
       transforms (important e.g. for [93]compression and analysis of
       signals), [94]aliasing, filter theory, ...
     * [95]numerical methods: for simulations and [96]approximations of
       solutions to problems we can't solve exactly.
     * [97]probability/statistics: encountered practically everywhere but
       very important e.g. in [98]cryptography.
     * other: things important in specific fields and/or other weird stuff,
       e.g. [99]topology, [100]quaternions (graphics, physics), [101]lambda
       calculus, [102]game theory, [103]fractal geometry, ...

See Also

     * [104]knowability
     * [105]logic
     * [106]science
     * [107]thrembo

Links:
1. science.md
2. number.md
3. abstraction.md
4. logic.md
5. proof.md
6. programming.md
7. compsci.md
8. language.md
9. proof.md
10. axiom.md
11. scientific_method.md
12. conjecture.md
13. good_enough.md
14. proof.md
15. deduction.md
16. induction.md
17. logic.md
18. geometry.md
19. set_theory.md
20. number.md
21. algebra.md
22. function.md
23. set.md
24. class.md
25. axiom_of_choice.md
26. axiom.md
27. assembly.md
28. soydev.md
29. python.md
30. coding.md
31. gui.md
32. unity.md
33. capitalism.md
34. unity.md
35. bloat.md
36. spaghetti.md
37. phd.md
38. logic.md
39. godel.md
40. incompleteness.md
41. computer.md
42. undecidability.md
43. turing.md
44. number.md
45. art.md
46. proof.md
47. generalization.md
48. special_case.md
49. function.md
50. equation.md
51. trigonometry.md
52. complex_number.md
53. log.md
54. analytic_geometry.md
55. polynomial.md
56. logic.md
57. boolean.md
58. nand.md
59. de_morgan.md
60. proof.md
61. contradiction.md
62. induction.md
63. linear_algebra.md
64. graphics.md
65. machine_learning.md
66. calculus.md
67. differential_equation.md
68. electronics.md
69. compsci.md
70. computational_complexity.md
71. computability.md
72. formal_language.md
73. automaton.md
74. turing_machine.md
75. graph.md
76. database.md
77. number.md
78. set.md
79. set.md
80. class.md
81. natural_number.md
82. rational_number.md
83. real_number.md
84. complex_number.md
85. prime.md
86. cryptography.md
87. quantum.md
88. group.md
89. field.md
90. abstract_algebra.md
91. signal_processing.md
92. fourier_transform.md
93. compression.md
94. aliasing.md
95. numerical.md
96. approximation.md
97. probability.md
98. cryptography.md
99. topology.md
100. quaternion.md
101. lambda_calculus.md
102. game_theory.md
103. fractal.md
104. knowability.md
105. logic.md
106. science.md
107. thrembo.md