A major impediment of cellular automata (CA) stems from the difficulty of utilizing their complex behavior to perform useful computations. Recent studies by Packard and Mitchell et al. have shown that CAs can be evolved to perform a computational task. In this paper non-uniform CAs are studied, where each cell may contain a different rule, in contrast to the original, uniform model. We describe experiments in which non-uniform CAs are evolved to perform the computational task using a local, co-evolutionary algorithm. For radius r = 3 we attain peak performance values of 0.92 comparable to those obtained for uniform CAs (0.93–0.95). This is notable considering the huge search spaces involved, much larger than the uniform case. Smaller radius CAs (previously unstudied in this context) attain performance values of 0.93–0.94. For r = 1 this is considerably higher than the maximal possible uniform CA performance of 0.83, suggesting that non-uniformity reduces connectivity requirements. We thus demonstrate that: (1) non-uniform CAs can attain high computational performance, and (2) such systems can be evolved rather than designed.