References & Playgrounds
Your own machine is still the best place to practise — every lab example runs with one command and no packages. The tools below support that path at every level, and the browser notebooks close the loop when no toolchain is installed: read a section here, open a notebook there, and try the idea before moving on.
Playgrounds & Notebooks
Instant feedback without an installation. Paste, run, read the output, change one line, run again.
Run Julia in the Browser
| Tool | What it is | Best for |
|---|---|---|
| JuliaHub | Cloud notebooks plus a package search that indexes the whole General registry | Free notebooks and checking what a package does before installing it |
| Pluto.jl | Reactive notebooks: change one cell and everything that depends on it re-runs | Interactive exploration and reproducible teaching material |
| Pluto on Binder | Pluto notebooks hosted from a repository, with no local install | Sharing a notebook as a link |
| The REPL itself | ? for docstrings, ] for Pkg, ; for the shell | Everyday lookup — faster than any web search |
The REPL is listed as a playground deliberately: on a machine with Julia installed, ] add Example followed by ?Example beats switching to a browser, and the answer always matches the version you are running.
Official Documentation
The reference material other tutorials are derived from. Bookmark the first two.
| Resource | What it is | Read it for |
|---|---|---|
| The Julia Manual | The language specification, chapter by chapter | Types, methods, metaprogramming, performance |
| Base Library Reference | Every exported function in the standard library | Finding the function that already exists |
| Pkg Documentation | Environments, manifests, registries, artifacts | Reproducible environments and private registries |
| Style Guide | The community's naming and formatting conventions | Writing code other Julia programmers can read |
| Performance Tips | The concrete rules behind type stability and allocation | Making slow code fast, honestly |
The Test stdlib | Every assertion macro and test-set option | Building a suite that reports useful failures |
Free Courses & Books
Structured material, in the order worth attempting it.
| Course | Level | Notes |
|---|---|---|
| JuliaAcademy | Beginner to advanced | Official video courses, including the data science series |
| Julia Learning | Beginner | The official collection of free books, tutorials and workshops |
| QuantEcon lectures | Intermediate | Economics and numerical methods, written as executable lectures |
| A Concise Tutorial of Julia | Beginner | Short and example-driven; good as a second pass over the basics |
| Contributing to Julia | Advanced | How the language itself is developed — the deepest way to learn it |
Source Code to Study
Reading well-written Julia teaches faster than reading more tutorials. These repositories are worth an hour each.
| Repository | What to look for |
|---|---|
| JuliaLang/julia | The standard library: how Base is organised and how docstrings are written |
| JuliaData/DataFrames.jl | Column-oriented data structures, and splitting a large package into modules |
| SciML/DifferentialEquations.jl | How one interface dispatches to hundreds of solvers |
| JuliaLang/Pkg.jl | Environments, the resolver, and how a package manager is built |
| fonsp/Pluto.jl | Reactive computation: dependency analysis over a notebook |
| JuliaLang/Example.jl | The smallest complete package: manifest, tests, docs, CI |
Community & Help
Where to ask when you are stuck, and where the answers are already written.
| Place | Use it for |
|---|---|
| Julia Discourse | Questions of any size; search first, the archive is deep |
| Julia Slack | Live conversation, especially for library-specific questions |
| Stack Overflow — Julia tag | Well-posed, searchable questions with a minimal example |
| Julia issue tracker | Language bugs and design discussions — read before reporting |
| Julia Forem | Blog posts and longer explanations of techniques |
How to Choose & Next Steps
With this much material available, the risk is reading instead of writing. The plan below keeps the balance.
# A reading plan that keeps you coding
#
# 1. FINISH THE TRACK, IN ORDER
# Every lesson here has runnable examples; nothing is theoretical.
# Re-run roadmap/julia/demo/*.jl as you go — they are the small wins.
#
# 2. WRITE THE THREE STUDY PROJECTS
# Word frequency, task scheduler, epidemic simulator (samples.html).
# Type them; do not copy. Break them on purpose.
#
# 3. PICK ONE REAL PROBLEM
# Something you would otherwise do in a spreadsheet or a script.
# Small enough to finish, real enough that you care about the answer.
#
# 4. READ ONE GOOD PACKAGE
# Choose the library closest to your problem and read its source.
# Julia is readable, and the conventions you absorb are worth more
# than any style guide.
#
# 5. THEN GO BROAD
# JuliaAcademy for structure, Discourse for depth, and the manual
# for the answer when both are silent.
| If you want to… | Start with | Then |
|---|---|---|
| Analyse data | Data Science | DataFrames.jl source, then Makie for figures |
| Simulate a physical system | Scientific Computing | SciML tutorials, then ModelingToolkit |
| Make better decisions with a model | Optimization & JuMP | JuMP examples, then a real scheduling problem |
| Expose a computation as a service | Web & APIs | HTTP.jl examples, then a container with a health check |
| Ship a tool others can install | Deployment & Packaging | create_app, then a release tag and a changelog |
| Write fast, safe numeric code | Performance & Benchmarking | The official Performance Tips, measured with BenchmarkTools |
| Understand the language itself | Metaprogramming & Macros | The manual's macro chapter, then the Base sources |
The last suggestion is the one that matters: choose a problem you actually have. Every concept in this track was invented to solve a problem somebody had, and the fastest way to remember a concept is to need it.
Return to the Julia roadmap to track progress, or revisit any lesson: the sidebar on every page lists the full chapter outline.