CS A351: Automata, Algorithms, and Complexity

Course Syllabus, Spring 2012Textbook

Course Description:   The first half of the course studies the theory of computing.  Topics include finite automata, context free grammars and parsing, regular languages, pushdown automata, Turing machines, decidability, computablity, and complexity.

What does all this mean?  These should become familiar terms as the course progresses.  Overall, the course is fairly mathematical and relies upon logic, algebra, and discrete math.  Some students find the abstract concepts difficult to grasp, particularly the proofs, so be prepared to put in some extra reading if this is the case! In general terms, at first we will study abstract computing devices starting from very simple devices (deterministic finite automata) and moving to complex abstract computing devices (turing machines).  Along the way we'll see other computing devices and ways to describe what can be computed through grammars, languages, and answer basic questions of computability and tractability. Through the concept of a turing machine we will describe algorithms and the complexity bounds of what can be computed.  Some problems we will see are undecidable (they can't be solved by any computer!) while others may be intractable (they can be solved by a computer, but take a ridiculously long time to do so).

The second half of the course studies techniques for the design and analysis of algorithms. This includes problem solving and the study of common problems such as sorting, searching, graph algorithms, string matching.  We will study the techniques used to solve these problems, including brute force, divide and conquer, decrease and conquer, transform and conquer, dynamic programming and greedy algorithms. Students should learn to develop a group of useful algorithms that can be used to solve common problems along with methods to analyze the correctness, time, and space used by these algorithms.

Instructor Goals:  The instructor will:

Student Outcomes: Upon completion of the course the student will be able to:

Homework Assignments :    Due by the beginning of class unless otherwise noted. You may also submit homework via email.  Approximately seven homework assignments will be given, some of which may include programming in the language of your choice.  Late homeworks will be penalized 10% per day late up until the date solutions are posted. Unless otherwise indicated, programming assignments and written assignments must represent your own work. It is permissible to discuss the assignments with other students, but do not discuss the solution.

Questions: If you have any questions, feel free to come in to my office.  In general, I have an open door policy -- if I am available in my office, you are welcome to come by.  An even better way to reach me is through email.  I check my email frequently and you should receive a response quickly.  Email is preferred over telephone and you will probably receive a faster response since I don't check voicemail very frequently.  You can also contact me online via ICQ, AIM, or MSN Messenger (see contact info on the home page).  I'm often up late and will be glad to answer questions if I'm available! 

Grading:  Letter grade. There will be two exams, a midterm and a final exam. The midterm will cover the Automata material and the final will cover the Algorithms material. Unless prior arrangements are made no make-up exams will be given. Since you will be tested upon your critical thinking and problem solving skills and not your ability to memorize formula, the exams will be open book (any written material and a calculator is acceptable to bring to the test). Cheating on assignments and exams is not acceptable. Written homework and programming projects are individual assignments and it is expected that each student does his or her own work.

Grading breakdown:

  Midterm:         25%
  Final:              25%
  Homeworks:  50%      (Each homeworks worth an equal amount)

The grade scale is shown in the table below.  The grading curve may be lowered if necessary but it will not be raised.  This means that if you received an 89% then you will at least get a B+, but may receive a higher grade based on the curve.  (Final grades don't include a + or -).

An incomplete grade will only be given for a valid excuse (e.g. medical, death in the family). An incomplete grade does not let you take the class over again, your final grade will be assigned based on work submitted in class and work that remains to be submitted.

Cheating: Students are expected to uphold the UAA standard of conduct relating to academic dishonesty outlined in the UAA catalog and student handbook.  Cheating is not tolerated and constitutes grounds for dismissal.  For this class, it is permissible and encouraged to assist classmates in general discussions of how to attack the homework problems. It is not permissible to copy another's work (or portions of it) and represent it as your own.