Setup

What this course assumes

You should be comfortable with matrix multiplication, inner products, eigenvalues of real symmetric matrices, and the distinction between a feasible point and an optimum. You should also be able to read ordinary Julia functions, loops, arrays, and assertions.

Prior knowledge of semidefinite programming, conic duality, JuMP, or an SDP solver is not assumed. SDP-specific Julia appears where the mathematics first needs it.

Install and verify

Install Julia 1.12.7, the version pinned by Manifest.toml, and Quarto. From the project root:

julia --project=. -e 'using Pkg; Pkg.instantiate()'
julia --project=. -e 'using Pkg; Pkg.test()'

Run an exercise script with, for example:

julia --project=. learner/00_build_the_problem.jl

For normal editing, start the watched preview:

quarto preview

To render only the page you changed, pass its source path:

quarto render chapters/01-searching-for-a-cut.qmd

Run quarto render before deployment or after changing shared navigation, configuration, or styling.

The first solver call compiles several Julia packages and is noticeably slower than subsequent calls. The optimization problems themselves contain only a few rows or columns.