Basic concepts in quantum error correction