Skip to content

QuantEcon/cbc_workshops

Repository files navigation

Central Bank of Chile Scientific Computing Workshops

This is the homepage for the QuantEcon scientific and high performance computing workshops to be held at the Central Bank of Chile in September 2022. Binder

Instructors:

  • John Stachurski (Australian National University, Co-founder of QuantEcon)
  • Pablo Winant (CREST and ESCP Business School, lead developer of dolo

The languages of instruction are Python and Julia. Instruction will draw on, but not be limited to, the

Format

The schedule is

  • September 20th - 23rd: Scientific computing with Python
  • September 24th - 25th: Weekend break
  • September 26th - 27th: Scientific computing with Julia

The format of each day will be

  • 08:30 - 10:30: Lecture
  • 10:30 - 11:00: Coffee Break
  • 11:00 - 13:00: Practice Sessions
  • 13:00 - 14:30: Lunch (at Central Bank offices)
  • 14:30 - 16:00: Office hours

Prerequisites

All participants should bring laptop computers. If possible, participants should bring laptops with the ability to install open source software.

For those without such permissions, a cloud computing option will be provided.

The courses assume knowledge of the fundamentals of linear algebra, analysis, optimization and probability.

Course 1 Topics

John Stachurski will lead sessions on the following topics

  • Python for scientific computing
  • NumPy array operations on the CPU
  • Introduction to the Numba just-in-time (JIT) compiler
  • Application: Markov chains, time series models and distribution dynamics
  • Application: Search and optimal stopping
  • Application: Asset pricing
  • Application: Dynamic programming
  • Application: Default cascades in financial networks
  • Parallelization on the CPU
  • Parallelization on the GPU via CUDA
  • Automatic differentiation and GPU computing with JAX

Pablo will lead sessions on the following topics:

  • Introduction to deep learning methods

Julia Topics

Pablo will lead sessions on the following topics:

  • Introduction to the Julia language
  • Types, multiple dispatch and the Julia JIT compiler
  • Structural models in Julia
  • Perturbation methods
  • Time-iteration variants
  • Global solution techniques and occasionally binding constraints models
    • "improved" algorithms
    • multistep problems and endogenous grids
    • dimensionality reduction (*)
  • Heterogeneous agent models (*)
  • Parallel computing in Julia (*)
  • Performance optimization (*)

*: time-permitting