Nim is a statically typed system programming language that focuses on safety and performance. It is a third generation language with features inspired from high-level languages: Python, Ada, and Lisp. It was created by a team led by Andreas Rumpf from Germany and is now ready for production projects.
| # | NIM | Topic | Description |
|---|---|---|---|
| PHASE 1: FOUNDATIONS | |||
| 01 | Why Nim & Thinking in Nim | Origins and purpose: expressive syntax, static safety, and C-level performance. | |
| 02 | Toolchain, Environment & Tooling | Install Nim, choose an editor, and compile your first program. | |
| 03 | Statements, Expressions & Indentation | Significant indentation, expressions everywhere, comments, and identifiers. | |
| PHASE 2: TYPES & CONTROL | |||
| 04 | Types & the Type System | Static types, inference, ranges, distinct types, and safe conversions. | |
| 05 | Control Flow & Iteration | if, case, while, for, break and continue — every branch exhaustive. | |
| 06 | Procedures, Scopes & First-Class Procs | Parameters, overloading, default values, closures, and proc types. | |
| PHASE 3: DATA MODELLING | |||
| 07 | Objects, Methods & Inheritance | Tuples, objects, methods, inheritance, and dynamic dispatch. | |
| 08 | Enums, Sets & Variant Objects | Enums, sets, and variant objects with compile-time checked discriminators. | |
| 09 | Arrays, Sequences, Sets & Tables | Fixed arrays, seq[T], hash sets and tables, and their iteration protocols. | |
| 10 | Strings, Characters & Formatting | String and char types, interpolation, slicing, and the strutils toolbox. | |
| PHASE 4: ABSTRACTION & REUSE | |||
| 11 | Generics & Type Classes | Generic procs and types, constraints, and type classes that describe concepts. | |
| 12 | Modules & Packages | Modules, exports, private versus public, and packages managed by Nimble. | |
| 13 | Iterators & Closures | Inline and closure iterators, and how a for loop is desugared. | |
| 14 | Templates & Macros | Templates, macros, AST manipulation, and compile-time code generation. | |
| PHASE 5: SAFETY & PERFORMANCE | |||
| 15 | Errors & Exceptions | Exceptions, custom error types, try/finally, defer, and Option. | |
| 16 | Memory Management & ARC/ORC | Value versus reference semantics, ARC/ORC, and move and sink parameters. | |
| 17 | Concurrency, Threads & Async | Threads, channels, async/await, and how Nim keeps races out of reach. | |
| 18 | C/FFI Interop & Foreign Libraries | importc, header pragmas, exporting to C, and static libraries. | |
| PHASE 6: ENGINEERING PRACTICE | |||
| 19 | Testing & Debugging | std/unittest, doAssert, the debugger, and reading compiler diagnostics. | |
| 20 | Compilation, Build Modes & Deployment | Debug, release and danger modes, cross-compilation, and shipping binaries. | |
| 21 | Standard Library Tour | The modules you will use daily: os, strutils, json, times, and more. | |
| PHASE 7: PRACTICE & DEMO | |||
| 22 | Lab Examples | Run and modify single-file practice demos for every lesson. | |
| 23 | Study Projects | A linked list, a generic stack with unit tests, and a command-line journal. | |
| PHASE 8: REFERENCE | |||
| 24 | References & Learning | Official manual, playgrounds, community, exercises, and sample repositories. | |
For the full categorized table — playgrounds, the official manual, community channels, exercises and sample repositories — see the References & Learning page. Practice files live on the Lab Examples page and the Study Projects page.