# Recommendations for learning basic probabilistic simulation

**URL:** https://discourse.julialang.org/t/recommendations-for-learning-basic-probabilistic-simulation/90508
**Category:** Probabilistic Programming
**Created:** [November 19, 2022, 5:14pm UTC](https://discourse.julialang.org/t/recommendations-for-learning-basic-probabilistic-simulation/90508 "2022-11-19T17:14:21Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![samerb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/samerb/32/9242_2.png) [@samerb](https://discourse.julialang.org/u/samerb)
#### Post date: [November 19, 2022, 5:14pm UTC](https://discourse.julialang.org/t/recommendations-for-learning-basic-probabilistic-simulation/90508/1 "2022-11-19T17:14:21Z")

</div>

I’m looking to learn how to do probabilistic simulations: both the math and the programming.  
Is there a good online course or tutorial for this in Julia (if not, just a good one for the math)?

Background: I have a rudimentary grasp of grad-level probability and have seen some very basic stuff about like Monte carlo simulation, Gibb’s sampling, rejection and importance sampling, but would be good to review and deepen my understanding of these concepts. I have never coded any of these things.

---

<div class="post-metadata">

### Author: ![dlakelan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dlakelan/32/8491_2.png) [@dlakelan](https://discourse.julialang.org/u/dlakelan)
#### Post date: [November 19, 2022, 10:32pm UTC](https://discourse.julialang.org/t/recommendations-for-learning-basic-probabilistic-simulation/90508/2 "2022-11-19T22:32:22Z")

</div>

There are kind of 3 layers to this.

1. Model building… ie. how to use/apply statistical/probabilistic programming
2. Probability Math: the language you’re speaking when you do 1.
3. Probabilistics Programming / Sampling: How to express 2 to a computer.

Which layer do you want to focus on first?

---

<div class="post-metadata">

### Author: ![samerb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/samerb/32/9242_2.png) [@samerb](https://discourse.julialang.org/u/samerb)
#### Post date: [November 19, 2022, 10:45pm UTC](https://discourse.julialang.org/t/recommendations-for-learning-basic-probabilistic-simulation/90508/3 "2022-11-19T22:45:38Z")

</div>

> There are kind of 3 layers to this.
> 
> 1. Model building… ie. how to use/apply statistical/probabilistic programming
> 2. Probability Math: the language you’re speaking when you do 1.
> 3. Probabilistics Programming / Sampling: How to express 2 to a computer.
> 
> Which layer do you want to focus on first?

I guess 3 mainly.

I would also be interested to use sampling to solve optimization problems involving expectations, but I guess I should probably start with just how to do sampling.

---

<div class="post-metadata">

### Author: ![dlakelan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dlakelan/32/8491_2.png) [@dlakelan](https://discourse.julialang.org/u/dlakelan)
#### Post date: [November 19, 2022, 11:16pm UTC](https://discourse.julialang.org/t/recommendations-for-learning-basic-probabilistic-simulation/90508/4 "2022-11-19T23:16:59Z")

</div>

Ok, there are two main pieces of software I would recommend you to learn. Turing.jl and Stan. Since you’re already a Julia user, I’d recommend you read up on the [Turing docs](https://turing.ml/stable/)

However, I’d also recommend you read the [Stan user manual](https://mc-stan.org/docs/2_30/stan-users-guide-2_30.pdf), it is basically a tremendous resource of ideas of how to do probabilistic programming.
