Class time: TR 3-4:20 pm
Kreinovich, email email@example.com, office CCSB 3.0404,
office phone (915) 747-6951.
Prerequisite: CS 3350 (Automata)
1. Knowledge and Comprehension
a. Describe the practical need for theory of computing: to know which computational problems are solvable and which are not, and which problems can be, in principle, solved within given computation time, to avoid wasting resources on trying to solve problems in such a general context that they become unsolvable
b. Describe different models of computing, including recursive functions, different versions of Turing machine, etc.
c. Describe how computability in a programming language is related to formal models of computing, on the example of primitive recursive and recursive functions
d. Understand Church-Turing thesis and understand the status of this thesis - that it is, in effect, a statement about the physical world
e. Define decidable and recursively enumerable (r.e., semi-decidable) sets
f. Understand the notion of an oracle and of computing relative to an oracle
g. Define classes P, NP, the notions of polynomial time reduction, NP-hardness, and NP-completeness; understand the motivations behind these definitions: P means feasible, NP stands for a problem; understand the difference between the formal notion of polynomial time and the practical notion of feasibility
i. Understand the difference between a proof and a sequence of reasonable arguments which does not constitute a proof
j. Know several NP-hard problems
k. Define complexity classes from the absolute and relative polynomial hierarchy; give examples of problems
l. Understand the main idea of parallelization
m. Define the class NC of parallelizable P problems, know the relation between NC and P, and an example of a P-complete problem
n. Understand the difference between the formal computation time of a parallel program and the actual time which takes communication time into account
o. Define Kolmogorov complexity, understand motivations behind this definition
p. Be aware of the main ideas behind different physical schemes of computing beyond traditional Turing machines, such as quantum computing
2. Application and Analysis
a. Trace the computation of a primitive recursive or recursive function on a numerical example
b. Translate a formal description of a primitive recursive or recursive function into a program
c. Trace a Turing machine on a given input
d. Prove that satisfiability is NP-hard, and that one more problem is NP-hard
e. Know how to parallelize standard simple parallelizable algorithms (e.g., search, or dot product of two vectors)
f. Use the definition of Kolmogorov complexity K(x) to provide reasonable upper bounds for K(x) of a given string x
3. Synthesis and Evaluation
a. Prove, from the definition, that a given function (e.g., a given polynomial or propositional function) is primitive recursive or recursive
b. Design a Turing machine that computes a given function
c. Synthesize Turing machines that compute two functions into a Turing machine for computing their composition
d. Prove that not every problem is computable - e.g., that the halting problem is undecidable
e. Apply diagonalization to prove results similar to what we had in class
f. Prove that given simple sets are decidable and/or r.e.
g. Prove that the union, intersection, and complement of decidable sets are decidable
h. Prove that the union and intersection of r.e. sets is r.e.; prove that the complement to a r.e. set is not always r.e.
i. Prove that not every r.e. set is decidable and that not every set is r.e.
j. Prove, for a given software requirement, it is algorithmically impossible to check whether a given program satisfies this requirement
k. For problems similar to ones considered in class, prove their NP-hardness
l. Be able to parallelize simple algorithms
m. Be able to understand and present a research paper in Theory of Computing - with a minor help from a professor
Main Source: Michael Sipser, Introduction to the Theory of Computation, PWS Publishing Co., 2nd or later edition
Projects: An important part of the class is a project. There are three possible types of projects:
Assignments: Reading and homework assignments will be announced on the class website. You should expect to spend at least 10 hours/week outside of class on reading and homework.
Homework Assignments: Each topic means home assignments. Howeworks will be due by the start of the next class:
One week after the homework was assigned, I will post correct solutions. I will be glad to answer questions if needed.
If you have a legitimate reason to be late, let me know, you can then submit it until the homeworks are posted. If you were simply late, you can still submit until the homeworks are posted, but then points will be taken off points for submitting late.
Since I will be posting correct solutions to homeworks, it does not make any sense to accept very late assignments: once an assignment is posted, it make no sense for you to copy it in your own handwriting, this does not indicate any understanding. So, please try to submit your assignments on time.
Things happen. If there is an emergency situation and you cannot submit it on time, let me know, you will then not be penalized -- and I will come up with a similar but different assignment that you can submit to me when you become available again.
Homework must be done individually. While you may discuss the problem in general terms with other people, your answers and your code should be written and tested by you alone. If you need help, consult the instructor.
Exams: There will be three tests: on February 24, March 24, and April 28, and the final exam on May 12, 4-6:45 pm.
Similar to homeworks, I will post solution, send you the grades, and answer questions if something is not clear.
As usual, if you are unable to attend the test, let me know, I will organize a different version of the text at a time convenient for you.
Grades: Each topic means home assignments (mainly on the sheets of paper, but some on the real computer). Some of them may be graded. Maximum number of points:
A good project can help but it cannot completely cover possible deficiencies of knowledge as shown on the test and on the homeworks. In general, up to 80 points come from tests and home assignments. So:
Special Accommodations: If you have a disability and need classroom accommodations, please contact the Center for Accommodations and Support Services (CASS) at 747-5148 or by email to firstname.lastname@example.org, or visit their office located in UTEP Union East, Room 106. For additional information, please visit the CASS website at http://www.sa.utep.edu/cass. CASS's staff are the only individuals who can validate and if need be, authorize accommodations for students.
Scholastic Dishonesty: Any student who commits an act of scholastic dishonesty is subject to discipline. Scholastic dishonesty includes, but not limited to cheating, plagiarism, collusion, submission for credit of any work or materials that are attributable to another person.
Collusion is unauthorized collaboration with another person in preparing academic assignments.
Instructors are required to -- and will -- report academic dishonesty and any other violation of the Standards of Conduct to the Dean of Students.
NOTE: When in doubt on any of the above, please contact your instructor to check if you are following authorized procedure.
Daily Schedule: (tentative and subject to change)
January 18: topics to cover:
January 20 and 25: topics to cover:
January 27: topics to cover:
February 1: topics to cover:
February 3: topics to cover:
February 8: topics to cover:
February 10: topics to cover:
February 15: topics to cover:
February 17: topics to cover:
February 22: topics to cover:
March 1: overview of Test 1 results.
March 3: topics to cover:
March 8: topics to cover:
March 10: topics to cover -- other examples of NP-complete problems:
March 22: topics to cover:
March 24: Test 2.
March 29: overview of Test 2 results.
March 31: topics to cover:
April 5: topics to cover:
April 7: topics to cover:
April 12: topics to cover:
April 14: topics to cover:
April 19: project presentations
April 21: project presentations
April 26: preview for Test 3
April 28: Test 3.
May 3: overview of Test 3 results.
May 5: preview for final exam.