Truth tables for extremely long expressions One of the questions from my text book says to 
Write the truth table for the expression:
$$
p \vee ( \neg (((\neg p \vee q) \rightarrow q) \land p ))
$$
and state whether it is a tautology, contradiction or neither.
Please do not think I am asking you to do my work for me, but I don't understand how such a large expression can have a truth table that wouldn't take extremely long to write?
I understand how to write truth tables for smaller expressions such us 
$$
p \rightarrow \neg ( p \land q )
$$
Where the columns would look like this:
| $p$ | $q$ | $p \land q$ | $\neg (p \land q)$ | $p \rightarrow \neg (p \land q)$
And then I can fill p and q with T, T, F, F and T, F, T, F respectively and work out the values for the rest.
Regardless of being a much smaller expression, it still has 5 columns, and I was wondering if there was a better way to write the truth tables for larger expressions?

Hint: I would rewrite the expression to make it easier to evaluate. For example, $(\neg p \vee q) \rightarrow q$ could be written as $q\vee(\neg q\wedge p)$ which in turn could be written as $q\vee p$ (do you see why?).
You can continue to make similar simplifications.
