In this project, we are developing a theoretical foundation and computational methods for discovering optimal cognitive strategies and sound principles for good decision making and clear thinking. As a first step, we have developed a meta-level reinforcement learning method for computing rational heuristics that make optimal use of the decision-makers finite time and limited cognitive resources. Moving forward, we will also apply program induction methods to find efficient and interpretable representations of those heuristics and general principles for good decision-making. Furthermore, we will model increasingly more realistic decision problems and find optimal ways to solve them.