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.
| Phase | Lessons | Milestone: after this phase you can… |
|---|---|---|
| 1. Foundations | Overview, Setup, Curriculum, Syntax | Compile and run an Ada program from a real crate |
| 2. Basic Constructs | Data Types, Expressions, Conditionals, Loops, Strings, Enumerations | Write single-file programs with safe typed logic |
| 3. Data & Logic | Arrays, Records, Access Types, Subprograms, Input/Output | Model real data with records and decompose problems into subprograms |
| 4. Modular Systems | Packages, Exceptions, Generics, Visibility | Build libraries whose interfaces the compiler enforces |
| 5. Advanced Paradigms | OOP, Contracts, Tasking, Standard Library | Design dispatching, provable, concurrent components |
| 6. Practice & Demos | Lab Examples, Study Projects, Open Source Projects | Read, run, and extend real Ada codebases |
| 7. Reference | References & Resources | Answer 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.