download 2021 site

This commit is contained in:
Jana Dönszelmann 2025-09-29 16:03:30 +02:00
commit dd6e4afb13
No known key found for this signature in database
138 changed files with 37730 additions and 0 deletions

761
index.html Normal file
View file

@ -0,0 +1,761 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="Eelco Visser">
<meta name="generator" content="Jekyll v3.8.5">
<title>CS4200 | Compiler Construction | 2021-2022</title>
<!-- <base href="/2021"> -->
<!--link rel="canonical" href="https://getbootstrap.com/docs/4.3/examples/starter-template/"-->
<link rel="icon" href="img/logo/pl_ico2_2B3_icon.ico" type="image/x-icon">
<!-- Bootstrap core CSS -->
<!--link href="https://getbootstrap.com/docs/4.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"-->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<style>
.bd-placeholder-img {
font-size: 1.125rem;
text-anchor: middle;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
@media (min-width: 768px) {
.bd-placeholder-img-lg {
font-size: 3.5rem;
}
}
</style>
<!-- Custom styles for this template -->
<link href="css/main.css" rel="stylesheet">
<link href="css/borders-responsive.css" rel="stylesheet">
<link rel="stylesheet" href="css/pl.css">
</head>
<body>
<main role="main" >
<nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">
<a class="navbar-brand" href="index.html">
TU Delft | CS4200
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault" aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarsExampleDefault">
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
<a class="nav-link" href="lectures/index.html" tabindex="-1" aria-disabled="true">Lectures</a>
</li>
<li class="nav-item active">
<a class="nav-link" href="homework/index.html" tabindex="-1" aria-disabled="true">Homework</a>
</li>
<li class="nav-item active">
<a class="nav-link" href="project/index.html" tabindex="-1" aria-disabled="true">Project</a>
</li>
<li class="nav-item active">
<a class="nav-link" href="news/index.html" tabindex="-1" aria-disabled="true">News</a>
</li>
<li class="nav-item active">
<a class="nav-link" href="blog/index.html" tabindex="-1" aria-disabled="true">Blog</a>
</li>
</ul>
</div>
</nav>
<div class="container">
<div class="row">
<div class="span12">
<div class="row">
<div class="mb-lg-3 col-sm-12 col-md-12 col-lg-5 col-xl-5 border-lg-right border-grey">
<div class="border-top border-light-grey">
<div class="card-header bg-dark text-white">
<h4 class="pt-2"> TU Delft | CS4200 | 2021-2022</h4>
<h4 class="pt-2"> Compiler Construction </h4>
</div>
</div>
<div class="pt-0 mb-1 mt-0">
<ul class="list-group list-group-flush pt-0 mt-0">
<li class="list-group-item">
<a href="https://studiegids.tudelft.nl/a101_displayProgram.do?program_tree_id=25159">Master Computer Science</a>
</li>
<li class="list-group-item">
Common Core Software Technology
</li>
<li class="list-group-item">
Specialization Programming Languages
</li>
<li class="list-group-item">
Credits: 2 x 5 ECTS
</li>
</ul>
</div>
<div class="card mb-1 border-top border-bottom border-dark border-left-0 border-right-0">
<div class="card-body bg-dark text-white pt-1 pb-1">
Schedule
</div>
</div>
<div class="pt-0 mb-1 mt-0 ">
<ul class="list-group list-group-flush pt-0 mt-0">
<li class="list-group-item">
Lectures Q1: Thursday 11:00 - 12:45
</li>
<li class="list-group-item">
Lab Q1: Tuesday 10:45 - 12:45, 13:45 - 15:45
</li>
<li class="list-group-item">
Lectures Q2: Thursday 15:45 - 17:45
</li>
<li class="list-group-item">
Lab Q2: Friday 13:45 - 17:45
</li>
</ul>
</div>
<div class="card mb-1 border-top border-bottom border-dark border-left-0 border-right-0">
<div class="card-body bg-dark text-white pt-1 pb-1">
Organization
</div>
</div>
<a href="https://pl.ewi.tudelft.nl"><img width="30%" src="img/logo/PL-logo72.png" align="right" class="ml-3 mt-3"></a>
<div class="pt-0 mb-1 mt-0 ">
<ul class="list-group list-group-flush pt-0 mt-0">
<li class="list-group-item">
<a href="https://pl.ewi.tudelft.nl">
Programming Languages Group
</a>
</li>
<li class="list-group-item">
<a href="https://www.tudelft.nl/en/eemcs/the-faculty/departments/software-technology/">Department of Software Technology</a>
</li>
<li class="list-group-item">
<a href="https://www.tudelft.nl/en/ewi/">Faculty of Electrical Engineering, Mathematics and Computer Science</a>
</li>
<li class="list-group-item">
<a href="http://www.tudelft.nl/">Delft University of Technology</a></li>
<li class="list-group-item">
Delft, The Netherlands (<a href="http://www.timeanddate.com/worldclock/custom.html?cities=16">CEST/CET</a>)
</li>
</ul>
</div>
<div class="card mb-1 border-top border-bottom border-dark border-left-0 border-right-0">
<div class="card-body bg-dark text-white pt-1 pb-1">
Course Staff
</div>
</div>
<div class="pt-0 mb-1 mt-0">
<ul class="list-group list-group-flush pt-0 mt-0">
<li class="list-group-item">
Lecturer: <a href="https://eelcovisser.org">Eelco Visser</a>
(<a href="mailto:e.visser@tudelft.nl">e.visser@tudelft.nl</a>)
</li>
<li class="list-group-item">
TA: Ruben van Baarle
</li>
<li class="list-group-item">
TA: Thijs Molendijk
</li>
<li class="list-group-item">
TA: Aron Zwaan (for Q1)
</li>
<li class="list-group-item">
TA: Jeff Smits (for Q2)
</li>
<li class="list-group-item">
TA: Gabriël Konat (for Spoofax3)
</li>
</ul>
</div>
<div class="mb-3">
<a href="contact/index.html">
<img width="100%" src="img/vmb6/2019/2019-03-27-building-28.jpg" />
</a>
<small >
<p class="ml-3">Computer Science Building 28 at Van Mourik Broekmanweg</p>
</small>
</div>
</div>
<div class="col-sm-12 col-md-12 col-lg-7 col-xl-7 border-grey">
<div class="border-top border-light-grey pt-3 mt-0">
<div class="card-body pt-0 mt-0 ">
<h5 class="card-title">
Compiler Construction
</h5>
<p>Compilers translate the source code of programs in a high-level programming language into executable (virtual) machine code. Nowadays, compilers are typically integrated into development environments providing features like syntax highlighting, content assistance, live error reporting, and continuous target code generation.</p> <p> This course studies the architecture of compilers and interactive programming environments and the concepts and techniques underlying the components of that architecture. For each of the components of a compiler we study the formal theory underlying the language aspect that it covers, declarative specification languages to define compiler components, and the techniques for their implementation. The concepts and techniques are illustrated by application to small languages or language fragments.</p><p>The compiler construction program consists of two courses of 5 ECTS each.</p>
<a href="https://tudelft-cs4200.github.io/#researchtopics">
</a>
</div>
</div>
<!--
<div class="card border-dark mb-3">
<div class="card-body">
<h5 class="card-title">
<a href="/#researchtopics">
</a>
</h5>
<p>Compilers translate the source code of programs in a high-level programming language into executable (virtual) machine code. Nowadays, compilers are typically integrated into development environments providing features like syntax highlighting, content assistance, live error reporting, and continuous target code generation.</p> <p> This course studies the architecture of compilers and interactive programming environments and the concepts and techniques underlying the components of that architecture. For each of the components of a compiler we study the formal theory underlying the language aspect that it covers, declarative specification languages to define compiler components, and the techniques for their implementation. The concepts and techniques are illustrated by application to small languages or language fragments.</p><p>The compiler construction program consists of two courses of 5 ECTS each.</p>
</div>
</div>
-->
<div class="border-top border-light-grey pt-3 mt-0">
<div class="card-body pt-0 mt-0 ">
<h5 class="card-title">
CS4200-A: Front-End (Q1)
</h5>
<p>In the first course we study the front-end of the compiler that parses and type checks programs. We study meta-languages for the definition of the syntax and static semantics of programming languages. [<a href=https://studiegids.tudelft.nl/a101_displayCourse.do?course_id=57369>Study guide</a>]</p>
<a href="https://studiegids.tudelft.nl/a101_displayCourse.do?course_id=55207">
</a>
</div>
</div>
<!--
<div class="card border-dark mb-3">
<div class="card-body">
<h5 class="card-title">
<a href="https://studiegids.tudelft.nl/a101_displayCourse.do?course_id=55207">
</a>
</h5>
<p>In the first course we study the front-end of the compiler that parses and type checks programs. We study meta-languages for the definition of the syntax and static semantics of programming languages. [<a href=https://studiegids.tudelft.nl/a101_displayCourse.do?course_id=57369>Study guide</a>]</p>
</div>
</div>
-->
<div class="border-top border-light-grey pt-3 mt-0">
<div class="card-body pt-0 mt-0 ">
<h5 class="card-title">
CS4200-B: Back-End (Q2)
</h5>
In the second course we study the back-end of the compiler that performs static analysis, optimization, and code generation. [<a href=https://studiegids.tudelft.nl/a101_displayCourse.do?course_id=57374>Study guide</a>]
<a href="https://studiegids.tudelft.nl/a101_displayCourse.do?course_id=55213">
</a>
</div>
</div>
<!--
<div class="card border-dark mb-3">
<div class="card-body">
<h5 class="card-title">
<a href="https://studiegids.tudelft.nl/a101_displayCourse.do?course_id=55213">
</a>
</h5>
In the second course we study the back-end of the compiler that performs static analysis, optimization, and code generation. [<a href=https://studiegids.tudelft.nl/a101_displayCourse.do?course_id=57374>Study guide</a>]
</div>
</div>
-->
<div class="border-top border-light-grey pt-3 mt-0">
<div class="card-body pt-0 mt-0 ">
<h5 class="card-title">
Spoofax Language Workbench
</h5>
<a href="https://tudelft-cs4200.github.io/research/#Spoofax">
<img style="border:1px solid black; width:100pt; margin-left:10px;" src="img/spoofax/Spoofax-Screenshot2.png" class="float-right card-img" alt="">
</a>
The <a href=https://www.spoofax.dev>Spoofax Language Workbench</a> is an environment for the development of programming languages using high-level declarative meta-languages for syntax, static semantics, dynamic semantics, program analysis, and program transformation. We use Spoofax to implement a compiler and IDE for the project language and in homework assignments to experiment with various aspects of compilers in isolation.
<a href="https://tudelft-cs4200.github.io/research/#Spoofax">
</a>
</div>
</div>
<!--
<div class="card border-dark mb-3">
<div class="card-body">
<h5 class="card-title">
<a href="/research/#Spoofax">
</a>
</h5>
The <a href=https://www.spoofax.dev>Spoofax Language Workbench</a> is an environment for the development of programming languages using high-level declarative meta-languages for syntax, static semantics, dynamic semantics, program analysis, and program transformation. We use Spoofax to implement a compiler and IDE for the project language and in homework assignments to experiment with various aspects of compilers in isolation.
</div>
</div>
-->
<div class="border-top border-light-grey pt-3 mt-0">
<div class="card-body pt-0 mt-0 ">
<h5 class="card-title">
ChocoPy: Project Language
</h5>
In the course project students implement a compiler for <a href=https://chocopy.org/>ChocoPy</a>, a subset of Python3 with static types. The back-end of the compiler generates RISC-V code, which can be run with a simulator running on the JVM. The language comes with a <a href=https://chocopy.org/chocopy_language_reference.pdf>fully specified using formal grammar, typing rules, and operational semantics</a>. ChocoPy was developed at UC Berkeley for their compiler course.
<a href="https://chocopy.org/">
</a>
</div>
</div>
<!--
<div class="card border-dark mb-3">
<div class="card-body">
<h5 class="card-title">
<a href="https://chocopy.org/">
</a>
</h5>
In the course project students implement a compiler for <a href=https://chocopy.org/>ChocoPy</a>, a subset of Python3 with static types. The back-end of the compiler generates RISC-V code, which can be run with a simulator running on the JVM. The language comes with a <a href=https://chocopy.org/chocopy_language_reference.pdf>fully specified using formal grammar, typing rules, and operational semantics</a>. ChocoPy was developed at UC Berkeley for their compiler course.
</div>
</div>
-->
<div class="border-top border-light-grey pt-3 mt-0">
<div class="card-body pt-0 mt-0 ">
<h5 class="card-title">
WebLab: Homework Assignments and Exams
</h5>
<a href="https://weblab.tudelft.nl/cs4200/2021-2022/">
<img style="border:1px solid black; width:100pt; margin-left:10px;" src="img/weblab/WebLabScreenshot2.png" class="float-right card-img" alt="">
</a>
We use the WebLab learning management system for homework assignments. In WebLab you can submit answers to exercises with grammars, type systems, and transformations, which we can automatically grade. You can even program the solutions directly in WebLab, but it is probably more convenient at this stage to do that in Spoofax and then copy the solutions. We will also use WebLab for the (online) digital exams for the course. Thus, you will be expected to program in the Spoofax meta-languages at the exam.
<a href="https://weblab.tudelft.nl/cs4200/2021-2022/">
</a>
</div>
</div>
<!--
<div class="card border-dark mb-3">
<div class="card-body">
<h5 class="card-title">
<a href="https://weblab.tudelft.nl/cs4200/2021-2022/">
</a>
</h5>
We use the WebLab learning management system for homework assignments. In WebLab you can submit answers to exercises with grammars, type systems, and transformations, which we can automatically grade. You can even program the solutions directly in WebLab, but it is probably more convenient at this stage to do that in Spoofax and then copy the solutions. We will also use WebLab for the (online) digital exams for the course. Thus, you will be expected to program in the Spoofax meta-languages at the exam.
</div>
</div>
-->
<div class="border-top border-grey">
<div class="card-body pt-3 mt-0 ">
<a href="lectures/index.html">Lectures</a>
| <a href="project/index.html">Project</a>
| <a href="homework/index.html">Homework</a>
| <a href="https://weblab.tudelft.nl/cs4200/2021-2022/">WebLab</a>
| <a href="https://www.spoofax.dev/">Spoofax</a>
| <a href="https://chocopy.org/">ChocoPy</a>
</div>
</div>
</div>
</div>
<div class="row border-top border-bottom border-grey pt-3 mb-3">
<div class="mb-3 col-sm-12 col-md-12 col-lg-6 col-xl-6 border-lg-right border-grey">
<div class="pt-0 mb-1 mt-0">
<div class="card-body pb-2 pt-1">
<h4>Tentative Lecture Schedule CS4200-A/Q1</h4>
<p>
Lectures are on Thursdays 10:45 - 12:45.
</p>
</div>
<ul class="list-group list-group-flush pt-0 mt-0">
<li class="list-group-item">
Sep 2:
<a href="lecture/1.html">What is a compiler?</a>
</li>
<li class="list-group-item">
Sep 3:
<a href="lecture/2.html">Declarative Syntax Definition (Friday!)</a>
</li>
<li class="list-group-item">
Sep 9:
<a href="lecture/3.html">Disambiguation and Layout Sensitive Syntax</a>
</li>
<li class="list-group-item">
Sep 16:
<a href="lecture/4.html">Type Constraints</a>
</li>
<li class="list-group-item">
Sep 23:
<a href="lecture/5.html">Name Binding Constraints</a>
</li>
<li class="list-group-item">
Sep 30:
<a href="lecture/6.html">Constraint Resolution</a>
</li>
<li class="list-group-item">
Oct 7:
<a href="lecture/7.html">More Constraints and Statix</a>
</li>
<li class="list-group-item">
Oct 14:
<a href="lecture/8.html">Parsing</a>
</li>
<li class="list-group-item">
Oct 14:
<a href="lecture/8b.html">More Parsing</a>
</li>
<li class="list-group-item">
Oct 21:
<a href="lecture/9.html">Summary & Further Study</a>
</li>
<li class="list-group-item">
Thu Oct 28, 13:30-16:30:
Exam Q1
</li>
</ul>
</div>
</div>
<div class="mb-3 col-sm-12 col-md-12 col-lg-6 col-xl-6">
<div class="pt-0 mb-1 mt-0">
<div class="card-body pb-2 pt-1 mt-3">
<h4>Tentative Lecture Schedule CS4200-B/Q2</h4>
<p>
Lectures are on Thursdays 10:45 - 12:45. (Note the extra lecture on Friday Sep 4.)
</p>
</div>
<ul class="list-group list-group-flush pt-0 mt-0">
<li class="list-group-item">
Nov 11:
<a href="lecture/10.html">Transformation with Rewrite Rules</a>
</li>
<li class="list-group-item">
Nov 18:
<a href="lecture/11.html">Composing Transformations with Strategy Combinators</a>
</li>
<li class="list-group-item">
Nov 25:
<a href="lecture/12.html">Instruction Sets and Code Generation</a>
</li>
<li class="list-group-item">
Dec 2:
<a href="lecture/13.html">Functions, Calling Conventions, and Code Generation Mechanics</a>
</li>
<li class="list-group-item">
Dec 9:
<a href="lecture/14.html">Nested Functions & Memory Management</a>
</li>
<li class="list-group-item">
Dec 16:
<a href="lecture/15.html">Representing Objects & Register Allocation</a>
</li>
<li class="list-group-item">
Dec 23:
<a href="lecture/16.html">Data-Flow Analysis</a>
</li>
<li class="list-group-item">
Jan 13:
<a href="lecture/17.html">Beyond Compiler Construction</a>
</li>
<li class="list-group-item">
Fri Jan 28, 13:30-16:30:
Exam Q2
</li>
</ul>
</div>
</div>
</div>
<div class="row border-bottom border-grey pt-3 mb-3">
<div class="mb-3 col-sm-12 col-md-12 col-lg-8 col-xl-8 border-lg-right border-grey">
<div class="mb-3 ">
<div class="card-body pb-2 pt-1">
<h4>Recorded Talks about Spoofax</h4>
</div>
<div class="video-container ml-3 mr-3" >
<iframe width="560" height="315" src="https://www.youtube.com/embed/videoseries?list=PLCmRbWMnTaz_XoF823mqmpa65DTliH6tE" frameborder="0" allow="accelerometer; encrypted-media; gyroscope; picture-in-picture" allowfullscreen align="center"></iframe>
</div>
<div class="ml-3 mr-3">
<small>
A <a href="https://www.youtube.com/playlist?list=PLCmRbWMnTaz_XoF823mqmpa65DTliH6tE">YouTube Playlist</a> with recordings of tutorials and research talks about (research related to) the <a href="http://metaborg.org">Spoofax Language Workbench</a>.
</small>
</div>
</div>
</div>
</div>
<!-- <div class="mb-2">
<div class="card-body pb-2 pt-1">
<h4>Upcoming Events</h4>
</div>
<ul class="list-group list-group-flush">
</ul>
</div>
<div class="mb-2">
<div class="card-body pt-1 pb-2">
<h4>Latest News</h4>
</div>
<ul class="list-group list-group-flush">
<li class="list-group-item">
<p class="mb-1">Migrated website to 2021-2021 academic year.</p>
<small class="text-secondary">August 27, 2021</small>
</li>
<li class="list-group-item">
<p class="mb-1">Homework and project assignments about type constraints available</p>
<small class="text-secondary">September 21, 2020</small>
</li>
<li class="list-group-item">
<p class="mb-1">Homework assignments about disambiguation available</p>
<small class="text-secondary">September 14, 2020</small>
</li>
<li class="list-group-item">
<p class="mb-1">The recording of today's lecture is available on Brightspace.</p>
<small class="text-secondary">September 03, 2020</small>
</li>
<li class="list-group-item">
<p class="mb-1">Introduction lecture <a href=/lectures/2020/09/03/introduction/>What is a compiler?</a> on Thursday, September 3, 10:45 - 12:45. Online venue will be announced on Brightspace.</p>
<small class="text-secondary">August 31, 2020</small>
</li>
<li class="list-group-item">
<p class="mb-1">A new website for the compiler construction course</p>
<small class="text-secondary">August 31, 2020</small>
</li>
<li class="list-group-item">
<p class="mb-1">The website of the course in 2019 is at <a href=https://tudelft-cs4200-2019.github.io/>tudelft-cs4200-2019.github.io</a></p>
<small class="text-secondary">August 31, 2020</small>
</li>
<li class="list-group-item">
<a href="/news/">Archive</a>
</li>
</ul>
</div> -->
</div>
</div>
</div>
</main>
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
</body>
</html>