Enquiry Form

Lua Training Courses

Lua Course Outlines

Lua is an easy to use scripting language that is used as an embedded plugin/extension language in different products. For example it is the embedded scripting language of network applications like nmap and wireshark, and can also be found as a scripting language in World of Warcraft, Orbiter and other games.
Lua can also be used as a standalone language. It is a lightweight, multi-paradigm programming language and therefore the course teaches various concepts that students will find useful in other areas of software engineering as well.
This course covers everything out there to know about Lua. We build up from the basic programming constructs, learn about advanced techniques and finally talk about embedding of Lua into other programming languages and embedding other programming languages into Lua. The course contains a lot of programming exercises, so that newcomers can gain proficiency with the language, starting from scratch.
Introduction to Lua
A bit of history
Lua's goals, features and non-goals
Resources of Lua documentation and tutorials
Installing the Lua interpreter
Setting up and using LuaRocks
Basic syntax and semantics
Identifiers
Comments, block comments
Global variables and enforcing of strictness
Local variables
Standalone programs, program arguments
Compilation units, chunks, expressions, semicolons
Data types and data structures
Basic types: nil, boolean, number, string
Object types: function, userdata, thread, table
References/objects vs. basic values
The importance of tables in Lua
Introduction to tables and their versatility
Tables as an associative array
Tables as numeric arrays, sequences
Basic control structures
The if then elseif else end
The while loop
The repeat loop
The simple for loop
Error handling
Return values vs exceptions
Converting a return value to an exception
Converting an exception to a return value
Error levels
Example programs
Polynomial evaluation
Breadth first search
Additional exercises
More about functions
Named arguments
Object-oriented calls
Closures
Currying
Tail calls
Multiple assignment and return
Varargs
Iterators and co-routines
The generic for loop
Stateless vs stateful iterators
Differences between iterators and co-routines
Metatables and metamethods
The set example
The __tostring metamethod
Arithmetic metamethods
The __index, __newindex metamethods
The __len metamethod
Modules and packages
Using modules
Creating modules
Organizing modules into packages
Advanced tables
Tables for queues and stacks
Tables describing graphs
Matrices as tables
Linked lists as tables
String buffers
Metatables through examples
Proxies
Readonly
Memoization
Dynamic programming with memoization
The Fibonacci example
Environments
Relationship between global variables and environments
Free variables
The _ENV table and the _G table
More about modules
Different approaches to creating modules
Modules that change the behavior
Module initialization and arguments
Using environments to implement safe modules
Advanced iterators and co-routines
Producer, consumer, filter
Wrapping co-routines to get iterators
Stateless iterator for linked lists
Contributing to the Ecosystem
Uploading packages to MoonRocks
Functional paradigm in Lua
The map function
The reduce / fold function
Object-oriented Programming
Different approaches to OOP
Different approaches to inheritance
Examples
A walkthrough of the Lua Standard Libraries
Compilation
Compilation
Eval
Relationship with the environment
Binary chunks
Garbage collection
Weak tables
Finalizers, the __gc meta-method
Lua bytecode and virtual machine
Generating bytecode from source code
Reading and analyzing bytecode
Quick tour of the source code of the Lua VM
C modules
Calling C from Lua
Search path and loading of C modules
Calling Lua from C
The Stack
Error handling
Continuations
Handling Lua values and types from C
Arrays
Strings
Userdata
Metatables
Object oriented calls
Light userdata
Memory management
Allocators
GC API
Threads in Lua
Co-routines vs threads
Real multi-threading and Lua states

Lua is an easy to use scripting language that is used as an embedded plugin/extension language in different products. For example it is the embedded scripting language of network applications like nmap and wireshark, and can also be found as a scripting language in World of Warcraft, Orbiter and other games.
Lua can also be used as a standalone language. It is a lightweight, multi-paradigm programming language and therefore the course teaches various concepts that students will find useful in other areas of software engineering as well.
This course covers the basic programming constructs in Lua and contains a lot of programming exercises, so that newcomers can gain proficiency with the language, starting from scratch.
After completing the course the students will be able to write middle sized standalone Lua programs and script software products where Lua is the embedded language.
Introduction to Lua
A bit of history
Lua's goals, features and non-goals
Resources of Lua documentation and tutorials
Installing the Lua interpreter
Setting up and using LuaRocks
Basic syntax and semantics
Identifiers
Comments, block comments
Global variables and enforcing of strictness
Local variables
Standalone programs, program arguments
Compilation units, chunks, expressions, semicolons
Data types and data structures
Basic types: nil, boolean, number, string
Object types: function, userdata, thread, table
References/objects vs. basic values
The importance of tables in Lua
Introduction to tables and their versatility
Tables as an associative array
Tables as numeric arrays, sequences
Basic control structures
The if then elseif else end
The while loop
The repeat loop
The simple for loop
Error handling
Return values vs exceptions
Converting a return value to an exception
Converting an exception to a return value
Error levels
Example programs
Polynomial evaluation
Breadth first search
Additional exercises
More about functions
Named arguments
Object-oriented calls
Closures
Currying
Tail calls
Multiple assignment and return
Varargs
Iterators and co-routines
The generic for loop
Stateless vs stateful iterators
Differences between iterators and co-routines
Metatables and metamethods
The set example
The __tostring metamethod
Arithmetic metamethods
The __index, __newindex metamethods
The __len metamethod
Modules and packages
Using modules
Creating modules
Organizing modules into packages
Object-oriented programming
The building blocks of OOP in Lua
Examples
Discussion on more advanced language features
Weak tables
Finalizers
Compilation, eval, loading

This is an advanced course on Lua, where basic knowledge of the programming language is already assumed. Therefore this course gives the participant a more profound understanding of Lua internals and the "why" behind the used Lua idioms.
These advanced topics are demonstrated by plenty of examples and in-class exercises.
Advanced tables
Tables for queues and stacks
Tables describing graphs
Matrices as tables
Linked lists as tables
String buffers
Metatables through examples
Proxies
Readonly
Memoization
Dynamic programming with memoization
The Fibonacci example
Environments
Relationship between global variables and environments
Free variables
The _ENV table and the _G table
More about modules
Different approaches to creating modules
Modules that change the behavior
Module initialization and arguments
Using environments to implement safe modules
Advanced iterators and co-routines
Producer, consumer, filter
Wrapping co-routines to get iterators
Stateless iterator for linked lists
Contributing to the Ecosystem
Uploading packages to MoonRocks
Functional paradigm in Lua
The map function
The reduce / fold function
Object-oriented Programming
Different approaches to OOP
Different approaches to inheritance
Examples
A walkthrough of the Lua Standard Libraries

This Lua course teaches how to interact with Lua from C (and/or other programming languages).
We discuss integration in both directions: how to embed C code in Lua (eg. for performance gains), and how to make a C/C++/Java program extensible with Lua.
As an in-class exercise we create a small program that is extensible with Lua.
The course also tackles the Lua virtual machine and teaches how to understand the bytecode underpinning the language.
This course can serve an add-on to the Lua Fundamentals or Lua Advanced courses in which case a shorter (1 day) version can be organized.
Compilation
Compilation
Eval
Relationship with the environment
Binary chunks
Garbage collection
Weak tables
Finalizers, the __gc meta-method
Lua bytecode and virtual machine
Generating bytecode from source code
Reading and analyzing bytecode
Quick tour of the source code of the Lua VM
C modules
Calling C from Lua
Search path and loading of C modules
Calling Lua from C
The Stack
Error handling
Continuations
Handling Lua values and types from C
Arrays
Strings
Userdata
Metatables
Object oriented calls
Light userdata
Memory management
Allocators
GC API
Threads in Lua
Co-routines vs threads
Real multi-threading and Lua states

NobleProg® Limited 2004 - 2016 All Rights Reserved
This site is operated by the NobleProg franchisor . If you interested in opening a franchise in your country, please visit http://training-franchise.com for more information.

NobleProg® is a registered trade mark of NobleProg Limited and/or its affiliates.