Skip to content

Commit

Permalink
Tweak course desc
Browse files Browse the repository at this point in the history
  • Loading branch information
dbp committed Mar 18, 2019
1 parent c677167 commit 6a4f73b
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 13 deletions.
6 changes: 3 additions & 3 deletions _site/courses/verifcomp/index.html
Expand Up @@ -35,15 +35,15 @@ <h2>Verified Compilers and Multi-Language Software</h2>
</tr>
</tbody>
</table>
<h3 id="why-this-course">Why this course?</h3>
<blockquote>
<p>“Can you trust your compiler?” — Xavier Leroy, developer of the Compcert verified C compiler</p>
</blockquote>
<h3 id="why-this-course">Why this course?</h3>
<p>Software is written in a variety of languages, and in many cases, in order to run, it must be compiled down to some lower-level target. <strong>But what if that compiler isn’t correct?</strong> Compilers are some of the trickier pieces of software we build, and yet bugs in them can be insidious, as bugs in compilers means that one of our most basic debugging strategies, reading source code, may not be helpful, since the source may have been miscompiled.</p>
<p>Software is written in a variety of languages, and in many cases, in order to run, it must be compiled down to some lower-level target. <strong>But what if that compiler isn’t correct?</strong> Compilers are some of the trickier pieces of software we build, and yet bugs in them can be insidious, as bugs in compilers mean that one of our most basic debugging strategies, reading source code, may not be helpful, since the source may have been miscompiled.</p>
<p>We want, essentially, the compiler to be invisible. But it can only truly be invisible if we can be sure that it does exactly what we expect: if we have proved it correct. Colliding with the field of verified compilation is the question of how different languages should be able to interact – that interaction, or linking, happens after compilation, in the lower-level target language. But the goal is to write source-level programs, not thinking about how our various languages compile, and so again, we want the compiler to be invisible.</p>
<p>These are our high-level motivations. The course itself, while motivated with these problems, will be quite low-level: we will be <strong>building languages, compilers, and proving them correct</strong>.</p>
<h3 id="how-will-the-course-be-structured">How will the course be structured?</h3>
<p><strong>Part 1.</strong> We want to produce verified compilers, and so we will use one of the state-of-the-art tools: the Coq proof assistant. This system allows us to write functional programs and prove properties about them; afterwards we can extract runnable versions of the verified programs. The first section of the course will be dedicated to learning Coq and becoming familiar with the process of <em>mechanized</em> proof – that is, proofs that are checked by a machine. The text that we will use for this section of the course is <a href="https://ilyasergey.net/pnp">“Programs and Proofs” by Ilya Sergey</a>.</p>
<p><strong>Part 1.</strong> We want to produce verified compilers, and so we will use one of the state-of-the-art tools used for this: the <a href="https://coq.inria.fr/">Coq proof assistant</a>. This system allows us to write functional programs and prove properties about them; afterwards we can extract runnable versions of the verified programs. The first section of the course will be dedicated to learning Coq and becoming familiar with the process of <em>mechanized</em> proof – that is, proofs that are checked by a machine. The text that we will use for this section of the course is <a href="https://ilyasergey.net/pnp">“Programs and Proofs” by Ilya Sergey</a>.</p>
<p><strong>Part 2.</strong> This part of the course will involve designing, in groups, different source languages. These will all likely be simple functional languages, and we will do plenty of design review to ensure that the language design you pick will not cause too much difficulty later on.</p>
<p><strong>Part 3.</strong> The final part will involve building and proving correct compilers from your language to a common low-level target language. All the languages will compile to the same target language, and so once we have compilers, and concurrent with the verification effort, you will experiment building small programs that use a mixture of different student languages.</p>
<h3 id="a-note-on-collaboration">A note on collaboration</h3>
Expand Down
21 changes: 11 additions & 10 deletions courses/verifcomp.markdown
Expand Up @@ -10,15 +10,16 @@ Instructor Daniel Patterson ([dbp@dbpmail.net](mailto:dbp@dbpmail.net))
Office WVH 308
-------- ------


### Why this course?

> “Can you trust your compiler?”
> &mdash; Xavier Leroy, developer of the Compcert verified C compiler

### Why this course?
Software is written in a variety of languages, and in many cases, in order to
run, it must be compiled down to some lower-level target. **But what if that
compiler isn't correct?** Compilers are some of the trickier pieces of software
we build, and yet bugs in them can be insidious, as bugs in compilers means that
we build, and yet bugs in them can be insidious, as bugs in compilers mean that
one of our most basic debugging strategies, reading source code, may not be
helpful, since the source may have been miscompiled.

Expand All @@ -37,13 +38,13 @@ compilers, and proving them correct**.

### How will the course be structured?
**Part 1.** We want to produce verified compilers, and so we will use one of the
state-of-the-art tools: the Coq proof assistant. This system allows us to write
functional programs and prove properties about them; afterwards we can extract
runnable versions of the verified programs. The first section of the course will
be dedicated to learning Coq and becoming familiar with the process of
_mechanized_ proof -- that is, proofs that are checked by a machine. The text
that we will use for this section of the course is ["Programs and Proofs" by
Ilya Sergey](https://ilyasergey.net/pnp).
state-of-the-art tools used for this: the [Coq proof assistant](https://coq.inria.fr/). This system
allows us to write functional programs and prove properties about them;
afterwards we can extract runnable versions of the verified programs. The first
section of the course will be dedicated to learning Coq and becoming familiar
with the process of _mechanized_ proof -- that is, proofs that are checked by a
machine. The text that we will use for this section of the course is ["Programs
and Proofs" by Ilya Sergey](https://ilyasergey.net/pnp).

**Part 2.** This part of the course will involve designing, in groups, different
source languages. These will all likely be simple functional languages, and we
Expand Down

0 comments on commit 6a4f73b

Please sign in to comment.