CPSC 313 — Online Notes
u of c faculty of science computer science cpsc 313

About These Notes

Please note that the following material is not intended to replace attendance in lectures and tutorials for this course. You should use this material to prepare for lectures and tutorials and to supplement your own notes.

Online Notes

Finite Automata and Regular Languages

  • Slides on Finite Automata and Regular Languages: Prepared by Professor Verwaal, these will be used in the early weeks of this course during the early afternoon (and, possibly, the late afternoon) lectures.

  • Example: Design and Verification of a DFA: Prepared by both instructors, this supplements material presented in lectures on Friday, January 14 and Monday, January 17.

  • Verification of Nondeterministic Finite Automata: This discussion of the verification of NFAs is not required reading, but it might be of interest to students who are interested in knowing how to show that a nondeterministic device has a given language — the process to be followed is not quite the same as the process one should use to verify a deterministic device.

  • More About Nondeterministic Finite Automata with Epsilon-Transitions: This document is not required reading. Instead, it is for interest only. It includes additional information about epsilon-closures that would be useful if you wanted to write a computer program to decide whether a given epsilon-NFA accepts a given string.

  • Proving Properties of Regular Expressions: This includes brief descriptions of processes that can be followed to prove various kinds of properties of regular expressions, examples of these proofs, and exercises that students can use to improve their proof-writing skills.

  • Conversion from Finite Automata to Regular Expressions: This discusses a construction for the conversion of a finite automaton into a regular expression that is slighty simpler than the (very similar) construction given in Section 3.2.2 of the textbook. It includes a complete example of the use of this construction.

  • Proof That a Language is Not Regular: This includes an example in which the “Pumping Lemma for Regular Language” is used to show that a language is not regular. This is provided as an example for students who are not sure how much detail they should give when answering questions on tests in this course.

Context-Free Grammars and Languages

  • Slides on Context-Free Grammars and Languages: Prepared by Professor Verwaal, there will be used in the middle of this course during the early afternoon (and, possibly, the late afternoon) lectures.

  • Correctness of Context-Free Grammars: This includes examples of proofs of correctness of context-free grammars and a discussion of template for these proofs. It may be helpful to read this document before working on Assignment #2.

  • Ambiguity in Context-Free Grammars and Languages: This includes examples of proofs concerning ambiguity in context-free gramamrs and a discussion of the things you should try to do in order to develop proofs like these yourself.

  • Conversion to Chomsky Normal Form: This includes a description of the process, discussed in lectures, to produce a context-free grammar in Chomsky Normal form whose language is almost the same as the language of a given grammar (the language of the original grammar might include the empty string but the language of the derived grammar cannot). It also includes a detailed example of the application of this process.

  • Chomsky Normal Form and Parsing: Prepared by Professor Verwaal, these slides include an example of the conversion of a grammar into Chomsky normal form and an application of the “CYK algorithm” to decide whether a string is in the language of the resulting grammar.

Turing Machines and Decidability

  • Slides on Turing Machines and Computability: Prepared by Professor Verwaal, there will be used for the last part of this course during the early afternoon (and, possibly, the late afternoon) lectures.

  • Turing Machines: An Example and Analysis: This includes a proof that a given Turing machine has a given language, as well as comments of correctness of both Turing machines and computer programs. It is not required reading — students will not be asked to generate proofs like these in this course. On the other hand, it may be of interest to students who are interested in seeing how complicated structures (like Turing machines or programs) can be verified.

  • A Nondeterministic Turing Machine: An example of a nondeterministic Turing machine is presented and discussed.

  • Reductions and Undecidability: This discusses the formal notion of “reductions between languages” as well as a somewhat less formal notion of “reductions between decision problems” that are described in classes and in Chapter 9 of the textbook. Students may find this material useful when working on the final tutorial exercise and on Assignment #3 .

  • Reductions by Generalizations/Specializations: This discusses one very simple kind of reduction between problems that can sometimes be used to show that a problem is undecidable.

  • Reductions by Transformations of Machines This discusses another kind of reduction between problems that is useful when considering problems whose inputs include encodings of Turing machines.