Building a Programming Language Price: $999
Geometric illustration at the border

Building a Programming Language

Roberto Ierusalimschy is the creator and leading architect of the Lua programming language, driving its development since its inception in 1993. He is a full professor of Computer Science at PUC-Rio (the Pontifical Catholic University of Rio de Janeiro), where he works with programming-language design and implementation.

Watch trailer
Join the waitlist and get notified about the next cohort

Building a Programming Language

Roberto Ierusalimschy, creator of the Lua Programming Language, helps developers grow and unleash a true "Developer Mindset" by demystifying the science behind building a programming language


In this 8-week-long program, you’ll dive into the depths of computer science under the guidance of the creator of a major programming language. Together with the instructional staff, the cohort will create a programming language from the ground up and as part of your final project, you’ll be invited to contribute features to this newly created language. By the end of this course, you’ll be able to build your own mini-language and gain more intimacy with the programming language you use every day

In an ever-evolving industry, this course is a masterpiece that will help you expand the limits of your innovation capabilities, broaden your horizons and develop self-confidence as a software developer


Join the waitlist and get notified about the next cohort
Previous Cohort
Cohort Name Class Period Registration Deadline
#2 Itanhandu
Mar 17, 23 - May 12, 23 Friday, Mar 17 - 2023 at 02:00 PM UTC
Class is closed to new registrations
  • Cohort Name
    #2 Itanhandu
  • Class Period
    Mar 17, 23 - May 12, 23
  • Registration Deadline
    Friday, Mar 17 - 2023 at 02:00 PM UTC
Class is closed to new registrations
Meet Your Peers
Shaurya
Tim
giana
Emmanuel
X
David
hush
Cristine
aks
AustTence
Yudhishthir
Champ1
aliasgar
Elot
Felipe
Godwin
Nguyen
dsfasdkfdjlsf
Julio
Ateeb
Brian
Joy
Lucas
Abdulhameed
jpvolt
Rodrigo
abbbbb
Michael
Papuna
Fernando
Abubakar
Mark
Philippe
ya
Ash
Ali
ARUSH
Roger
Artem
Danilo
Ryan
DPZ
Konstantinos
t0350
Atharva
Jia
Pasi
Khasa
贾松霆
Hamza
Balogun
Flizot
TienLung
Gwakchang
Ken
michael
kamran
Mehul
Paulo
Leon
Claudio
Velno
Kat
Nicklas
Femi
Bas
Daniel
Yituanpeng
Lucas
Alexandru
siv
Nuri
Andrea
Santhosh
Guilherme
intoleon
郑国玉
chad
Christian
Amr
William
Triumph
Pintu
Adekanmi
Dillan
Meet Your Peers
  • Joy
  • Elot
  • Abdulhameed
  • Nicklas
  • michael
  • William
  • aliasgar
  • Ken
  • Gwakchang
  • Danilo
  • Artem
  • Guilherme
  • ARUSH
  • Triumph
  • Femi
  • intoleon
  • Ryan
  • Nuri
  • AustTence
  • t0350
  • Roger
  • Daniel
  • Balogun
  • Cristine
  • Lucas
  • Papuna
  • Claudio
  • abbbbb
  • Paulo
  • Amr
  • Santhosh
  • aks
  • Lucas
  • X
  • 郑国玉
  • Pintu
  • Alexandru
  • Leon
  • Michael
  • jpvolt
  • Nguyen
  • Mark
  • Dillan
  • Christian
  • dsfasdkfdjlsf
  • Felipe
  • TienLung
  • 贾松霆
  • DPZ
  • Ali
  • Andrea
  • chad
  • Bas
  • Flizot
  • Brian
  • Jia
  • Rodrigo
  • Ash
  • Abubakar
  • Hamza
  • Emmanuel
  • Philippe
  • Yudhishthir
  • hush
  • Atharva
  • Adekanmi
  • Ateeb
  • Yituanpeng
  • Mehul
  • Shaurya
  • Champ1
  • Julio
  • kamran
  • Tim
  • Fernando
  • Godwin
  • David
  • Kat
  • ya
  • Konstantinos
  • siv
  • Pasi
  • Khasa
  • Velno
  • giana
Previous Cohort
Cohort Name Class Period Registration Deadline
#1 Itaipava
Jul 02, 22 - Aug 27, 22 Saturday, Jul 02 - 2022 at 03:00 PM UTC
Class is closed to new registrations
  • Cohort Name
    #1 Itaipava
  • Class Period
    Jul 02, 22 - Aug 27, 22
  • Registration Deadline
    Saturday, Jul 02 - 2022 at 03:00 PM UTC
Class is closed to new registrations
Meet Your Peers
Edward
Amr
Rowan
Bas
Wataru
Cristine
Dalton
Brian
Rit
Elias
Diego
mkm
Apurv
Matheus
hush
Marcondes
Satish
Marcelo
Riccardo
Alexandre
Kenneth
Hugo
Luciano
Samuele
JIng
Josh
Sven
Nikolai
Matthew
Mitchell
Meet Your Peers
  • Riccardo
  • JIng
  • Bas
  • Apurv
  • Matthew
  • Mitchell
  • Amr
  • Sven
  • Diego
  • mkm
  • Marcelo
  • Luciano
  • Brian
  • Josh
  • Matheus
  • Nikolai
  • Rit
  • Rowan
  • hush
  • Marcondes
  • Dalton
  • Samuele
  • Wataru
  • Hugo
  • Alexandre
  • Elias
  • Satish
  • Edward
  • Cristine
  • Kenneth

Program Structure

Typical week in the cohort

Communication and networking are core components of the ClasspertX course experience. In this course, you will be part of a global learning community. In order to accommodate all participants, we have designed much of the course experience to take place asynchronously, with a synchronous class session that occurs weekly.

Async Sessions on Discord
  • Reading from the book
    Includes a free copy of the book

    This course uses Programming in Lua as supplementary material for the course

  • Videos
  • Quizzes
  • Exercises
  • Students will be prompted to submit questions during the week, and the instructor should choose questions to answer for students during the weekly session
Illustration of people using Discord
Sync Sessions on Zoom
  • Q&A with the instructor
  • Additional demos / examples of key topics
  • Group practice - students break out to work on an exercise
  • Group discussion
Sync sessions on Zoom

Syllabus

Kickoff
  • Understand what the course will cover
  • Understand what is expected of participants in this course
  • Understand how to get the most out of this course
  • Meet your instructor
Week 1 - Introduction to LPeg
  • Repetitions and choices
  • Captures
  • Predicates
  • Grammars
Week 2 - Arithmetic Expressions
  • A very basic interpreter for “numbers”
  • Abstract syntax trees
  • Stack machines
Week 3 - Basic imperative programming: variables, assignments, sequences
  • Variables in arithmetic expressions
  • Syntax for statements: sequence, assignment, return
  • Code generation for basic statements
Week 4 - Tricks and Tools
  • A generic pack function with meta-programming
  • Debugging LPeg patterns
  • Locating syntax errors with LPeg
  • Reserved words
Week 5 - Control Structures
  • Conditions and boolean types
  • Implementing control structures with jumps
  • Code generation for if-then-else and while
Week 6 - Arrays
  • Arrays as variables vs. arrays as objects
  • Types and type errors
  • Code generation for array operations
Week 7 - Functions
  • The concept of function (procedures, subroutines, methods)
  • The concept of return address
  • Recursive functions: direct and indirect recursion
  • Activation records
Week 8 - Local Variables and Parameters
  • Scopes
  • Parameter passing: overlapping activation records
  • Cleaning up the stack
Week 9 - Final Project
Project Preview

Project

Build a programming language from the ground up

The purpose of the project is to extend the language developed throughout the course by the instructional team with extra features.

Check out a few of our students' projects
  • Drawing Mandelbrot sets
    Wataru Washida
  • Kiara - A language for numbers
    Alexandre
  • Performant Additions
    Mitchell

What you'll learn

  • Implement your own “mini languages" (domain-specific languages)
  • Understand the concept of Abstract Syntax Trees (ASTs) and their potential uses
  • Understand the concept of Stack machines and their potential uses
  • Master pattern matching as a tool for string manipulation
  • Have a deeper understanding of how programming languages work behind the scenes in order to gain more intimacy with your programming language
  • Improve proficiency and gain competency as a developer regardless of your language of choice
  • Program in Lua

Who this course is for

Unlike a traditional course on compiler construction, in this course the class will actually grow a language. Following the agile mantra of "the simplest thing that could possibly work", we'll build a minimal working language from the very beginning, and throughout the course students will enrich this newly created language to make it more complete

Roberto Ierusalimschy

Who this course is for

Target Audience
  • Advanced programmers looking to immensely improve their programming skills or gain more intimacy with the programming language they use daily
  • Tinkerers wanting to expand existing languages or tools in novel ways
  • Developers or system administrators looking to build complex tools that could benefit from having their own DSLs
  • Professionals, researchers, students and tinkerers curious about the magic that surrounds the subject 🤓
Prerequisites
  • Some programming proficiency in any programming language
  • Some familiarity with higher-order, anonymous functions, and regexes is helpful

Your Instructors

Roberto Ierusalimschy
Roberto Ierusalimschy

Roberto Ierusalimschy is the creator and leading architect of the Lua programming language, driving its development since its inception in 1993. He is a full professor of Computer Science at PUC-Rio (the Pontifical Catholic University of Rio de Janeiro), where he works with programming-language design and implementation.

Great professionals know and love their tools. And the main tool of any software developer is their programming language. Great developers know that the best way to understand a tool is through the processes that went into building it.
Career Highlights
  • Creator and Chief Architect of Lua
  • Full Professor at PUC-Rio
  • Visiting researcher at the University of Waterloo, ICSI, GMD, and UIUC
  • Tinker visiting professor at Stanford
  • Distinguished visitor at the University of Edinburgh
  • Author of Programming in Lua
Relevant Publications in the Field
Programming in Lua
View More
264 ratings
Ali

I can’t say that this book has any negatives, this book offered a great introduction to Lua, as Lua is an easy non-complex programming language. This book offered exercises along with the chapters, I have enjoyed learning from this book and the exercises are very fun. Highly recommend this.

Naum Trifanoff

This is what a programming text should be – clear, concise, illustrated with meaningful code examples. Contains all you need to boot yourself into proficiency with programming in Lua.

Bruce Porteous

The book takes you through Lua at a fairly fundamental level. It’s a good journey that complements the online reference material. Critically for an embedded language it also covers how to interface with it through it’s C API.

Frequently Asked Questions

  • Can I get my employer to pay for the program?

    An investment in knowledge always pays the best return for your company. It’s a tiny investment compared to what you could potentially bring in terms of innovation to your workplace.

    Many companies offer reimbursement for courses related to your job. Ask your employer about tuition benefits. Even if there is no specific tuition assistance, many companies allocate money toward professional development. Managers may have money earmarked for industry conferences and many have not considered applying it toward continuing education.

    Approach asking for tuition assistance like you would a formal negotiation. Go into the discussion with clearly outlined and rehearsed messages about what you hope to gain and emphasize how it will benefit your boss and organization.

  • What are the dynamics of this program?

    Our programs follow the Flipped Learning Methodology, which involves both self-paced study and live instructor-led sessions. During the week, you’ll be expected to engage in activities like watching lectures, completing readings, and working on exercises and your project. The week ends with a Zoom session where the instructional staff will review what has been learned, organize class discussions, answer student questions, and give feedback on your project.

  • Is attending the live sessions required?

    Attending live sessions is not required, but is highly recommended. This is the chance to network with your peers and the instructional team and get your questions directly answered by the instructor.

    If you can’t attend a live session, you can watch recordings later or get your questions answered on our community channels.

  • What is the time commitment for this course?

    This course requires 6-8 hours/week of work. Self-paced activities such as homework assignments, readings, and watching video lectures exist to help you build up knowledge until you’re able to demonstrate, through your project, that you’ve achieved the learning outcomes of the program. Although important, homework assignments won’t be graded by the instructional team. The only gradable unit in this program will be your project, which is a prerequisite for certificate emission

  • How do refunds work?

    If the course does not meet your expectations, you can ask for a full refund before the beginning of week 3. No questions asked!

  • Do I retain access to all class materials after the class is over?

    Yes, you get lifetime access to all class materials and the community after the class is over. Additionally, new content that is added to future cohorts will be made available to yours too.

  • How are certificates issued? Will I be evaluated?

    In order to earn a certificate, you’ll need to submit a project and get a passing grade. The instructional team will provide comprehensive feedback on your project, highlighting the strong points, areas for improvement, and helpful tips on how it could be successful outside of the class.

  • Will this course run again in the future?

    Cohort-style classes are to some extent very similar to traditional classroom environments which makes them largely dependent on the instructor’s schedule. While we always hope there’ll be a next cohort, there’s no guarantee that the instructor will be available for the next one. If you’re busy right now, but really interested in taking this course, we advise you to sign up now and ask for a refund if you can’t commit to the program after week 3.

  • What determines the price of the course?

    Our programs require significant time from a number of professionals including mentors, the instructor, and organization staff. It is not a canned lecture course but an educational opportunity tailored to your needs and interests.

Join the waitlist and get notified about the next cohort

Complete Guide to Building a Programming Language

Building a programming language? Get a visual roadmap. This guide covers all the key topics, from syntax to parsers, in a clear and concise diagram.