CoSc 345 Theory of Computation

"In studying [the theory of computation,] we seek to determine what can and cannot be computed, how quickly, with how much memory, and on which type of computational model.... It provides conceptual tools that practitioners use in computer engineering.... [I]t shows you a new, simpler, and more elegant side of computers." (Michael Sipser, pages xi-xii)

Objectives

  1. To understand and use a variety of formal models for machines including finite automata, pushdown automata, and turing machines.
  2. To understand and use a variety of formal languages including regular and context-free languages.
  3. To recognize whether given problems are computable or not.
  4. To analyze the efficiency and space/time requirements of algorithms, particularly whether algorithms are in class P or NP.
  5. To develop mathematical skills including abstraction, symbolic manipulation, recursion, and proof.
  6. To develop a working knowledge of the functional programming language Scheme.

Prerequisites

All students are expected to have completed, with at least a grade of C, the equivalent of Math 205 Discrete Mathematics, Math 211 Calculus I, and CoSc 215 Data Structures and Algorithms.

Instructor

Instructor: David Housman
Office: SC 112, 535-7405
E-mail: dhousman@goshen.edu
Course Home Page: http://www.goshen.edu/~dhousman/cosc345
Office Hours: http://www.goshen.edu/~dhousman/Schedule.htm

If you are having difficulties or just a few questions not resolved during class time, please stop by my office, call me, or email me. I want difficulties to be resolved and questions answered before they become immovable obstacles to your success. Please let me know if you find the course material too difficult or too easy, if the pace of the course is too fast or too slow, if you have suggestions for improving the learning environment, or if the course is not what you expected. We will work out a solution that will make the course much more profitable and enjoyable for you.

Resources

Class Come to AD 36 on TR 12:30 - 1:45 p.m. Prepare beforehand by reading and solving problems. Bring your text. Engage in the activities and discussion. Ask questions. Share your understanding with others. Take notes on your discoveries.
Text Introduction to the Theory of Computation by Michael Sipser. We will cover chapters 0 - 5 and 7. The Little Schemer by Daniel P. Friedman and Matthias Felleisen. We will cover the entire book. Read carefully. Work on exercises and problems. Write down questions to ask.
Website Visit www.goshen.edu/~dhousman/cosc345. Review lecture notes. Obtain laboratory assignments and other handouts. Download software. View software documentation. Link to a variety of resources. Visit courses.goshen.edu to send email to classmates and participate in the discussion board.
Software We will be using DrScheme, by PLT, Rice University. Information about and free downloads of DrScheme can be obtained from http://www.cs.rice.edu/CS/PLT/packages/drscheme/.
Assignments Apply the concepts and techniques introduced in class and readings in order to solve problems and write algorithms and programs.
Final Exam Synthesize and apply the concepts and techniques learned throughout the course. Expect in-class and take-home portions.
Classmates Discuss classes, readings, and exercises with other students. Ask them questions and try to answer their questions. Schedule a regular time and place for group study. Review together for written exams. Try pair programming.
Instructor Listen to his remarks during class. Ask questions during class, lab, office hours, and via phone and email. Be prepared to not receive immediate answers. Answer his questions as he tries to guide you toward your own answers.
Time Schedule sufficiently long periods of study with breaks for other courses, activities, sleep, and so forth. Do not cram for exams. Do not work on programs for too long in a single stretch. Schedule some time for reflection on and synthesis of what you have been learning.
Learning Resources Center, AD 11 Learn more about good study habits, how to take exams, how to combat "exam anxiety", or how to identify and deal with learning disabilities. Request tutoring.

Collaboration

Learning is often enhanced when students study together; however, learning does not occur when one student simply provides to another student large portions of computer code or written solutions to assignments. Similarly, it is often helpful to make use of the variety of textual resources in addition to the text book; however, learning is not aided by wholesale copying from a textual resource. I encourage beneficial collaboration and discourage detrimental copying with the following policies.

Assignments. You may not obtain someone else's solutions or code. You may look at and discuss another student's solutions or code, but you may not create or receive any written record during the discussion. You should give written acknowledgement to people with whom you have had discussions (even if you primarily gave, rather than received information) and written materials that were helpful.

Exams. You may not use any resources unless a specific exception is stated by the instructor. You may converse about the exam with no one other than the instructor.

Penalties. Failure to observe the above rules will result in a penalty ranging from a zero on the assignment, lab, or exam to immediate failure of the course. Any violation of academic integrity will be reported to the Academic Dean.

Rewards. Observation of the above rules will help you learn the material well and give you the satisfaction of knowing that you have earned your grade

Grading

Your grade will be based upon your performance on assignments (70%) and the final exam (30%). A semester average of at least 90%, 80%, 70%, and 60% will typically earn a grade of A, B, C, and D, respectively. Some upward or downward adjustment may be made based upon class participation, effort, and progress.

Due Date Policy. Except in extraordinary circumstances (such as an extended illness or injury, or personal or family crisis), assignments and exams should be submitted by the specified deadline. For most assignments, there will be a resubmission opportunity about one week after the due date. Resubmissions (or late first submissions) will be penalized 30% of the total possible grade.

Submission Standards. All work submitted must contain your name and an acknowledgement statement. Files should be placed in the appropriate drop box folder. Written work should be submitted on paper that is standard size (8.5" by 11") and free from ragged edges. Multiple pages should be stapled, paper clipped, or placed in a folder. Work should be typed or written neatly. Resubmissions must include the original graded work in addition to the revisions.

Incomplete Grades. As a general rule, "incomplete" grades are not given in this course. Exceptions may be granted for documented prolonged medical or extenuating circumstances. However, an incomplete grade will not be granted because a student missed assignments, got behind in coursework, or had difficulty keeping up with the pace of the course. It is your responsibility to be current in your coursework and to ask for assistance or tutoring as needed.

Roles of Instructor and Student

You and I share the responsibility to ensure that tasks and feedback actually facilitate learning and that evaluations are accurate and fair. Based upon my experience and training, I should establish course goals that are important and realistic, assign tasks that should facilitate learning, ensure that necessary resources for your learning are made available, and accept and respond to your assessments of the value of tasks assigned and resources provided. You should ensure that course goals are compatible with your personal goals, make a good-faith effort to complete assigned tasks, utilize available learning resources, and assess the value of tasks assigned and resources provided.