<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
<div class="">Dear colleagues,</div>
<div class=""><br class="">
</div>
<div class="">I'm thrilled to announce that my new textbook</div>
<div class="">"Essentials of Compilation: An Incremental Approach in Racket"</div>
<div class="">is published by MIT Press today.</div>
<div class=""><br class="">
</div>
<div class="">The book combines the nanopass approach that we've used at Indiana</div>
<div class="">University for some time with the incremental approach proposed by my</div>
<div class="">classmate Abdulaziz Ghuloum. The result is an introductory compiler</div>
<div class="">curriculum that (1) better reveals the connection between compiler</div>
<div class="">techniques and the programming language features that motivate them,</div>
<div class="">and (2) natural decomposes a semester-long project into 2 week</div>
<div class="">increments in which the students build working compilers.</div>
<div class=""><br class="">
</div>
<div class="">===============================================================================</div>
<div class=""><br class="">
</div>
<div class="">Essentials of Compilation: An Incremental Approach in Racket</div>
<div class=""><br class="">
</div>
<div class="">Jeremy G. Siek</div>
<div class=""><br class="">
</div>
<div class="">The MIT Press, February 2023</div>
<div class=""><br class="">
</div>
<div class="">240 pages, ISBN: 9780262047760</div>
<div class=""><br class="">
</div>
<div class=""><a href="https://urldefense.com/v3/__https://mitpress.mit.edu/9780262047760/essentials-of-compilation/__;!!IBzWLUs!RifxfYwfyn08USzrSQVmiAhOHQp7AzTVviomOx1bNnPymM2x3P1LzIRjDjlCBxBCS9XgsQQ6FCbEUZy8Eo4xfBZx10HtsRU$" class="">https://mitpress.mit.edu/9780262047760/essentials-of-compilation/</a></div>
<div class=""><br class="">
</div>
<div class="">===============================================================================</div>
<div class=""><br class="">
</div>
<div class="">Description:</div>
<div class=""><br class="">
</div>
<div class="">A hands-on approach to understanding and building compilers.</div>
<div class=""><br class="">
</div>
<div class="">Compilers are notoriously difficult programs to teach and</div>
<div class="">understand. Most books about compilers dedicate one chapter to each</div>
<div class="">progressive stage, a structure that hides how language features</div>
<div class="">motivate design choices. By contrast, this innovative textbook</div>
<div class="">provides an incremental approach that allows students to write every</div>
<div class="">single line of code themselves. Essentials of Compilation guides the</div>
<div class="">reader in constructing their own compiler for a small but powerful</div>
<div class="">programming language, adding complex language features as the book</div>
<div class="">progresses. Jeremy Siek explains the essential concepts, algorithms,</div>
<div class="">and data structures that underlie modern compilers and lays the</div>
<div class="">groundwork for future study of advanced topics. Already in wide use by</div>
<div class="">students and professionals alike, this rigorous but accessible book</div>
<div class="">invites readers to learn by doing.</div>
<div class=""><br class="">
</div>
<div class="">* Deconstructs the challenge of compiler construction into bite-sized pieces</div>
<div class="">* Enhances learning by connecting language features to compiler design choices</div>
<div class="">* Develops understanding of how programs are mapped onto computer hardware</div>
<div class="">* Learn-by-doing approach suitable for students and professionals</div>
<div class="">* Proven in the classroom</div>
<div class="">* Extensive ancillary resources include source code and solutions</div>
<div class=""><br class="">
</div>
<div class="">===============================================================================</div>
<div class=""><br class="">
</div>
<div class="">Contents:</div>
<div class=""><br class="">
</div>
<div class="">Preface</div>
<div class="">1 Preliminaries</div>
<div class="">2 Integers and Variables</div>
<div class="">3 Register Allocation</div>
<div class="">4 Booleans and Conditionals</div>
<div class="">5 Loops and Dataflow Analysis</div>
<div class="">6 Tuples and Garbage Collection</div>
<div class="">7 Functions</div>
<div class="">8 Lexically Scoped Functions</div>
<div class="">9 Dynamic Typing</div>
<div class="">10 Gradual Typing</div>
<div class="">11 Generics</div>
<div class=""><br class="">
</div>
<div class="">Appendix</div>
<div class="">References</div>
<div class="">Index</div>
<div class="">===============================================================================</div>
<div class=""><br class="">
</div>
<div class="">
<div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
<div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
–––––––––––––––––––––––––––</div>
<div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
Jeremy G. Siek</div>
<div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
<a href="mailto:jsiek@iu.edu" class="">jsiek@iu.edu</a><br class="">
Professor of Computer Science<br class="">
Indiana University<br class="">
Luddy School of Informatics,</div>
<div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
Computing, and Engineering<br class="">
<br class="">
<br class="">
</div>
</div>
</div>
<br class="">
</body>
</html>