0.Introduction§

What we are doing today:

Administration stuff

Course Mechanics: Canvas

Course Mechanics: OpenDSA

What you should already know

Process

The work in this course will come in three forms:

What this course is about

Outcomes (1)

By the end of this class, you will be able to answer questions like the following.

Outcomes (2)

Outcomes (3)

Outcomes (4)

Language Hierarchy

By the end you will know how everything in this picture applies to how compilers work, and to how hard a typical language-related problem is to solve.

Note the interplay between classes of languages, classes of grammars, and classes of machines.

Models of Computation, Languages, Machines

Power of Machines

\[\begin{split}\begin{array}{lll} \mathrm{Machine}& \mathrm{Can\ do}& \mathrm{Can't\ do}\\ \hline \mathrm{Finite\ Automata}& \mathrm{recognize\ integers}& \mathrm{recognize\ arithmetic\ expr}\\ \mathrm{(no\ memory)}\\ \hline \mathrm{Push-Down\ Automata}& \mathrm{recognize\ arithmetic\ expr}& \mathrm{compute\ expression}\\ \mathrm{(stack)}\\ \hline \mathrm{Turing\ Machine}& \mathrm{compute\ expression}& \mathrm{decide\ if\ halts}\\ \mathrm{(unlimited)} \end{array}\end{split}\]

Application: Compilers

There are essentially two parts to compilers:

The main difference between this course and a compilers course is that we focus only on the first part.

To do by next class