The course introduces rational analysis and its application to a range of domains in cognitive science. The main goal of the course is to introduce principles which are central to current computational theories in a format that requires only minimal mathematical background. Introduction of novel principles is followed by a demonstration of the ways these principles can be used to address problems in cognitive science. The course is supported by programming exercises which provides a tool to test the ideas in practice. These exercises are designed to be accessible to students with limited programming experience.