In this work we describe, implement and analyse in detail a high-order fully discrete spectral algorithm for solving the Helmholtz equation exterior to a bounded (sound-soft, sound-hard or absorbing) obstacle in three space dimensions, with Dirichlet, Neumann or Robin (impedance) boundary conditions. Our algorithm may be thought of as a discrete Galerkin method, but it is also equivalent to a Nystrom method after a simple transformation. We test our algorithm with extensive computational experiments on a variety of three-dimensional smooth and non-smooth obstacles with conical singularities. Our tests include the computation of scattered and far fields induced by incident plane waves. Our method is shown to be very accurate for scattering from surfaces which are globally parameterised by spherical coordinates, and tests show that it performs very much better than several of the well-established fast algorithms for obstacle scattering on a range of such surfaces, even some which are non-smooth. Further, we prove superalgebraic convergence of the scattered and far fields obtained using our algorithm in the case of smooth scatterers. (C) 2004 Elsevier Inc. All rights reserved.