CPSC 260
Formal Languages and Automata
Spring 2002

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.
ScoresLetter
42-50A
37-41B
31-36C
25-30D

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).

  1. show directly that |A| = |B|. That is find a function f:A -> B (or f:B -> A) that is both 1-1 and onto.
  2. show that |A| <= |B| that |B| <= |A| There are several ways to do this:
    1. You could find functions f:A -> B and g:B -> A that are both one-to-one.
    2. You could find functions f:A -> B and g:B -> A that are both onto.
    3. You could find functions f:A -> B and g:A -> B with one of them onto and the other one-to-one; or
    4. 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:

  1. Use the diagonalization method.
  2. 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