Quantum dots: artificial atoms for quantum computing