Ada: Curriculum

This track takes you from your first compiled program to designing concurrent, contract-checked Ada systems. This page lays out the learning path, explains what each phase builds toward, and tells you how to work through it.

The Learning Path

Twenty-seven lessons in seven phases. Each lesson's ideas rest on the previous phase — follow the order the first time through.

PhaseLessonsMilestone: after this phase you can…
1. FoundationsOverview, Setup, Curriculum, SyntaxCompile and run an Ada program from a real crate
2. Basic ConstructsData Types, Expressions, Conditionals, Loops, Strings, EnumerationsWrite single-file programs with safe typed logic
3. Data & LogicArrays, Records, Access Types, Subprograms, Input/OutputModel real data with records and decompose problems into subprograms
4. Modular SystemsPackages, Exceptions, Generics, VisibilityBuild libraries whose interfaces the compiler enforces
5. Advanced ParadigmsOOP, Contracts, Tasking, Standard LibraryDesign dispatching, provable, concurrent components
6. Practice & DemosLab Examples, Study Projects, Open Source ProjectsRead, run, and extend real Ada codebases
7. ReferenceReferences & ResourcesAnswer your own questions from primary sources

What Makes Ada Different

Three threads run through every phase, and recognizing them early pays off:

Types carry meaning

From Phase 2 on, you will not just use Integer — you will define Meters, Percent, Day_Of_Month. Ada treats distinct types as incompatible on purpose. Most bugs that plague C programs (unit confusion, out-of-range values, index errors) are type errors that Ada refuses to compile.

Interfaces are checked

Phase 4's packages and Phase 5's contracts both express the same idea: a promise written in the specification and verified by the toolchain. When you reach preconditions and postconditions you will recognize the pattern.

Concurrency is native

Phase 5's tasking chapter introduces tasks and protected objects as language constructs. This is rare among mainstream languages and is the reason Ada dominates real-time domains.

How to Work Through the Track

Type everything

Every lesson's examples exist as runnable files on the Lab Examples page. Read the lesson, then open the matching demo in the code viewer, type it out, compile it, and only then change one thing and compile again. The second compile — after your change — is where the learning happens.

Read the error messages

GNAT's diagnostics are among the best in the industry: they often show the exact declaration that clashed and why. Ada is deliberately strict; a rejected program is information, not an insult.

Finish with the reference

When a lesson leaves you curious — what exactly does Image return for an enumeration? — the References page links the free Ada 2022 Reference Manual. Searching the RM is a core professional Ada skill, and Phase 7 gives you the map to it.