Proving Desargues' Theorem by Brute Force
Since Mathematica can calculate cross products, we can just introduce general homogeneous coordinates for the various points and let the computer do all the work.  Each vector is just a three-element list.  For example,

P:= {p1,p2,p3}
Q:= {q1,q2,q3}

There are two ways to get the cross product

Cross[P,Q]

P\[Cross]Q

In the second approach, you can either get the little x by typing [Escape key] cross {Escape key] or by doing File..Palettes..Basic Input and choosing the little x to the right (not the left) of the division sign.
If you want a dot product, use the period.

P.Q

We need two more points

X:= {x1,x2,x3}
 R:= {r1,r2,r3}

P' is collinear with X and P.  This means that a vector that represents it must lie in the subspace spanned by X and P.  We are free to choose the coefficient of either X or P to be 1, since multiplying the vector for P' by any non-zero constant leaves it as the same projective point.

P' = X + p×P

Do the same for Q' and R', but use := instead of = to suppress the output.

Q' := X + q×Q
R' := X + r×R

Now we can compute where line P'Q' intersects PQ

L = (P'\[Cross]Q')\[Cross](P\[Cross]Q)

Similarly for M and NN (N is a protected symbol)

M := (Q'\[Cross]R')\[Cross](Q\[Cross]R)
NN := (R'\[Cross]P')\[Cross](R\[Cross]P)

The points L, M, and NN are collinear if the point NN lies on the line determined by L and M.  But use "Simplify;" otherwise you will get an expression that is a couple of pages long but equal to zero.

Simplify[(L\[Cross]M).NN]

The theorem is proved. The proof would also have been valid if we had chosen P = {1,0,0} etc. as in Ryan, but since Mathematica does all the work there is no real advantage in doing this.
For homework, do the same sort of brute-force proof for Pappus's theorem. To get Mathematica, go to http://www.courses.fas.harvard.edu/software/mathematica/
but allow a day to get your password.