Computer Science 341 deals with mathematical models of computation -- specifically, automata, which are idealized machines for manipulating strings of symbols, and grammars, which are collections of rules for transforming strings of symbols -- and with the characteristics of the classes of functions that can be defined and computed within these models. By abstracting from all attributes of actual computation that are not readily formalized, automata theorists have been able to establish quite general results about the capabilities and efficiencies of various computational methods. We shall study both the results that they have obtained and the mathematical techniques they use.
Office: Science 2418
Telephone: extension 3181
E-mail: stone@cs.grinnell.edu
Office hours: Mondays, 9 to 11 a.m.; Tuesdays, 2:15 to 4:15 p.m.; Thursdays, 2:15 to 4:15 p.m.; and by appointment.
The textbook for the course is
Professor Sipser has kindly provided a list of errata discovered since the publication of his book. Consult it carefully.
If any of you are interested in seeing alternative approaches to the subject, I can recommend the following book:
Students in this course are expected to learn the ideas, propositions, proofs, and techniques that the assigned sections of the textbooks present. They are required to demonstrate their learning by asking and answering questions, submitting solutions to exercises, and writing and revising entries in the course wiki.
The class meets in Science 2424, three times a week -- Mondays, Wednesdays, and Fridays at 2:15 p.m. I've prepared a tentative schedule of topics. Since I'll probably revise it often during the semester, you should re-examine it frequently.
I strongly encourage you to attend the meetings of the class. To reinforce this recommendation, I require anyone who misses a class session to submit written answers to a set of study questions dealing with the topics we covered. (The study questions are available to everyone, but students who attend class need not write up and turn in the answers.)
The written work for the course comprises several exercises. A few of these are taken from Sipser's book; I contrive the rest. Some of the exercises involve programming, but most are mathematical in nature and call for you either to prove some proposition, to construct an example that fits some general description, or to apply some algorithm by hand.
Except for computer programs, which you should submit by electronic mail, I prefer to receive your solutions to exercises in hard copy. Please do not submit illegible papers, particularly handwritten ones.
Your grades on the exercises make up one-half of the final grade. My evaluation of your contributions to the course wiki will constitute two-fifths. The remaining tenth will be determined by in-class participation, with occasional additions of extra credit for ingenious, entertaining, and helpful contributions to the course.
Since you will receive credit for the exercises on the basis of your individual performance, it would be unethical to submit any work that is not your own or to collaborate on solutions, arrogating the results of other people's intellectual effort.
The development of the course wiki is by nature a collaborative work, and I encourage discussion and the exchange of ideas and suggestions about it, both on the wiki itself and in informal conversation. However, it would still be unethical to sign your contributions to the wiki with someone else's name, or to submit anyone else's work or ideas without proper attribution.
If I encounter any indications of plagiarism, I do not try to address them myself. The Faculty Handbook requires me to submit them, along with my report, to the Committee on Academic Standing, which has a subcommittee that deals with such matters.