Robust Computing with Nano-scale Devices