theoryIntro - Abstract Thinking, Intro to the Theory of...

Info iconThis preview shows pages 1–4. Sign up to view the full content.

View Full Document Right Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: Abstract Thinking, Intro to the Theory of Computation SC/COSC 2001 3.0 Lecture Notes Jeff Edmonds Winter 99-00, Version 0.2 Contents 1 Preface 2 2 DFAs, Iterative Programs, and Loop Invariants 5 2.1 Different Models and Notations for Simple Devices and Processes . . . . . . . . . . . . . . . . 5 2.2 Iterative Programs and Loop Invariants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3 Mechanically Compiling an Iterative Program into a DFA . . . . . . . . . . . . . . . . . . . . 9 2.4 More Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3 Converting NFA to DFA using the Clones and the Iterative Program Levels of Abstrac- tion 22 4 Overview of Results 28 5 Pumping vs Bumping Lemma 30 5.1 Pumping Lemma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.2 Bumping the Pumping Lemma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 6 Context Free Grammars 36 6.1 Proving Which Language is Generated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 6.2 Pumping Lemma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 7 Parsing with Context-Free Grammars 42 1 Chapter 1 Preface These notes are by no means complete. They are just those that I have managed to scratch together so far. Intro: Thinking Abstractly: On one level, this course can be viewed as teaching a sequence of simple models of computation and simple algorithms. On a higher level, the goal of the course is to teach you to think abstractly about computation. The more abstractions a person has from which to view the problem, the deeper his understanding of it will be, the more tools he will have at his disposal, and the better prepared he will be to design his own innovative ways to solve the problems that may arise in other courses or in the work place. Hence, we present a number of different notations, analogies, and paradigms within which to develop and to think about algorithms. Explaining: To be able to prove yourself within a test or the world, you need to be able to explain the material well. In addition, explaining it to someone else is the best way to learn it yourself. Hence, I highly recommend spending a lot of time explain the material over and over again out loud to yourself, to each other, and to your stuffed bear. Dreaming: When designing an algorithm, the tendency is to start coding. When studying, the tendency is to read or to do problems. Though these are important, I would like to emphasis the importance of thinking, even day dreaming, about the material. This can be done while going along with your day, while swimming, showering, cooking, or laying in bed. Ask questions. Why is it done this way and not that way? Invent other algorithms for solving a problem. Then look for input instances for which your algorithm gives the wrong answer. Mathematics is not all linear thinking. If the essence of the material, what the questions are really asking, is allowed to seepthinking....
View Full Document

This note was uploaded on 12/11/2010 for the course CSE CSE 2001 taught by Professor N during the Winter '10 term at York University.

Page1 / 49

theoryIntro - Abstract Thinking, Intro to the Theory of...

This preview shows document pages 1 - 4. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online