General information

Course links

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.

The instructor

John David Stone

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.

Readings

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:

Requirements

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.

Class sessions

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.)

Exercises

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.

Grading

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.

Individual and collaborative work

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.

Previous versions of the course