Reimplementing the Wheel: Teaching Compilers with a Small Self-Contained One

07/26/2022
by   Daniil Berezun, et al.
0

We report on a one-semester compiler construction course based on the idea of implementing a small self-contained compiler for a small model language from scratch, not using other compiler construction frameworks. The course is built around an evolving family of languages with increasing expressiveness and complexity, which finally is crowned by a language with first-class functions, S-expressions, pattern matching, and garbage collection. The code generation technique is based on the idea of symbolic interpreters, which allows to implement a robust albeit not a very efficient native code generator. We give the motivation for the course, describe its structure, and report some results of teaching based on students' post-course surveys.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
06/27/2019

Introducing Certified Compilation in Education by a Functional Language Approach

Classes on compiler technology are commonly found in Computer Science cu...
research
04/26/2022

Experience Report: Standards-Based Grading at Scale in Algorithms

We report our experiences implementing standards-based grading at scale ...
research
10/22/2017

Teaching Programming and Design-by-Contract

This paper summarizes the experience of teaching an introductory course ...
research
04/06/2020

Bringing GNU Emacs to Native Code

Emacs Lisp (Elisp) is the Lisp dialect used by the Emacs text editor fam...
research
06/23/2021

Threaded Code Generation with a Meta-tracing JIT Compiler

Language implementation frameworks, e.g., RPython and Truffle/Graal, are...
research
08/08/2020

eXpOS: A Simple Pedagogical Operating System for Undergraduate Instruction

An operating system project suitable for undergraduate computing/electri...
research
04/06/2019

Idealize - A Notion of Idea Strength

Business Entrepreneurs frequently thrive on looking for ways to test bus...

Please sign up or login with your details

Forgot password? Click here to reset