CMPSCI 250: Introduction to Computation

David Mix Barrington

Fall, 2007

Homework #1 Questions and Answers

Question 1.5, 13 September 2007

In Problem 1.5.4, what exactly is meant by a "loop"? I haven't been able to do part (b) with four circles.

By "loop" I mean a "simple closed curve" -- a line of any shape that eventually meets itself (closing the loop) but doesn't cross itself. I don't think it's possible to get sixteen regions with four circles (I can get fifteen) but you're not restricted to circles so that gives you more options. Any shape of simple closed curve is allowed.

Question 1.4, 11 September 2007

In Problem 1.2.7 part (b), how do we handle the case of the empty string?

A good question. A one-letter string isn't a problem -- all one-letter strings are in this language because the last letter of a one-letter string is the first letter and so is the same letter. But I interpret "the first letter and last letter are the same" to mean that the first and last letter have to exist, so I would say that the empty string is not in this language. I should have said "strings whose first letter exists and is the same as the last letter", which is similar to part (a). Remember that statements of the form "all x are..." are true if there aren't any x's, but this isn't really the same thing.

Question 1.3, 11 September 2007

In Problem 1.4.6, we are asked only to do parts (a), (c), (e), and (g). Do we still have to do all eight parts of Problem 1.4.5?

Yes. Note that in 1.4.6, you need to make your English clear enough that a reader could reproduce the compound proposition in symbolic form. In particular, the English should indicate whether you mean the statement of (a) or that of (b) -- just saying "x and y or z" doesn't make this clear. There are translation hints throughout Section 1.4 and in Excursion 1.11. Sometimes, for example, it's better to translate "x∨y" as "either x or y, or both" rather than just "x or y".

Question 1.2, 9 September 2007

In Problem 1.4.5 part (h), I'm not sure what to do when I get to an expression of the form "a ⊕ b ↔ c", because I don't know whether to evaluate the ⊕ or the ↔ next. Don't I need more parentheses?

I should have given you one more set of parentheses, yes, so you may assume that the ⊕ is evaluated first, i.e., that the formula is:

(((y ∧ ¬x) ⊕ (¬y → x) ) ↔ (z ∨ ¬x)) ↔ z

As I'll show in lecture Monday 10 September, it actually doesn't matter whether you evaluate the ⊕ or the ↔ first because these two operators are associative with each other. (You can rewrite "a ↔ b" as "a ⊕ b ⊕ 1" and use the fact that separate ⊕ operators are associative (and commutative) with each other.)

Question 1.1, 9 September 2007

In Problem 1.2.7, what kind of answer are you expecting? Java code?

Yes -- for each of the four parts you should write a Java static method that takes a String argument and returns a boolean, because that's what a "decision procedure" does. (For each set, your decision procedure returns true if the input String is in the set and false if it isn't.) You won't be graded strictly on your Java syntax, but actually running the code is an excellent way to increase your confidence that it is not only syntactically correct but actually does the right thing.

Last modified 13 September 2007