CS 154: Formal Languages and Computability, Spring 2007

For contact information please see http://www.cs.sjsu.edu/~taylor/term/spring07/contact.html

Course Website

The course website can be found at http://www.cs.sjsu.edu/faculty/taylor/term/spring07/CS154/. This site contains a link to this greensheet, a schedule of classes thus far, and a tentative schedule of future class topics, along with other information and announcements.

Course Goal and Description

Goal: To introduce students to the basic concepts of theoretical computer science, and to show them that many of the origins of these questions came from some very practical considerations.

Topics covered will include regular and context-free grammars, finite automata, minimization, regular expressions, pumping lemmas, closure properties, nonequivalence of deterministic and non-deterministic PDA's, Turing machines, and recursive, recursively enumerable, and undecidable languages.

Prerequisite Courses

You must show me that your prerequisite courses have been satisfied in office hours. If you do not show me by February 1 (the second week of classes), you may be dropped from the course. You should show me grades for CS46B, and Math42, or their equivalents on a departmental course equivalence form. You must have a C- or better in each course. Students hoping for an exception must discuss their situation with me. CS46A is implicitly required, because it is a prerequisite for CS46B. Prerequisite courses and relevant topics covered:
CS46B: Recursion, Big-O notation.
Math42: Sets, logic, proofs, induction, combinatorics, and equivalence classes.

Textbooks

The book is:
An Introduction to Formal Languages, and Automata (Fourth Edition)
Peter Linz
ISBN: 0-7637-3798-4, Jones and Bartlett Publishers, 2006.

You can find errata (bug reports) for the book at http://computerscience.jbpub.com/catalog/0763737984/.

We will cover most of the first nine chapters, plus parts of chapters 10, 11, and 12. Other topics may be added depending on time. The course website has a link to a tentative course schedule with more precise readings from the book.

Course Objectives

Student Learning Outcomes

Upon successful completion of this course, students should be able to:

Class Participation

Class partiticipation and feedback are very important to keep the course interesting. If I am covering material too slowly or quickly, or if I am not clearly explaining things, you must let me know. I prefer an interactive learning environment. If you disagree with something I say, speak up. Argue with me in front of the class. It will make the class better, and right or wrong, constructive interaction will not not hurt your grade. If you are correct, clearly my mistake should be corrected. If you are incorrect, probably I have not explained something clearly anyway, and at least half of the class is confused by it. Point it out right then and there. I reserve the right to improve a student's grade by up to 1/3 grade due to class participation.

Grading

Homework: There will be written homework assignments for most class meetings, as well as reading assignments for almost every class meeting.

Written assignments: Unless otherwise specified, homework assignments should be done individually. You may talk to other students about the assignment, but you should be writing solutions independently, and you should understand every answer you submit.

The lowest 1/6 (rounded up) of homework grades for each person will be dropped for the semester. Not all homework will be collected, and for collected homework, not all questions will be graded.

You are encouraged to start each written problem independently, and spend some time on each question alone, before discussing the problem with others. After any discussion, you should write solutions independently, and you should note on your homework submission the names of any reference used (other than the text and the instructor). There should be no more than 3 names referenced for any homework, you should not discuss the problem with more students than that.

Besides the given course textbook and me, all sources used to help in the homework (other texts, other people) must be referenced properly. Failure to properly reference is considered cheating. When you discuss programming assignments with people, this should be referenced on your written assignments too. Please do not use web-sites to help you with your homework or programming assignments, other than to find other references (papers, texts). I realize that there are worthwhile sites on the web, but I have sometimes found that students get into trouble, "borrowing" a bit too much from other sites. So, please do not use other websites as references. (If you think that you have good reason to, please discuss it with me first.) You absolutely may not use the web to directly find solutions to assigned questions.

Not all homework questions will be graded. The homework is a tool for you to learn the material. It is given to help you prepare for the tests, and for future classes. Some questions will be graded as just "attempted" or "not attempted", others will be graded more completely, and others not at all. In total, the homework will be worth 14% of your grade. This is enough to help raise your grade, but not enough to risk cheating. The difference in your homework grade from doing it honestly vs. cheating is probably not worth the risk of being caught, as people have been caught before, and they have failed the course. Your course performance will improve if you make a real attempt at the homework.

Late Homework Policy: Please submit homework on time. If you have a real reason why the homework is late, and I have not yet discussed solutions or handed back homework, I will accept late homework, but once we have had solution discussions, or homework is passed back (for either section), it is too late. Homework is due at the start of class.

Students should attend all meetings of their classes, not only because they are responsible for material discussed therein, but because active participation is frequently essential to insure maximum benefit for all members of the class. Attendance per se shall not be used as a criterion for grading.

Please do not ask me ahead of time if I will be passing out solutions in a given class. I do not want to encourage anybody to not turn in homeworks when due, I only want to encourage people to work on homework in general. As of right now, I plan to have solutions ready for every due date.

Programming assignments: The programming assignments are to be done individually, unless otherwise specified. I will determine whether or not there will be any programming assignments as the course progresses. If there are, they will count as part of the regular homework grade. Unless otherwise specified, programming assignments may be discussed, but should be implemented individually. More information will be given at the time of the first programming assignment. Never use any code you find on the web.

Survey Homework: There will be two surveys for you to take, during the semester. These will be discussed elsewhere, as I will hand out student consent forms during the first class meeting. They will be worth 1% of your grade each, and there will not be other homework assigned during the survey time. The first survey will be due at the start of the second class, and will not be accepted late. Although 1% may not seem like a lot of credit, it is 1% you can lock in, and points may be harder to come by on the tests. The second survey will be due approximately 2/3 of the way through the course. This will be discussed extensively during the first class meeting. Unlike other homework assignments, these two homework assignments will not be returned.

Quizzes: At the start of some classes, I will give a quiz. This will not be announced ahead of time. The unannounced quizzes will be very closely related to the homework questions due that day, or due the previous class. Quizzes will be given near the start of the class period. The lowest 1/5 (rounded down) of quizzes will be dropped for each student. Quizzes will be worth 14% of your grade.

Tests: There will be two tests during the semester, the first worth 15% of your grade, the second 20%. Each test question will have a point value and a "default" value of 30%. If the question is left blank (or the default value clearly circled and the question crossed out), you get the default value. The goal is to allow you to spend your time correctly answering questions which you can best answer, and concentrating on the questions which you find to be difficult but not impossible. It will also help to avoid the practice of writing as much random material for a question in hopes that the grader will pick out the correct parts and give "pity points": answers with no structure which seem nonsensical will receive 0%, even if somewhere in them there is some partially correct statement. The default option may be used for at most 50% of the total test points.

Final: The final exam will be worth 35% of your grade. If you ace the final, it is worth 100% of your grade. Thus, it is never "too late". Do not count on this option: the final will be more difficult than the other exams, and will be normalized to have a lower average than the midterms.

Course grade: After computing numerical grades for each student, letter grades are assigned on a curve. I generally look for gaps in which no student has a grade to make changes to the letter grades assigned, to avoid situations where just a few extra points over the entire semester would change the grade of a student. I reserve the right to improve a student's grade by up to 1/3 grade due to class participation.

Academic Honesty

No homework assignment answers should be gotten from the web, or from previous courses. All collaboration must be reported. Students caught cheating may fail the course and should expect to be reported appropriately.

If you would like to include in your homework any material you have submitted, or plan to submit, for another class, please note that SJSU's Academic Integrity policy S04-12 requires approval by instructors.

For further greensheet information please see http://www.cs.sjsu.edu/greensheetinfo/index.html