Capstone Projects
A command-line to-do manager or text adventure storing data in JSON (JSON3.jl), with argument parsing (ArgParse.jl or Comonicon.jl).
Project 1 — Text adventure / CLI tool (beginner)
A command-line to-do manager or text adventure storing data in JSON (JSON3.jl), with argument parsing (ArgParse.jl or Comonicon.jl). *Concepts: strings, Dicts, structs, file I/O, error handling.*
Project 2 — Data analysis report (beginner/intermediate)
Load a public dataset with CSV.jl, clean and aggregate with DataFrames.jl, visualize with Makie/AlgebraOfGraphics, and publish a Pluto or Quarto report. *Concepts: DataFrames, statistics, plotting, reproducibility.*
Project 3 — Geometry & physics library (intermediate)
A small package with abstract Shape hierarchy, parametric types, operator overloading for vectors, unit support via Unitful.jl, full tests and Documenter docs. *Concepts: types, dispatch, interfaces, package development.*
abstract type Shape{T<:Real} end
struct Circle{T} <: Shape{T}; r::T; end
struct Rect{T} <: Shape{T}; w::T; h::T; end
area(c::Circle) = π * c.r^2
area(r::Rect) = r.w * r.h
perimeter(c::Circle) = 2π * c.r
perimeter(r::Rect) = 2(r.w + r.h)
total_area(shapes::AbstractVector{<:Shape}) = sum(area, shapes)
total_area([Circle(1.0), Rect(2.0, 3.0)])Project 4 — N-body / heat-equation simulation (advanced)
Simulate gravitational N-body dynamics or a 2-D heat equation; optimize for zero allocations, multithread it, port the kernel to GPU with KernelAbstractions, and animate the result. *Concepts: performance, threads, GPU, visualization.*
Project 5 — Optimization & scheduling (advanced)
Model a production-planning or vehicle-routing problem with JuMP + HiGHS; build a small web API (Oxygen.jl) that returns optimal plans as JSON. *Concepts: JuMP, modeling, web services.*
Project 6 — Scientific ML (advanced)
Fit a neural ODE / universal differential equation to time-series data with DifferentialEquations.jl + Lux.jl + Optimization.jl; compare with a pure mechanistic model. *Concepts: SciML, AD, optimization, ML.*
Project 7 — Distributed Monte Carlo pricing engine (expert)
Price exotic options with Monte Carlo across threads and distributed workers; reproducible RNG streams; benchmark scaling; deploy with PackageCompiler. *Concepts: parallelism, randomness, performance, deployment.*
Project 8 — Your own DSL (expert)
Create a macro-based DSL (e.g., a state-machine or unit-checked physics DSL) that expands to efficient Julia code; test with @macroexpand. *Concepts: metaprogramming, macros, generated code.*