Syllabus
CSCI 4602
Automata and Formal Languages
Section 001
Fall 2019

Class meeting Section 1: 9:00–9:50 MWF Austin 302
Section 2: 11:00–11:50 MWF Austin 307
Instructor Karl Abrahamson
Office Sci&Tech C-113
Office hours
MWF 2:00–2:50pm
Th 9:30–11:30am
or by appointment
Phone 328-9689
Email abrahamsonk@ecu.edu
Course web page www.cs.ecu.edu/~karl/4602/fall19/
My web page www.cs.ecu.edu/~karl/
Text: Introduction to the Theory of Computation (third edition) by Michael Sipser

Contents

  1. Prerequisites
  2. Course objectives and outline
  3. Student competencies
  4. Attendance policy
  5. Exams
  6. Grading
  7. Recommendations for success
  8. Additional information

Prerequisites

The prerequisites for this course are CSCI 2405 and 2530 or equivalent. You should have enough knowledge of computer programming to understand how simple programs are written and to understand how to convert an algorithm description into a program. There will be no programming assignments for this course.

This course is mathematical in nature, and you should have seen mathematical proofs before. You will be expected to produce your own proofs. We will go over proofs and how to find and write them in specific cases.

Course objectives and outline

This is a course in the theory of computation. The fundamental question that we will ask is, "What is computable?" Some of the answers are surprising. For example, we will encounter some problems that are easy to express but that are so difficult that no computer program can be written to solve them.

We will also ask what can be computed efficiently. We will encounter problems that can be solved, but only by programs that run for a very long time.

Before asking what can be computed, we need a good understanding of the nature of computation. We will study simple models of computation and explore what they can compute. The following is an outline of this course.

  1. Mathematical preliminaries
    1. Sets
      • {a,b,c}
      • The empty set
      • Finite sets
      • Membership
      • Cardinality, |S|
      • Infinite sets
      • Set comprehensions
      • Union, intersection, difference
      • Subset
      • Sets of sets
    2. Functions
      • Domain, codomain
      • Injections, surjections and bijection
      • Characteristic function of a set
      • Closure of a set under a function
    3. Alphabets and strings
      • Definition of an alphabet
      • Definition of string
      • Sets of strings: languages
      • Infinite languages
      • Σ*
      • Correspondence between strings and natural numbers
      • Classes of languages

  2. Finite state computation
    1. Deterministic finite-state machines (DFAs)
      • DFA diagrams
      • Examples of DFAs
      • States as equivalence classes
    2. Definition of a DFA
      • Definition of the language accepted by a DFA
      • Definition of a regular language
    3. Proving that a language is not regular
    4. Nondeterminic finite-state machines (NFAs)
      • NFA diagrams
      • Definition of an NFA
      • Definition of the language accepted by an NFA
      • Converting from NFAs to DFAs
    5. Regular expressions
      • Regular operations on languages
      • Regular expressions
      • Examples of regular expressions
      • Definition of the language of a regular expression
      • Equivalence of NFA's and regular expressions
    6. Closure properties of the class of regular languages

  3. Algorithms and machines
    1. Algorithms
      • Concept of an algorithm
      • Tentative definition of a computable function
      • Examples of computable functions
      • Tentative definition of a computable language
      • Examples of computable languages
      • Terminology
    2. Turing machines
      • Turing machines that recognize sets
      • Termination issues
      • L(M)
      • Turing machines that compute functions
      • φp
      • Universal Turing machines
      • The Church/Turing thesis
      • Revised definition of computability
    3. Partial computability
      • Definition of a partially computable language
      • Every computable language is partially computable
      • The halting problem
      • The halting problem is partially computable

  4. Uncomputability
    1. Not all languages are computable
      • Hilbert's 10th problem
      • Counting argument that not all languages are computable
    2. Diagonalization
      • The halting problem is not computable
    3. Reductions
      • Turing Reductions
      • Examples of Turing reductions
      • Relationships among functions
      • Relationships among languages
      • Definition of a mapping reduction
      • Examples of mapping reductions
      • Properties preserved by mapping reductions
    4. Using mapping reductions to show uncomputability
      • The contrapositive argument
      • Examples of reductions
      • Rice's theorem
    5. M-complete languages
      • Definition of an m-complete language
      • The halting problem is m-complete
      • Complete languages are not computable

  5. Complexity
    1. Problems and algorithms
    2. Deterministic polynomial-time algorithms, languages and functions
      • Definition of polynomial time
      • Examples of polynomial-time algorithms
      • Languages and functions solvable in polynomial time
      • The class P
    3. Nondeterministic polynomial-time algorithms and languages
      • Definition of a nondeterministic algorithm
      • Examples of nondeterministic polynomial-time algorithms
      • The class NP
      • P is a subset of NP
    4. Polynomial-time mapping reductions
      • Definition of a polynomial-time mapping reduction
      • Examples of polynomial-time mapping reductions
      • P and NP are closed under polynomial-time mapping reductions
    5. NP-complete languages
      • Definition of an NP-Complete language
      • The P = NP question
    6. An NP-complete language
      • The satisfiability problem (SAT)
      • SAT is NP-complete
    7. Proving that a language is NP-complete
      • Examples of NP-complete languages

Student competencies

After successful completion of this course, you should be able to do the following.

  1. Analyze a given deterministic or nondeterministic finite-state machine and determine the language that it recognizes.

  2. Design a deterministic or nondeterministic finite-state machine recognizing a specified language.

  3. Analyze and design a regular expression specifying a given language.

  4. Prove that a given language in not regular.

  5. Perform an elementary closure proof for a given class of languages.

  6. Explain the significance of Church-Turing Thesis.

  7. Discuss the notion of universal Turing machine.

  8. Define computability.

  9. Recognize properties of reductions.

  10. Use reductions to prove interesting results.

  11. Describe a few computational problems that are not solvable by computers.

  12. Define the complexity classes P and NP.

  13. Define NP-complete problems.

  14. List several NP-complete problems.

  15. Explain the practical consequences of a problem being NP-complete.

  16. Demonstrate the NP-Completeness of some computational problems by reduction.

  17. Explain the significance of the P = NP question.

  18. Students should both realize the importance of theory to the field of computer science and develop the abstract thinking needed to pursue it further as desired by them. This is more important than any of the specific outcomes listed above.

Attendance policy and incompletes

I will not take attendance. It is up to you to attend class. If you miss a class, it is up to you to obtain notes and any other information that was provided in the class. Excuses that you did not know about something because you did not come to class and did not obtain the information will not count for anything at all.

Those who choose not to attend class can count on doing poorly in this course. If you choose not to attend class, then you must live with the consequences of that choice, however bad they are. If you are planning to graduate this accademic year, give careful thought before you decide not to attend class.

No incompletes will be issued in this course except for extraordinary circumstances, and even then only if you have completed work of acceptable quality and quantity that it is realistic that you can pass the course with a little more work.

Exams

There will be a midterm exam on each of the following dates.

  1. Monday, September 16
  2. Monday, September 30
  3. Monday, October 28
  4. Monday, November 11
  5. Monday, November 25

You can bring one prepared 8.5x11" piece of paper, written on both sides, to each exam. You can write anything that you like on that paper. I will not collect it.

The final exam times are as follows.

Section 1:  8:00-10:30am, Wednesday, December 11
Section 2:  11:00-1:30, Monday, December 9

You can bring two prepared 8.5x11" pieces of paper to the final exam.

Grading

Grades will be computed as follows.

Grading
5 midterm exams 60–75%
A comprehensive final exam 25–40%

Percentages will be chosen on an individual basis from the indicated range to give you your best score. All midterm exams will have the same weight.

Tentative cutoffs for grades will be as follows. These cutoffs will not be raised.

Grade cutoffs
A 93% C+ 76%
A– 90% C 72%
B+ 87% C– 68%
B 83% D+ 64%
B– 80% D 60%
    D– 56%

Recommendations for success

  1. Attend class. Arrive on time.

  2. Do not bring distractions to class. If you read your email, listen to music, send and receive text messages or engage in other distracting activities during class, you will get very little out of class. That will show up in your grade.

  3. Ask questions in class. If you do not understand something, ask a question about it.

  4. Ask questions outside of class. Either come to office hours or use email.

    For email, please use a subject indicating that you are asking a question for CSCI 4602, and always include your name in your email. Please send email to the address listed on the first page of this syllabus. Do not expect immediate answers. Give yourself time to get answers.

  5. Do the homework. Homework does not count directly in your grade. If you do not do the homework, you will get no feedback on your work. If you get no feedback on your work, you will do poorly on the exams. If you do poorly on exams, you will get a poor grade in this course. If you get a poor grade in this course, you might not graduate. Do the math.

    Do not copy homework answers from the internet. Getting feedback on someone else's work will not help you at all.

  6. Schedule time to work outside of class.

  7. Read relevant sections of the book twice. Take a break (a whole day or longer) in between. Later in the term, go back over your notes and book sections that you looked at earlier in the term. You will learn much more that way.

  8. Get adequate sleep. Sleep is important both before and after you learn new concepts. Sleep before enables you to concentrate and think clearly, and sleep afterwards is critical for moving new information into permanent memory.

Additional information

For information about

please see the auxiliary information at http://www.cs.ecu.edu/~karl/4602/fall16/syllabus-aux.html.