Techniques for Quantum Computing