index notation & Einstein summation
Index notation writes a tensor through its components with labelled slots, distinguishing upper indices (for vector / contravariant slots) from lower indices (for covector / covariant slots). A vector is v^i, a covector is w_i, a matrix or (1,1)-tensor is T^i_j, and a general (p,q)-tensor carries p upper and q lower indices. The placement encodes how each slot transforms under a change of basis.
The Einstein summation convention is a labor-saving rule: whenever the SAME index appears once up and once down in a term, you automatically sum over it, dropping the sigma. So v^i w_i means sum_i v^i w_i, and A^i_j v^j means sum_j A^i_j v^j. A repeated up-down index is called a dummy (it disappears); an unrepeated one is free (it survives in the result).
The convention is more than shorthand; it is a correctness check. A well-formed expression must have matching free indices on both sides of an equation, and every repeated index must appear exactly once up and once down. If you ever sum two upper indices, the convention flags it as illegitimate — a built-in warning that you have implicitly assumed a metric.
This is the everyday bookkeeping of multilinear algebra and the language physicists use for relativity. Operations become index manipulations: contraction is repeating an up-down pair, the tensor product is just writing indices side by side (T^i S^j), and the Kronecker delta delta^i_j or metric g_ij are the constant tensors that glue everything together.
A repeated up-down index is silently summed; the surviving free index gives the result's type.
Sanity rule: count free indices. In T^i_j v^j = w^i, the dummy j is summed away and the free index i matches on both sides — so the result is a vector, correctly. If free indices do not match, the equation is malformed.