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