The project aims to study computational counting and sampling problems. Typical problems of this kind include the evaluation or estimation of expectations and probabilities from complicated, usually high-dimensional, distributions. These distributions are the backbone of many probabilistic systems nowadays, and being able to evaluate and reason about them is of significant theoretical and practical importance. The focus of the project is mainly on the theoretical side, and the goal is to find algorithms to problems that have no efficient algorithm known yet. This objective is twofold: 1) to expand the design and analysis of the existing methods; and 2) to find alternative methods that are more favourable to the existing methods, such as Markov chain Monte Carlo. Moreover, in case a problem remain elusive even with significant effort, we also seek potential explanations from the theory of computational complexity for such apparent intractability.