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, we study both directed and undirected models, exact and approximate inference procedures including deterministic optimization-based and stochastic sampling-based methods. We also discuss various approaches to learning model from the data and time permitting discuss deep generative models as instances of graphical models.