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
#4 Jaci
Dec 01, 23 - Jan 26, 24 Friday, Dec 08 - 2023 at 05:00 PM UTC
Class is closed to new registrations
  • Cohort Name
    #4 Jaci
  • Class Period
    Dec 01, 23 - Jan 26, 24
  • Registration Deadline
    Friday, Dec 08 - 2023 at 05:00 PM UTC
Class is closed to new registrations
Meet Your Peers
Kostia
Dmitri
Antonio
Thiago
Vikram
Peter
aliasgar
Scott
Aaron
Thomas
Joel
Reid
Abrantes
Meet Your Peers
  • Thomas
  • Avatar
    Aaron
  • Avatar
    Joel
  • Avatar
    Abrantes
  • Reid
  • aliasgar
  • Peter
  • Scott
  • Avatar
    Dmitri
  • Vikram
  • Avatar
    Antonio
  • Avatar
    Thiago
  • Avatar
    Kostia
Previous Cohort
Cohort Name Class Period Registration Deadline
#3 Rio
Aug 18, 23 - Oct 13, 23 Friday, Aug 18 - 2023 at 11:59 PM UTC
Class is closed to new registrations
  • Cohort Name
    #3 Rio
  • Class Period
    Aug 18, 23 - Oct 13, 23
  • Registration Deadline
    Friday, Aug 18 - 2023 at 11:59 PM UTC
Class is closed to new registrations
Meet Your Peers
Zeb
Martin
Dan
Giana
Felipe
Daniel
Adam
Vikram
Srinivas
Isaac
Foster
Matt
Meet Your Peers
  • Felipe
  • Avatar
    Dan
  • Foster
  • Giana
  • Avatar
    Adam
  • Isaac
  • Srinivas
  • Avatar
    Matt
  • Vikram
  • Avatar
    Zeb
  • Martin
  • Avatar
    Daniel

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 - Project Submission
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
  • Performant Additions
    Mitchell
  • Kiara - A language for numbers
    Alexandre
  • Drawing Mandelbrot sets
    Wataru Washida

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.

Meet our alumni
Papuna Gagnidze's photo
Papuna Gagnidze Building a Programming Language - Cohort 2

I'm Papuna Gagnidze, currently a DevOps engineer.

I decided to enroll in this course because I always had a curiosity for Lua, but I never had a chance to dive into the language and learn it in depth, even though I have used it to configure different tools in Linux.

So I felt this was the perfect opportunity for me to learn from the creator of Lua himself which I think was a once in a lifetime opportunity, and I'm very thankful for that.

The great outcome from this course, is that I had to switch roles, technologies, and programming languages frequently in my career, and I never felt an expert in any of the programming languages.

Now I understand, the behind the scenes of programming languages and how they work internally, I would say I'm more confident and it's just an amazing feeling.

I was also able to create my own programming language, which is the first programming language in Georgian, that has support for Georgian alphabets and keywords.

And one of the biggest and arguably the best universities in Georgia is interested in partnering with me to use that language to teach kids as a test project and see how it goes.

So, I can only say thank you and it was an amazing experience.

Christian Sakai's photo
Christian Sakai Building a Programming Language - Cohort 2

Hi, my name is Christian Sakai. I am a software engineer in New York City and I work in a private trading firm.

I was looking to improve myself and one advice I heard was to learn compilers, then I saw Classpert was offering one with the creator of Lua. So I thought this could be a good an opportunity for me to get an introduction to compilers.

I think I learned a lot about parsing and virtual machines. I also learned a lot about Lua.

It is very valuable to learn directly from Roberto because you can ask questions that only Roberto can answer about language design and its tradeoffs.

Overall, it's a really fun course because you get to see your programming language that you design, come to life. I'm looking forward to learning more from Classpert and from Roberto for their next course.

Mark Gabby-Li's photo
Mark Gabby-Li Building a Programming Language - Cohort 2

Hi, my name is Mark Gabby-Li. I'm a lead programmer at a video game development studio.

So making a programming language has been a personal project I've always wanted to do, but when I actually tried doing it, I got a little bogged down in the details.

So I saw this Classpert's Building a Program Language class advertised on the lua.org website and I got really excited because Lua happens to be my favorite language of all time and the prof you're learning from, Roberto Ierusalimschy, the creator of Lua, was very, very, compelling.

So I signed up, actually, my wife, bought the class for me as a birthday present. And, I went through it and I had a lot of fun. It was a blast! actually.

At the end of the class, I feel like I overcame a lot of the issues I've been struggling with.

The class was really well structured. The videos are really great. They did a really good job of gradually introducing yourself to the topic, so that was really good. So, all in all, I was very, very happy with the class.

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 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

  • 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.

  • 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!

  • 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.

  • 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.

  • 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.

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.