# Math

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 that undergirds software development.

## 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, mathematical induction, logic generally, induction, recursion, recurrences, number theory, counting, probability, and graphs.
• Tom Leighton, Marten van Dijk. Mathematics for Computer Science. MIT, Fall 2010.
• An open course from MTI 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.
• 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.

• Scalars