Course notes for CS228: Probabilistic Graphical Models.
Switch branches/tags
Nothing to show
Clone or download
Latest commit 60ad497 Oct 4, 2018
Failed to load latest commit information.
_data First commit Jan 10, 2017
_includes kuleshov links changed to ermongroup Jan 10, 2017
_layouts First commit Jan 10, 2017
_plugins First commit Jan 10, 2017
_sass First commit Jan 10, 2017
assets/img merge chow liu Mar 23, 2018
css merge chow liu Mar 23, 2018
docs added docs back Jul 19, 2018
extras changed left to right Jul 19, 2018
fonts First commit Jan 10, 2017
inference fixed a typo? Oct 2, 2018
learning merge dirichlet Mar 23, 2018
preliminaries Merge pull request #132 from kirthivaasan/master Jul 21, 2018
representation Clarify I-Maps Mar 23, 2018
.gitignore First commit Jan 10, 2017
LICENSE merge with upstream Jan 18, 2017
Makefile html update Apr 28, 2017 Debugging pull request Jul 19, 2018
Rakefile merge chow liu Mar 23, 2018
_config.yml First commit Jan 10, 2017 Debugging pull request Jul 19, 2018


These notes form a concise introductory course on probabilistic graphical models. They are based on Stanford CS228, taught by Stefano Ermon, and have been written by Volodymyr Kuleshov, with the help of many students and course staff.

This course starts by introducing graphical models from the very basics and concludes by explaining from first principles the variational auto-encoder.

The compiled version is available here.


This material is under construction! Although we have written up most of it, you will probably find several typos. If you do, please let us know, or submit a pull request with your fixes via Github.

The notes are written in Markdown and are compiled into HTML using Jekyll. Please add your changes directly to the Markdown source code. In order to install jekyll, you can follow the instructions posted on their website (

Note that jekyll is only supported on GNU/Linux, Unix, or macOS. Thus, if you run Windows 10 on your local machine, you will have to install Bash on Ubuntu on Windows. Windows gives instructions on how to do that here and Jekyll's website offers helpful instructions on how to proceed through the rest of the process.

To compile Markdown to HTML (i.e. after you have made changes to markdown and want them to be accessible to students viewing the docs), run the following commands from the root of your cloned version of the repo:

  1. rm -r docs/
  2. jekyll serve # This should create a folder called _site. Note: This creates a running server; press Ctrl-C to stop the server before proceeding
  3. mv _site docs # Change the name of the _site folder to "docs". This won't work if the server is still running.
  4. git add file_names
  5. git commit -am "your commit message describing what you did"
  6. git push origin master

Note that if you cloned the ermongroup/cs228-notes repo directly onto your local machine (instead of forking it) then you may see an error like "remote: Permission to ermongroup/cs228-notes.git denied to userjanedoe". If that is the case, then you need to fork their repo first. Then, if your github profile were userjanedoe, you would need to first push your local updates to your forked repo like so:

git push master

And then you could go and submit the pull request through the GitHub website.