Theoretical neuroscience aims to understand the principle mechanisms of brain function using mathematical models. It develops concepts and insights that has been crucial for experimental design and data interpretation. The technical challenges it faces, such as analyzing nonlinear systems with broadly interacted units, are also relatable to other application scenarios of mathematical modeling. We will introduce classic models and results on the main topics of the field, including neural coding of sensory information, dynamics of neural circuits, decision making, memory, and learning. As a rapidly developing field with many open questions, we will also discuss the latest research in these topics. Experience in programming using python, Matlab, etc. is required. No prior knowledge of neurobiology is formally required but is encouraged, and we will introduce the necessary background in the course. Students without prerequisites should seek approval from the instructor to take the course.