- Students should demonstrate an understanding of basic concepts in formal language theory, grammars, automata theory, computability theory, and complexity theory.
- Students should be able to relate practical problems to languages, automata, computability, and complexity.
- Students should demonstrate an increased level of mathematical sophistication.
- Students should demonstrate an understanding of and be able to apply mathematical and formal techniques for solving problems in computer science.

bldg. 70, room 3645

Email: my_initials at cs.rit.edu (please replace my_initials with ib)

- Monday 2:30-4:30pm;
- Tuesday 4-6pm;
- and by appointment.

- Algorithms and data structures at the level of an introductory programming sequence.
- Discrete Mathematics. You should have taken a course
in discrete mathematics covering
- fundamentals of logic
- sets
- relations
- equivalence relations
- functions
- simple combinatorics

To refresh your memory on discrete math, read (and do some of the exercises of) Sections 1.1, 1.2, 1.3, 1.4, 2.1, 2.2, 2.3 of the course book.

If you have taken a rigorous course in theory of computation, including formal languages, grammars, automata theory, computability, and complexity, it may be possible to replace 4005-700 with the more advanced course 4005-702 (Computational Complexity). If you are interested in doing this, please contact Dr. Hans-Peter Bischof (hpb at cs.rit.edu).

If you are a BS/MS student, and you have already taken 4003-380, you will need to replace 4005-700 with 4005-702.

Unless it is specifically stated otherwise, you may work on and submit your homework in groups of 1 or 2. If you choose to work as a group of 2, both of you should contribute significantly to the solution for every question. You should submit only one copy of the homework with both your names on it. You are not allowed to discuss the homework with anyone except your homework partner and me. You are also not allowed to look up the answers to your homework, to look at other people's homework, to eavesdrop on other people's homework discussions, etc. You should submit only work that is completely your own and you should be able to explain all of your homework to me.

Your homework submissions must be submitted by
**Wednesday, 6pm** sharp.
You have the following submission options:

- Upload it to mycourses.
- Give it to me during office hours.
- Bring it to the mentoring center and give it to the
**theory tutor**. - Fax it to 585-475-7100.

I will stop answering homework questions at 10am the day it is due. (This means that you can send an e-mail with a homework question by Wednesday 10am and I will answer it as soon as possible, I will do my best to send my answer before 1pm.)

Quizzes can not be made up for any reason. However, I will drop the lowest two quiz grades.

Exams can not be made up except for real emergencies in which case proper documentation (like a doctor's note) will be required. If at all possible, you should contact me prior to the exam. Oversleeping, cars that don't start etc. do not constitute a valid excuse.

- 25% Homeworks
- 25% Quizzes and the best of
- 25% Midterm and 25% Final Exam or
- 20% Midterm and 30% Final Exam

> 88%: A; 77%-88%: B; 66%-77%: C; 55%-66%: D; < 55%: F.

However, your final grade will never be more than one letter grade higher than the average of your quizzes, midterm, and final. In addition, if the average of your quizzes, midterm, and final is below 55%, you fail the course.

Note: In the first week the tutoring will take place in the CS theory lab (70-3672).

One rule about tutors: You are not allowed to discuss open homework problems with them (you can however discuss them with me). Any (attempted) discussion with graders or tutors regarding current or future homework assignments will be considered cheating.

All grades will be posted on myCourses.

You should only submit work that is completely your own. Failure to do so counts as academic dishonesty and so does being the source of such work. Submitting work that is in large part not completely your own work is a flagrant violation of basic ethical behavior and will minimally be punished with failing the course.