Test 1: Regular Languages
Test 1 covers regular languages (chapter 1 of the Sipser text) and
also how regular expressions are used in string matching programming languages
(like perl) and editors (like vi or emacs).
Important topics include various equivalent ways to define regular
languages and using the pumping lemma to show that things are not
regular.
Grading Scale
There were 56 possible points. The highest score was 50/56. Here
is an approximate letter interpretation of your score.
-
-
| Scores | Letter |
| 42-50 | A |
| 37-41 | B |
| 31-36 | C |
| 25-30 | D |
Test 2: Context Free Languages
Test 2 covers regular and context free languages (chapters 1 and 2 of the
Sipser text) with an emphasis on context free.
Important topics include various equivalent ways to define context free
languages and using the pumping lemma to show that things are not
context free.
Test 3: Turing Machines and Decidability
Test 3 covers Turing machines and decidability (primarily chapters 3 and 4
of the Sipser text, but we have often needed to recall information from
chapters 1 and 2 as well.)
Important topics include the formal definition of Turing machines,
variants of the Turing machine model, decidable and computably enumerable
languages, cardinality (size of sets) and diagonalization arguments
(uncountablility and halting problem).
Some More Details
Homework Solutions
I have typed up solutions
to some problems from chapter 4. They are available in
ps and
pdf formats.
Feel free to have a look if you like.
Terminology
We have used the terms computable and computably enumerable
for decidable and Turing recognizable. You should be familiar with
both terminologies. Of course, you may choose which one you use when
you are writing.
Languages
The languages we have dealt with in this section have been somewhat
trickier than in previous sections. You should be able to read and write
language descriptions using verbal descriptions, set notation, and using
our "Instance/Question" paradigm. You should also be able to tranlsate
between these ways of these kinds descriptions. Be sure you keep in mind
what type of things are candidates for membership in various languages
(string, machines, pairs of machines, a machine and a string, etc.)
It is also useful to
be familiar with some of the example languages we have seen, like
ADFA,
EDFA,
EQDFA,
ACFG,
ECFG,
EQCFG,
ATM, etc.
and the diagonal language that showed ATM cannot be decidable.
Recalling these examples is also useful for proving other languages
(like INFINITEDFA) are or are not decidable or computably
enumerable.
Closure Properties of Language Classes
We made repeated use of closure properties of regular, context free,
decidable and computably enumerable languages. You should be familiar
with these and also be able to prove them. (Example:
the class of decidable languages is closed under intersection.)
Cardinality
You should know the definition of "same size as" (|A| = |B|)
and "no bigger than" (|A| <= |B|)
and be use them.
The most important distinction here is between countable (same size as
the natural numbers) and uncountable sets (infinite, but not the same size
as the natural numbers).
You can prove that a set A is countable in one of two ways.
Both ways use a set B which is already known to be countable (often
the natural numbers, but any countable set will do).
- show directly that |A| = |B|. That is find a function
f:A -> B (or f:B -> A) that is both
1-1 and onto.
- show that |A| <= |B| that |B| <= |A|
There are several ways to do this:
- You could find functions f:A -> B and g:B -> A
that are both one-to-one.
- You could find functions f:A -> B and g:B -> A
that are both onto.
- You could find functions f:A -> B and g:A -> B
with one of them onto and the other one-to-one; or
- You could find functions f:B -> A and g:B -> A
with one of them onto and the other one-to-one; or
In practice, I find 2a is often the easiest method.
There are also two ways to show that A is uncountable:
- Use the diagonalization method.
- Show that A is the same size as some other uncountable set.
To CPSC 260 Home Page
This page maintained by:
Randall Pruim
Department of Mathematics and Statistics
Calvin College
rpruim@calvin.edu
Last Modified:
Tuesday, 23-Apr-2002 23:55:03 EDT