Graphical models are powerful probabilistic modeling tools. They can model the complex behavior of a large system of interacting variables through local relations specified using a graph. These probabilistic models represent the conditional dependencies between a subsets of variables in a compressed and elegant form. The framework of graphical models has achieved a remarkable success across a variety of domains, from near-optimal codes for communication to the state-of-the-art in combinatorial optimization; these models are widely used in bioinformatics, robotics, vision, natural language processing and machine learning. In this course, after introducing different families of graphical models and their modeling assumptions, we review exact and approximate inference including deterministic optimization-based and stochastic sampling-based methods. We also discuss various approaches to learning of the model from the data.