We give an FPTAS and an efficient sampling algorithm for the high-fugacity hard-core model on bounded-degree bipartite expander graphs and the low-temperature ferromagnetic Potts model on bounded-degree expander graphs. The results apply, for example, to random (bipartite) ∆-regular graphs, for which no efficient algorithms were known for these problems (with the exception of the Ising model) in the non-uniqueness regime of the infinite ∆-regular tree. We also find efficient counting and sampling algorithms for proper q-colorings of random ∆-regular bipartite graphs when q is sufficiently small as a function of ∆. * University of Oxford, jenssen@maths.ox.ac.uk. † University of Oxford, keevash@maths.ox.ac.uk. Research supported in part by ERC Consolidator Grant 647678. ‡ University of Illinois at Chicago, math@willperkins.org. Research supported in part by EPSRC grant EP/P009913/1.1 is the hard-core partition function (also known as the independence polynomial in graph theory).A fully polynomial-time approximation scheme (FPTAS) is an algorithm that for every ε > 0 outputs an ε-relative approximation to Z G (λ) (that is, a numberẐ so that e −εẐ ≤ Z G (λ) ≤ e εẐ ) and runs in time polynomial in |V (G)| and 1/ε. An efficient sampling scheme is a randomized algorithm that for every ε > 0 runs in time polynomial in |V (G)| and 1/ε and outputs an independent set I with distribution µ alg so that µ G,λ − µ alg T V < ε.The computational complexity of the approximate counting and sampling problems for the hard-core model is well understood for bounded-degree graphs. For graphs of maximum degree at most ∆, when λ < λ c (∆) = (∆−1) ∆−1 (∆−2) ∆ , there is an FPTAS and an efficient sampling scheme due to Weitz [37]; whereas when λ > λ c (∆) both computational problems are hard: there is no polynomial-time algorithm unless NP=RP [34,35,15]. The value λ c (∆) is the uniqueness threshold of the hard-core model on the infinite ∆-regular tree [24].On the other hand, if we restrict ourselves to bipartite graphs, then the computational complexity of these tasks are open problems. The class #BIS is the class of problems polynomial-time equivalent to approximating the number of independent sets of a bipartite graph [13], and many interesting approximate counting and sampling problems have been shown to be #BIS-hard [18,10,16]. In particular, Cai, Galanis, Goldberg, Guo, Jerrum,Štefankovič, and Vigoda [9] showed that for all ∆ ≥ 3 and all λ > λ c (∆), it is #BIS-hard to approximate the hard-core partition function at fugacity λ on a bipartite graph of maximum degree ∆. Resolving the complexity of #BIS is a major open problem in the field of approximate counting.One direction for partial progress on any intermediate complexity class is to find subclasses of instances for which the problem is tractable (e.g. results showing that the Unique Games problem is tractable on expander graphs [1,28]). For #BIS, we would like to find subclasses of bipartite graphs on which we can efficiently approximate the number of independent sets or the hard-...