For many aspects of software development an understanding of mathematics is not necessary, in other areas it is crucial. If you’ve read or discussed enough about software development you will come across mathematical formulas and notation that, without an understanding of some mathematics, is incomprehensible. This section attempts to provide resources for those interested in learning math utilized in software development.
Some Really Basic Basics
- Basic Math
- CK-12 – Offers free/open textbooks for K-12.
- Much Math
- Khan Academy – Includes courses on basic math, geometry, algebra, trigonometry, statistics, probability, precalculus, differential calculus, integral calculus, multivariable calculus, differential equations, linear algebra. If you like video/interactive format this is a great resource.
- Logarithms
- Introduction to Logarithms. Khan Academy.
- Introduction to Logarithms. Math is Fun.
From Teach Yourself Computer Science
The Mathematics for Computer Science section of Teach Yourself Computer Science recommends one cover the following topics:
- Logic
- Combinatorics and Probability
- Set Theory
- Graph Theory
- Number Theory (little)
- Linear Algebra (optional?)
Discrete Mathematics
- Math for Computer Science: Discrete Math. The University of Chicago.
- A fairly brief but helpful explanation of discrete mathematics which are used extensively in software development. Specific areas referenced include boolean algebra, propositional logic, induction, logic generally, recursion, recurrences, number theory, counting, probability, and graphs.
- Tom Leighton, Marten van Dijk. Mathematics for Computer Science. MIT, Fall 2010.
- An open course from MIT on “elementary discrete mathematics.” Includes textbook (excluding one chapter!), video lectures, assignments, etc. Covers mathematical definitions and proofs, applicable methods, formal logic notation, proof methods, induction, well-ordering, sets, relations, elementary graph theory, integer congruences, asymptotic notation, growth of functions, permutations and combinations, counting principles, discrete probability, and some on recursive definition, structural induction, state machines, invariants, recurrences, and generating functions.
- Single Variable Calculus is a prerequisite.
- Albert R. Meyer, Adam Chlipala. Mathematics for Computer Science. MIT, Spring 2015.
- Another open course from MIT, includes text, video lectures, etc. Covers fundamental concepts of mathematics (definitions, proofs, sets, functions, relations), discrete structures (graphs, state machines, modular arithmetic, counting), and discrete probability theory.
- A free version of the course is available for enrollment.
- Single Variable Calculus is a prerequisite.
- Another open course from MIT, includes text, video lectures, etc. Covers fundamental concepts of mathematics (definitions, proofs, sets, functions, relations), discrete structures (graphs, state machines, modular arithmetic, counting), and discrete probability theory.
Calculus
- David Jerison. Single Variable Calculus. MIT, Fall 2010.
- Prerequisites are high school algebra and trigonometry.
Writing Math
- Math uses lots of symbols that aren’t on our common keyboards. There are various ways of creating these symbols, using LaTeX is one of the better known methods. MathJax is a LaTeX implementation, below you’ll find some helpful resources on the topic.
- MathJax Basic Tutorial and Quick Reference (Math Meta StackExchange).
- Number Set Symbols in MathJax (Math Meta StackExchange).
- Real Number Symbol \R Not Working (TEX StackExchange).
- Sometimes you need to convert between MathML and LaTeX, you can use the demo on Wiris’ site, “Compatible with MathML and LaTeX” to convert from one to the other.
Some Common Symbols
- To show a vector use
$\vec{v}$
wherev
is the name of the vector. - To show a superscript, use
$^ss
, for example: $8^5$`. - Greek characters include beta:
$\beta$
. - Geometry
- Measured Angle:
$\measuredangle$
. - We can create a circle, e.g., for degrees, using $\circ$
- Measured Angle: