DF CS 454: Theory of Computation
CS 454, Section 001 Sonoma State University Spring, 2024
 
Theory of Computation
Instructor: Henry M. Walker

Lecturer, Sonoma State University
Professor Emeritus of Computer Science and Mathematics, Grinnell College

Although much of this course has been well developed in recent semesters, the SSU CS faculty recently have approved an updated course description. Also, the required SSU Signature Project for SSU's Upper Division GE Area B Requirement for CS Majors has been rethought for this course. Currently, the Web site is reasonably stable, but modest refinements are likely. Check these pages regularly for adjustments.


Contract Negotiations Have Yielded a Tentative Agreement

Since May, 2024, the California Faculty Association (CFA) – the labor union of professors, lecturers, librarians, counselors, and coaches across the 23 California State University campuses – has been in negotiations with the management of the California State University System. After a one-day strike on Monday, January 22, the two sides have reached a tentative agreement, and the strike has been called off. Effective Tuesday, January 23, SSU classes (including CS 454) will be held as scheduled.

Assignment on Proofs, DFAs, and NFAs

  1. Prove:
    12 + 22 + ... + n2 = n(n+1)(2n+1)/6
    for all positive integers n.
  2. Definition: The height of a non-empty tree is defined as the number of nodes on the longest path from a leaf of a tree to its root; the height of an empty tree is defined to be 0.

    Nodes in a Binary Tree: Suppose a binary tree T has height h. Prove that T contains at least h nodes and at most 2h - 1 nodes.

  3. For each of the following, construct a state diagram for the specified language over the alphabet Σ = {0, 1}.

    1. All strings containing exactly two 0's (and any number of 1's).
    2. All strings in which every 0 is followed by exactly two 1's. (Note the empty string is allowed here, as are strings with just 1's.)
    3. All strings that are either all 0's or all 1's. (note the empty string is not allowed here.)
    4. All strings that contain exactly three 0's and two 1's.
  4. Non-negative binary integers divisible by 4 (decimal) [100 (binary)]: Consider the binary representation of non-negative integers that are divisible by 4. These numbers have the following properties:

    Since the problem involves binary numbers, the relevant alphabet is Σ = {0, 1},

    1. Write a DFA with no more than 12 states that accepts exactly these non-negative binary integers that are divisible by 4.
    2. Write an NFA with no more than 8 states that accepts exactly these integers. (For this part, the NFA must not also be a DFA.)

    For each automaton, be sure all transitions are clearly identified and all states are clearly specified as accepting or not.

  5. Comments in C/C++: C/C++ allows two types of comments:

    For the purposes of this problem, suppose all characters within a C/C++ program are from the set {/, *, a, b, N, E}, where N represents the end-of-line character and E represents the end-of-file character. (In a real C/C++ program, of course, the characters a, b would be extended to all letters, digits, punctuation, etc., but that seems too extensive for this exercise.)

    Notes:

created Fall, 2023
revised Fall, 2023
Valid HTML 4.01! Valid CSS!
For more information, please contact Henry M. Walker at walker@cs.grinnell.edu.