This paper describes a practical algorithm based on Monte Carlo simulation for the pricing of multi-dimensional American (i.e., continuously exercisable) and Bermudan (i.e., discretely-exercisable) options. The method generates both lower and upper bounds for the Bermudan option price and hence gives valid confidence intervals for the true value. Lower bounds can be generated using any number of primal algorithms. Upper bounds are generated using a new Monte Carlo algorithm based on the duality representation of the Bermudan value function suggested independently in Haugh and Kogan (2001) and Rogers (2001). Our proposed algorithm can handle virtually any type of process dynamics, factor structure, and payout specification. Computational results for a variety of multi-factor equity and interest rate options demonstrate the simplicity and efficiency of the proposed algorithm. In particular, we use the proposed method to examine and verify the tightness of frequently used exercise rules in Bermudan swaption markets.