Be comfortable converting from ANDs (set intersections ∩) to ORs (set unions ∪) and vice-versa. Recall De Morgan's laws! This conversion can occasionally come in handy for counting problems. For example, if it seems difficult to count
via some application of the product rule, try counting
via some application of the sum rule (inclusion-exclusion in the general case). Note: ¬ (NOT) denotes the complement of a set and |x| denotes the size of a set.
As a more concrete example, take a look at problem 1g on Group HW1. It asks for
the number of passwords with >= 1 lowercase letter AND >= 1 uppercase letter AND >= 1 numeral
which is hard to count directly. Instead, you should have counted
(the total number of passwords) - (the number of passwords with 0 lowercase letters OR 0 uppercase letters OR 0 numerals)
which is a much easier prospect (hint: i-e!). Using the following definitions:
L: "has >= 1 lowercase letter"
U: "has >= 1 uppercase letter"
N: "has >= 1 numeral"
you'll see that we can restate the conversion as
|set with L AND U AND N|
= |¬(set with (NOT L) OR (NOT U) OR (NOT N))|
= |universe| - |set with (NOT L) OR (NOT U) OR (NOT N)|
noting in the final step that the size of the complement of a set is merely the size of the universe minus the size of the set. (Likewise, the size of a set is equal to the size of the universe minus the size of the complement of the set.)
Remember, we probably don't intend for you to have to write out and count a billion sub-cases. If you find yourself doing this, consider trying to convert the problem to something more tractable, e.g. using De Morgan's laws.