Lua is a lightweight, reflective, imperative and procedural language, designed as a scripting language with extensible semantics as a primary goal. It is therefore an excellent language for extending existing applications, and is usually embedded in another application. It is coded in ANSI C, and can thus be compiled on a vast amount of different platforms. Lua scripts are usually compiled just before execution, but a compiler exists. Compiled scripts offer a small speed bonus as there is no need to compile the script at runtime.
This course begins with a brief background and introduction to Lua in other environments, and then provides an extensive set of lessons on the Scribunto/Lua Language as it is used in MediaWiki projects, including available Lua and Scribunto libraries. For Wikiversity Module developers, the Scribunto/Lua lessons should be completed first and in sequence before continuing on to the Lua and Scribunto libraries.