Room: BUSN 312.
General Prerequisites: CS 2302 "Data Structures" and either Discrete Mathematics or Discrete Structures, both with grades C or higher.
Alternative Prerequisites: CS 2401 "Elementary Data Structures and Algorithms" and either Discrete Mathematics or Discrete Structures, both with grades B or higher.
Instructor: Vladik Kreinovich, email
vladik at utep.edu, office
CCSB 3.0404,
office phone (915) 747-6951.
Teaching Assistant (TA):
Course Objectives: Theoretical computing models and the formal languages they characterize: Finite state machines, regular expressions, pushdown automata, context-free grammars, Turing machines and computability. Capabilities and limitations of each model, and applications including lexical analysis and parsing.
Major Topics Covered in the Course
Level 1: Knowledge and Comprehension
Level 1 outcomes are those in which the student has been
exposed to the terms and concepts at a basic level and can
supply basic definitions. The material has been presented only
at a
superficial level.
Upon successful completion of this course, students will be able to:
1a. Describe implications of Church-Turing thesis.
1b. Describe problems for which an algorithm exists, and problems for which there are no algorithms (non-recursive, non-recursively enumerable languages) and describe the implications of such results.
1c. Describe and explain the diagonalization process as used in proofs about computability.
1d. Describe the difference between feasible and non-feasible algorithms, describe the limitations of the current formalization of feasibility as polynomial-time.
1e. Describe the main ideas behind the concepts of NP and NP-hardness, know examples of NP-hard problems.
Level 2: Application and Analysis
Level 2 outcomes are those in which the student can apply the
material in familiar situations, e.g., can work a problem of
familiar structure with minor changes in the details.
Upon successful completion of this course, students will be able
to:
2a. Convert a non-deterministic finite automaton into an equivalent deterministic finite automaton.
2b. Convert a non-deterministic finite automaton into an equivalent regular expression.
2c. Convert a regular expression into an equivalent finite automaton.
2d. Construct a regular expression for a regular language.
2e. Convert a context-free grammar into an equivalent pushdown automaton.
2f. Construct a context-free grammar for a given context-free language.
2g. Design an algorithm for a machine model to simulate another model.
2h. Build simple Turing machines.
2i. Prove formally properties of languages or computational models.
2j. Apply a parsing algorithm.
2k. Build a parse tree or a derivation from a context-free grammar.
2l. Use the closure properties in arguments about languages.
Level 3: Synthesis and Evaluation
Level 3 outcomes
are those in which the student can apply the material in new
situations. This is the highest level of mastery.
Upon
successful completion of this course, students will be able to:
3a. Compare regular, context-free, recursive, and recursively enumerable languages.
3b. Compare finite automata, pushdown automata, and Turing machines.
Textbook: Introduction to the Theory of Computation, by Michael Sipser (all editions are OK). This book is available at the bookstore and through major online book retailers, and you are expected to acquire a copy for your use in this course. Photocopied textbooks are illegal and their use will not be tolerated.
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.
Exams: There will be three tests and the final exam.
For each test, I will post solutions, 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 test at a time convenient for you.
A comment about partial credit. In pedagogical literature, it has been noticed that there is a problem with giving 9 out of 10 points for minor mistakes. The problem is that when in a test with 10 questions, a student is almost correct on each of them – getting 9 out of 10 points for each problem – the student's overall grade for the test is 90 out of 100 – which usually corresponds to A ("excellent"). This does not seem to be right: a student is classified as excellent, but in all 10 problems, the student's answers are wrong! To avoid such situations, it is recommended to give at most 8/10 when the answer is wrong. In our grading of the tests, we will follow this recommendation.
What is you get a failing grade on a test? Sometimes, students get a failing grade on one of the tests. This is not yet a disaster – many students recovered from such situation and successfully passed the class. However, a failing grade is an indication that additional efforts are needed to pass the class.
To help to better organize such efforts, a student who got a failing grade should schedule, no later than a week after the grade is known, a meeting with the instructor, during which we will develop a plan to catch up on the missing pieces of knowledge. This plan may include additional assignments and additional meetings with the instructor and/or the TA.
Students who do not develop such a plan or who do not follow the plan's recommendations may be dropped from the class for lack of effort. Grading: Each topic means home assignments (mainly on the sheets of paper, but some on the real computer). Maximum number of points:
Warning: If the grade on the final exam is 10 points or more lower than the overall grade, then the grade for the final exam will be posted as the grade for the class.
The nominal percentage-score-to-letter-grade conversion is as follows:
Example of grading: Suppose that:
(21/28) * 5 +
(70/100) * 20 + (75/100) * 10 + (80/100) * 20 + (8.6/10) * 20 +
(85/100) * 25 =
0.75 * 5 + 0.7 * 20 + 0.75 * 10 + 0.8 * 20 +
0.86 * 20 + 0.85 * 25 =
3.75 + 14.0 + 7.5 + 16.0 + 17.2 +
21.25 = 79.7,
which I will round up to 80. This score is in the 80-89% range, so the overall student's grade for the class is a B.
Warning: If the same student gets 65/100 on the final exam, the overall grade for the class will be D.
Example of a preliminary estimate: Suppose that the student has just got the result of his/her second test, and he/she wants to estimate his/her grade so far. Suppose that:
5 + 20 + 10 + 20 = 55
Out of these points, according to the above formulas, the student's percentage score so far is:
(15/20) * 5 + (70/100) * 20 + (75/100) * 10 + (8.2/10) * 20 =
0.75 * 5 + 0.7 * 20 + 0.75 * 10 + 0.82 * 20 =
3.75 + 14.0 + 7.5 + 16.4 = 41.65.
The student got 41.65 out of the possible 55 points. So, the student's percentage score is:
(41.65/55) * 100 = 76.2
This score is in the 70-79% range, so the student's grade so far is a C.
Homework Assignments: Each topic means home assignments. Howeworks will be usually assigned on Monday and be due on Wednesday, any time on Wednesday is still OK. To submit a homework, send it to the Teaching Assistant (TA) by email. If your solution is not electronic, scan it and send her the scanned version. When you send your homework to the TA, please use subject "CS 3350 Homework 1" if this is Homework 1, "CS 3350 Homework 2" if this is a solution to Homework 2, etc. If two homeworks are due at the same day, send two separate emails with solution to each homework. If you have a legitimate reason to be late, let me and the TA know, you can then submit it until the following Monday. If you were simply late, you can still submit until next Monday, but then the TA will take off points for submitting late.
The TA will send you the grades. On Monday the next week, I will post correct solutions, and both I and the TA will be glad to answer questions if needed.
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 directly to me (not to the TA) 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 or the TA.
Quizzes: The purpose of a quiz is to ensure that you have read the weekly reading assignment and to verify that you have mastered the major concepts of recent lectures. Quizzes typically will be about 5-10 minutes in length and will cover the material assigned to be read for the upcoming lecture plus selected concepts from previous lectures. There will be no make-up on missed quizzes.
Special Accommodations: If you have a disability and need classroom accommodations, please contact the Center for Accommodations and Support Services (CASS) by email to cass@utep.edu. For additional information, please visit the CASS website at https://www.utep.edu/student-affairs/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.
Cheating is:
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 21: topics to cover:
January 26: topics to cover:
January 28 and February 2: topics to cover:
February 2 and February 4: topics to cover:
February 9: topics to cover:
February 16: topics to cover:
February 18: overview for Test 1
February 23: Test 1
February 25: topics to cover:
March 2: topics to cover:
March 4: topics to cover:
March 9: practice for Half-Test 2
March 11: Half-Test 2
March 23: overview of Half-Test 2
March 25: topics to cover:
April 6: topics to cover:
April 8: topics to cover:
April 13: topics to cover:
April 15: topics to cover:
April 20: topics to cover:
April 22: topics to cover:
April 27: review for Test 3
April 29: Test 3
May 4: review of Test 3 results.
May 6: review for the final exam.