Building a Programming Language Price: 699 € | Seats: 30 Price: 699 € | Seats: 30
Join Now for 699 €/seat Join Now for 699 €/seat
Geometric illustration at the border
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.

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

Information on this page represents our intent for the following cohort and is subject to changes
Upcoming Cohort
There are 7 seats left
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 Name
    Itaipava
  • Class Period
    Jul 02, 22 - Aug 20, 22
  • Registration Deadline
    sáb - jul 02, 22 - 12:00 AM UTC
  • Available Seats
    7 out of 30
Meet Your Peers
Kenneth
Diego
Mitchell
Hussain
Elias
Apurv
Sven
Riccardo
Josh
Marcondes
Wataru
Phillip
Amr
Nikolai
Matheus
Edward
Hugo
Marcelo
mkm
Thiago
Matthew
Luciano
Dalton
Meet Your Peers
  • Riccardo
    Riccardo
  • Hussain
    Hussain
  • Phillip
    Phillip
  • Matthew
    Matthew
  • Marcondes
    Marcondes
  • Nikolai
    Nikolai
  • Thiago
    Works at Classpert
    Thiago
  • Luciano
    Luciano
  • Sven
    Sven
  • Edward
    Edward
  • Amr
    Amr
  • Josh
    Josh
  • mkm
    mkm
  • Diego
    Diego
  • Hugo
    Hugo
  • Marcelo
    Works at Brex
    Marcelo
  • Matheus
    Works at Pagar.me
    Matheus
  • Apurv
    Apurv
  • Kenneth
    Kenneth
  • Wataru
    Wataru
  • Mitchell
    Mitchell
  • Elias
    Elias
  • Dalton
    Works at Pagar.me
    Dalton

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

Async Sessions on Discord
~ 2 hours of self-paced material during the week
  • 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
Illustration of people using Discord
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
Sync sessions on Zoom

Syllabus

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

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

  • 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

    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:

    1. 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.
    2. 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.
    3. 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.
    4. 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

    1. Less than 1 week of the course (from the kickoff class until the conclusion of the week 1 lecture): 100% tuition refund
    2. After 1 week of the course (after conclusion of week 1 lecture): 80% tuition refunded
    3. After 2 weeks of the course (after the conclusion of the week 2 lecture): 60% tuition refunded
    4. After 3 weeks of the course (after the conclusion of the week 3 lecture): 40% tuition refunded
    5. 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.
Get notified about the next cohort