<p>I'm trying to reteach myself some long forgotten math skills. This is part of a much larger project to effectively "teach myself software development" from the ground up (the details are <a href="http://www.appscanadian.ca/archives/cs-101-introduction-to-computer-science/" rel="noreferrer">here</a> if you're interested in helping out).  </p>

<p>My biggest stumbling block so far has been math - how can I learn about algorithms and asymptotic notation without it??</p>

<p>What I'm looking for is some sort of "dependency tree" showing what I need to know. Is calculus required before discrete? What do I need to know before calculus (read: components to the general "pre-calculus" topic)? What can I cut out to fast track the project ("what can I go back for later")?</p>

<p>Thank!</p>

Here's how my school did it:
```
```
base:
    algebra
    trigonometry
    analytic geometry

track 1                       track 2               track 3
    calc 1                       linear algebra        statistics
    calc 2                       discrete math 1
    calc 3 (multivariable)       discrete math 2
    differential equations
```
```
The base courses were a prerequisite for everything, the tracks were independent and taken in order.
So to answer your specific question, only algebra is needed for discrete.  If you want to fast track, do one of these:
```
```
algebra, discrete
algebra, linear algebra, discrete (if you want to cover matrices first)
```
```
HTH...  It about killed me when I returned to school and took these, but I'm a much better programmer for it.  Good Luck!