In recent years, computer scientists and physicists have begun to discuss the possibility of a computer whose hardware utilizes quantum phenomena. There has developed a notion of a quantum algorithm, and examples are known of computational problems whose solution can be carried out in significantly less time by a quantum algorithm than by the currently best known traditional algorithm. In this course, students learn what constitutes a quantum algorithm. We proceed from single qubits, to multiple-qubit registers, and finally to higher level constructions such as the Quantum Fourier transform. The lecture part of the course culminates in the complete description and analysis of Schor's factoring algorithm. During the latter part of the class, each student makes an individual presentation.