
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.
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
Cohort Name | Class Period | Registration Deadline | Available Seats |
---|---|---|---|
#1 Itaipava
|
Jul 02, 22 - Aug 20, 22 | Sat - Jul 02, 22 - 12:00 AM UTC | 7 out of 30 |
-
Cohort NameItaipava
-
Class PeriodJul 02, 22 - Aug 20, 22
-
Registration Deadlinesáb - jul 02, 22 - 12:00 AM UTC
-
Available Seats7 out of 30
-
RiccardoRiccardo
-
HussainHussain
-
Phillip
-
Matthew
-
MarcondesMarcondes
-
-
NikolaiNikolai
-
Thiago
-
LucianoLuciano
-
SvenSven
-
EdwardEdward
-
Amr
-
Josh
-
mkmmkm
-
DiegoDiego
-
HugoHugo
-
MarceloWorks at BrexMarcelo
-
Matheus
-
Apurv
-
KennethKenneth
-
WataruWataru
-
MitchellMitchell
-
Elias
-
DaltonWorks at Pagar.meDalton
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 on Saturdays
-
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 weekend session
Sync Sessions on Zoom~ 2 hours of lectures and exercises on the weekend- Q&A with the instructor
- Additional demos / examples of key topics
- Group practice - students break out to work on an exercise
- Group discussion
Syllabus
- Repetitions and choices
- Captures
- Predicates
- Grammars
- A very basic interpreter for “numbers”
- Abstract syntax trees
- Stack machines
- Variables in arithmetic expressions
- Syntax for statements: sequence, assignment, return
- Code generation for basic statements
- A generic pack function with meta-programming
- Debugging LPeg patterns
- Locating syntax errors with LPeg
- Reserved words
- Conditions and boolean types
- Implementing control structures with jumps
- Code generation for if-then-else and while
- Arrays as variables vs. arrays as objects
- Types and type errors
- Code generation for array operations
- The concept of function (procedures, subroutines, methods)
- The concept of return address
- Recursive functions: direct and indirect recursion
- Activation records
- Scopes
- Parameter passing: overlapping activation records
- Cleaning up the stack
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

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 🤓
- Some programming proficiency in any programming language
- Some familiarity with higher-order, anonymous functions, and regexes is helpful
Your Instructors
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.
- 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

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.
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.
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
-
How can I get my company to pay for my course?
We can issue an invoice directly to your company. The steps we need you to take are:
- Sign up at Classpert and send us your username or the email you use to register on Classpert
- Provide us with the following company information: name, full address, email and tax ID
Once we receive the payment confirmation, we’ll enroll you in the class
How can I get my company to pay for my course? We can issue an invoice directly to your company. The steps we need you to take are: 1. Sign up at Classpert and send us your username or the email you use to register on Classpert 2. Provide us with the following company information: name, full address, email and tax ID Once we receive the payment confirmation, we'll enroll you in the class -
Do I receive a certificate at the end of the course?
To be eligible to earn a certificate, you need to complete the final project with a passing grade.
Do I receive a certificate at the end of the course? To be eligible to earn a certificate, you need to complete the final project with a passing grade. -
Is attending the live sessions required?
All live sessions are recorded and made available to all students later, so attending them is not mandatory. However, we strongly encourage all students to attend live sessions whenever possible. This is the chance to get your questions directly answered by the instructor and network with other students during breakout sessions. If you do not attend the live session, you can still get your questions answered on our Discord server.
Is attending the live sessions required? All live sessions are recorded and made available to all students later, so attending them is not mandatory. However, we strongly encourage all students to attend live sessions whenever possible. This is the chance to get your questions directly answered by the instructor and network with other students during breakout sessions. If you do not attend the live session, you can still get your questions answered on our Discord server. -
Do I still get access to all 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.
Do I still get access to all 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. -
I work full time. Will this interfere with this course?
The course is structured in such a way that knowledge is built in incremental steps until you’re able to demonstrate you’ve reached the course’s learning goals by turning in the final project and getting a passing grade. Homework and class activities are mostly peer-graded or self-graded so turning them in is not required. If you can’t find the time to complete those activities there will be no penalties. As long as you achieve the learning goals, you should be fine.
I work full time. Will this interfere with this course? The course is structured in such a way that knowledge is built in incremental steps until you're able to demonstrate you've reached the course's learning goals by turning in the final project and getting a passing grade. Homework and class activities are mostly peer-graded or self-graded so turning them in is not required. If you can't find the time to complete those activities there will be no penalties. As long as you achieve the learning goals, you should be fine. -
Are there any scholaship programs for this class?
We offer scholarships that are both merit or need-based to help individuals upskill and improve their lives. In addition to meet the pre-requisites for this course, our scholarship criteria follow some of the guidelines below:
- People with relevant proven work in the field
- Undergraduate students or professionals from developing countries
- Individuals belonging to minority groups that are underrepresented in tech
If you fulfill any of the above-mentioned criteria you can apply for a fully-funded scholarship here.
The number of seats reserved to scholarship are hard limited to at most 10% of the total available seats. Your application will be reviewed by a committee including the instructor of this class.
Are there any scholaship programs for this class? We offer scholarships that are both merit or need-based to help individuals upskill and improve their lives. In addition to meet the pre-requisites for this course, our scholarship criteria follow some of the guidelines below: - People with relevant proven work in the field - Undergraduate students or professionals from developing countries - Individuals belonging to minority groups that are underrepresented in tech If you fulfill any of the above-mentioned criteria you can apply for a <a class='c-fgV c-fgV:h td-u' href="https://user.classpert.com/courses/building-a-programming-language/cohorts/itaipava/scholarship" target="_blank">fully-funded scholarship here</a>. The number of seats reserved to scholarship are hard limited to at most 10% of the total available seats. Your application will be reviewed by a committee including the instructor of this class. -
How do refunds work?
If the course does not meet your expectations you can ask for a full refund before the end of week 1. Please, read the text below to check conditions:
- Students who are absent from class will not receive a refund. While we expect students to participate in the class according to the schedule outlined in the syllabus - including completing the weekly assignments (readings, videos, quizzes, and exercises) and attending scheduled class sessions - students who cannot attend will still be able to view recordings of class sessions asynchronously, and thus can fully participate in the course.
- If a student has a personal situation arise that prevents them from continuing to participate in the course, the student must immediately notify the Classpert course manager. In such a case, Classpert will allow the student to continue in a future cohort, beginning the course again at week one. If a student does not proactively notify Classpert’s course manager of a scheduling conflict, the student will be considered an absent participant in the course, and will not be eligible for a deferment.
- If the lead instructor(s) can’t continue the course for any reason, we will offer admission to a future cohort. If the lead instructor is not able to offer future cohorts, we will offer a refund according to the schedule outlined below.
- If a student chooses to withdraw from the course, Classpert will refund whatever portion of the tuition is eligible, given the proration schedule outlined below. Students who withdraw from the course will immediately lose access to the course materials.
Students who withdraw from the course will immediately lose access to the course materials. If a student satisfies all conditions above for terminating enrollment in a course, their tuition will be refunded in an amount based on the number of weeks that have concluded, minus the list price of the shipped class materials.
Weeks will be considered concluded when the lecture for that week ends. For example, week 1 will conclude when the lecture for week 1 ends.
Tuition Refund Proration Schedule
- Less than 1 week of the course (from the kickoff class until the conclusion of the week 1 lecture): 100% tuition refund
- After 1 week of the course (after conclusion of week 1 lecture): 80% tuition refunded
- After 2 weeks of the course (after the conclusion of the week 2 lecture): 60% tuition refunded
- After 3 weeks of the course (after the conclusion of the week 3 lecture): 40% tuition refunded
- After 4 weeks of the course (after the conclusion of the week 4 lecture): 20% tuition refunded After 5 of the course weeks have concluded, no refunds will be offered
How do refunds work? If the course does not meet your expectations you can ask for a full refund before the end of week 1. Please, read the text below to check conditions: <ol type="a"> <li>Students who are absent from class will not receive a refund. While we expect students to participate in the class according to the schedule outlined in the syllabus - including completing the weekly assignments (readings, videos, quizzes, and exercises) and attending scheduled class sessions - students who cannot attend will still be able to view recordings of class sessions asynchronously, and thus can fully participate in the course.</li> <li>If a student has a personal situation arise that prevents them from continuing to participate in the course, the student must immediately notify the Classpert course manager. In such a case, Classpert will allow the student to continue in a future cohort, beginning the course again at week one. If a student does not proactively notify Classpert’s course manager of a scheduling conflict, the student will be considered an absent participant in the course, and will not be eligible for a deferment.</li> <li>If the lead instructor(s) can’t continue the course for any reason, we will offer admission to a future cohort. If the lead instructor is not able to offer future cohorts, we will offer a refund according to the schedule outlined below.</li> <li>If a student chooses to withdraw from the course, Classpert will refund whatever portion of the tuition is eligible, given the proration schedule outlined below. Students who withdraw from the course will immediately lose access to the course materials.</li> </ol> Students who withdraw from the course will immediately lose access to the course materials. If a student satisfies all conditions above for terminating enrollment in a course, their tuition will be refunded in an amount based on the number of weeks that have concluded, minus the list price of the shipped class materials. Weeks will be considered concluded when the lecture for that week ends. For example, week 1 will conclude when the lecture for week 1 ends. Tuition Refund Proration Schedule <ol type="a"> <li>Less than 1 week of the course (from the kickoff class until the conclusion of the week 1 lecture): 100% tuition refund</li> <li>After 1 week of the course (after conclusion of week 1 lecture): 80% tuition refunded</li> <li>After 2 weeks of the course (after the conclusion of the week 2 lecture): 60% tuition refunded</li> <li>After 3 weeks of the course (after the conclusion of the week 3 lecture): 40% tuition refunded</li> <li>After 4 weeks of the course (after the conclusion of the week 4 lecture): 20% tuition refunded After 5 of the course weeks have concluded, no refunds will be offered</li> </ol> -
Do I need to do anything to get ready for the course?
No, all class instructions will be given by the instructor to the classroom during the kickoff session.
Do I need to do anything to get ready for the course? No, all class instructions will be given by the instructor to the classroom during the kickoff session.