Graphical models are powerful probabilistic modeling tools. They can model the complex behavior of systems of interacting variables through local relations specified using a graph. These probabilistic models represent the conditional dependencies between subsets of variables in a compressed and elegant form. The graphical models' framework has achieved remarkable success across various 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, and learning methods for complete and partial observations.