  We present StochasticPrograms.jl, a user-friendly and powerful open-source
framework for stochastic programming written in the Julia language. The
framework includes both modeling tools and structure-exploiting optimization
algorithms. Stochastic programming models can be efficiently formulated using
expressive syntax and models can be instantiated, inspected, and analyzed
interactively. The framework scales seamlessly to distributed environments.
Small instances of a model can be run locally to ensure correctness, while
larger instances are automatically distributed in a memory-efficient way onto
supercomputers or clouds and solved using parallel optimization algorithms.
These structure-exploiting solvers are based on variations of the classical
L-shaped and progressive-hedging algorithms. We provide a concise mathematical
background for the various tools and constructs available in the framework,
along with code listings exemplifying their usage. Both software innovations
related to the implementation of the framework and algorithmic innovations
related to the structured solvers are highlighted. We conclude by demonstrating
strong scaling properties of the distributed algorithms on numerical benchmarks
in a multi-node setup.
