General Information

Course Outline

The course deals with fundamental questions of computer science:

  • What is a computer?
  • What can computers do (and what can they not do)?
  • Why are some problems computationally hard, while very similar ones are computationally easy?

These questions were mostly raised during the 20th century, and they accompanied and guided the actual development of computers.

Many of these and related questions were resolved, but some (especially those dealing with computational hardness) retained their status as key open problems into the 21st century.


Location and Hours

Please check the course schedule.


Homepage|ynneb#rohC ynneB .forP

Teaching Assistants:

moc.liamg|metorlag#metoR laG|ksomtiro#hcivoksoM tirO
Feel free to coordinate reception hours with any of us via email.


  • Formal prerequisite: Extended introduction to CS (aka Scheme).

If you're a non-CS student and you wish to take this course, you are encouraged to contact the instructor.


In any case, one has to pass the exam in order to pass the course. In addition, at least 5 out of 6 homework assignments must be submitted, and get a passing grade.

  • Effective HW Grade = average of best 5 out of 6 (non-submission and late submission are 0).
  • Final Grade = max(0.75 * Final Exam + 0.15 * Midterm + 0.10 * homework, 0.9 * Exam + 0.1 * homework)



  • M. Sipser, Introduction to the Theory of Computation, PWS Publishing Co., 1997 (second edition, 2005).

Reference books

  • C. Papadimitriou, Computational Complexity, Addison-Wesley Publishing Co., 1994.
  • H. Lewis and C. Papadimitriou, Elements of the Theory of Computation, Prentice-Hall, 1981.
  • J. Hopcroft and J. Ullman, Introduction to Automata Theory, Languages, and Computation, Addison-Wesley Publishing Co., 1979.
  • אוטומטים ושפות פורמליות, האוניברסיטה הפתוחה, 1991.‏
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License