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 |
---|---|---|
#4 Jaci
|
Dec 01, 23 - Jan 26, 24 | Friday, Dec 08 - 2023 at 05:00 PM UTC |
-
Cohort Name#4 Jaci
-
Class PeriodDec 01, 23 - Jan 26, 24
-
Registration DeadlineFriday, Dec 08 - 2023 at 05:00 PM UTC
-
Vikram
-
Dmitri
-
Joel
-
AntonioElectronic Engineer, Digital systems instructorWorks at University of AlbertaAntonio
-
PeterPeter
-
ThomasThomas
-
KostiaKostia
-
ThiagoThiago
-
ScottScott
-
Abrantes
-
aliasgaraliasgar
-
AaronAaron
-
Reid
Cohort Name | Class Period | Registration Deadline |
---|---|---|
#3 Rio
|
Aug 18, 23 - Oct 13, 23 | Friday, Aug 18 - 2023 at 11:59 PM UTC |
-
Cohort Name#3 Rio
-
Class PeriodAug 18, 23 - Oct 13, 23
-
Registration DeadlineFriday, Aug 18 - 2023 at 11:59 PM UTC
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.
-
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
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
Syllabus
- 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
- 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
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.
-
Performant AdditionsMitchell
-
Kiara - A language for numbersAlexandre
-
Drawing Mandelbrot setsWataru 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
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.
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.
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.
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.
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.
Ready to level-up?
Enroll now in one of our programs
and join us for a truly immersive learning experience
Measure and apply statistics to evaluate an artifact or its function
Create a Game Design Document and Pitch the Concept to Industry Experts
Flint Dille, John Zuur PlattenWriters of Jurassic World, Diablo, Transformers and more
Build a Programming Language from the Ground-Up
Uncover Vulnerable Machines and Launch an Effective Attack with Your Self-Made Ransomware
Design and Build a System that Solves a Problem You Find Interesting
Create a Professional-Looking Object from Conception to Reality
Build a Multi-Level Car Parking System Using Pointers in C/C++
Build a Blockchain Application and Pitch it to Real Investors
Develop and Manage a Successful AI Project for your Organization