- Lecturer: John Stachurski
- Dates: Mon Sept 11th -- Fri Sept 29th
- Mon: 8am--10am
- Wed: 9am--11am
- Fri: 9am--11am
This is an advanced course on dynamic programming with a heavy dose of computation. The course is based on the book Dynamic Programming, which is free to download (and forthcoming from Cambridge UP). Since the course is relatively advanced, I will skim chapters 1 ~ 3 and less advanced students who wish to take the course can read them more carefully in their own time.
Most of our focus will be on chapters 4 ~ 8. Chapter 10 will probably be omitted completely.
The lecture slides can be found in the slides
directory.
Assessment will consist of five assignments. All five are to be submitted as individual Jupyter notebooks to [email protected], with the following exact naming convention
`firstname_lastname_assignment_x.ipynb`
where x
is the assignment number.
All assignments must be in either Python or Julia. In some assignments the language and code libraries will be specified.
The schedule for the assignments is given below, in the syllabus.
Please note that you are encouraged to collaborate with a group of peers on the assignments --- otherwise you will probably find the volume is too high. (If you don't have anyone to collaborate with please tell me and I will try to match-make.) However, after collaborating, you can probably gain extra marks by adding personal finishing touches, such as cleaning, refactoring and documenting code, adding explanations between code blocks, squeezing out a bit more speed by modifying code, etc.
I am in office 4-117.
Office hours are 1pm -- 2pm Monday + Wednesday + Friday
You can set up appointments at other times via email [email protected].
- Intro to the course / housekeeping
- QuantEcon lecture: Writing Good Code
- Ch 0 slides
- Julia quick start (
julia_quickstart.ipynb
in notebooks folder) - Assignment 1: optimal savings with Julia (due Friday 15th Sept)
- Ch 1 slides --- highlights
- Vector and matrix norms
- Neumann series lemma
- Banach's fixed point theorem
- Job search: VFI
- Job search: Continuation value method
- Julia - Fortran - Python single thread horse race (
julia_numba_fortran_horse_race.ipynb
in notebooks folder) - Numba-based multithreading on the CPU (
numba_multithreading.ipynb
in notebooks folder)
- Numba - NumPy - JAX multithreading comparison (
numba_numpy_jax_horse_race.ipynb
in notebooks folder) - QuantEcon lecture: An Introduction to JAX
- Ch 2 slides --- highlights
- Convergence rates
- Nonnegative matrices
- Perron--Frobenius theorem
- Linear operators
- Assignment 2: Ergodicity (due Wed 20th Sept)
- Ch 3 slides
- Markov chains: foundations
- Discretization
- Valuation (constant discounting)
- Job search revisited
- Ch 4 slides
- QuantEcon lecture: An Asset Pricing Problem
- QuantEcon lecture: Newton's Method via JAX
- Assignment 3: Nonlinear asset pricing (due Wed 27th Sept)
- Ch 5 slides
- QuantEcon lecture: Optimal Investment
- Ch 6 slides
- Inventory SDD --- Julia version
- Ch 7 slides
- Assignment 4: Inventory SDD (due Monday 2nd October)
- Ch 8 slides