DF
CS 454, Section 001 | Sonoma State University | Spring, 2026 |
Theory of Computation
|
||
Instructor: Henry M. Walker
Lecturer, Sonoma State University |
Although much of this course has been well developed in recent semesters, some details may be adjusted from semester to semester. For example, the Signature Project for this course has satisfied SSU's Upper Division GE Area B Requirement for CS Majors for several years, and satisfying that requirement again this semester. However, details of this project likely vary from instructor to instructor and from semester to semester. Also,
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.
Observation: When a conclusion has two parts, a proof might include one argument for the two parts together, or a proof might be in two separate/independent pieces (one for each part).
For each of the following, construct a state diagram (DFA) for the specified language over the alphabet Σ = {a, b}.
Note: Any DFA must have transitions from each state for every character in the alphabet Σ. Just showing transitions for accepted strings is not adquate.
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},
For each automaton, be sure all transitions are clearly identified and all states are clearly specified as accepting or not.
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:
// */; |   // comment, not syntax error |
f = g/**//h; | // equivalent to f = g / h; |
/*//*/ l(); | // equivalent to l(); |
m = n//**/o + p; | // equivalent to m = n + p; |
Exercise: Draw an NFA state diagram with no more than 12 states that accepts exactly "programs" in which all comments are correctly specified in C/C++ and rejects any "program" that does not have the proper comment structure.
created Fall, 2023 revised Fall, 2023 revised October, 2025 |
![]() ![]() |
For more information, please contact Henry M. Walker at walker@cs.grinnell.edu. |
![]() |
Copyright © 2011-2026
by Henry M. Walker.
|