Get in Touch

Course Outline

Introduction to Lua

  • A brief history
  • Lua's goals, features, and limitations
  • Resources for Lua documentation and tutorials
  • Installing the Lua interpreter
  • Setting up and utilizing LuaRocks

Basic syntax and semantics

  • Identifiers
  • Comments and block comments
  • Global variables and enforcing strictness
  • Local variables
  • Standalone programs and program arguments
  • Compilation units, chunks, expressions, and semicolons

Data types and data structures

  • Basic types: nil, boolean, number, string
  • Object types: function, userdata, thread, table
  • References/objects versus basic values
  • The significance of tables in Lua

Introduction to tables and their versatility

  • Tables as associative arrays
  • Tables as numeric arrays and sequences

Basic control structures

  • The if then elseif else end
  • The while loop
  • The repeat loop
  • The simple for loop

Error handling

  • Return values versus 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 versus 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

Requirements

Proficiency in at least one other programming language is required. Prior programming experience is essential. While not mandatory, familiarity with other scripting languages can facilitate a better understanding of Lua.

 21 Hours

Upcoming Courses

Related Categories