CSI 5310 (Introduction to Computation Theory) and
CSI 4330 (Foundations of Computing) — Fall 2024
This course is an introduction to the theory and foundations of computation. It covers formal models of computation, computability, complexity, and related topics. This course forms a foundation for much of the subsequent work/research you will do in computer science. As you'll see, computation theory is fascinating because there are problems which we can describe simply which have not yet been solved.
Objectives and Topics
The primary objectives in this course are that students will:
- Understand and be able to apply formal idealized mechanical models of computation, such as DFA, NFA, PDA, and Turing Machines. Implement simulations of theoretical machines and their algorithmic constructs.
- Understand the theoretical limitations of computation, including proving languages to be non-regular, non-context-free, and uncomputable. Be able to use basic proof techniques to illustrate these limitations (including construction, contradiction, counterexample, and induction).
- Understand the basic classes of computational complexity, including P, NP, NP-Complete, EXP, etc. Know how to prove that a language belongs (or does not belong) to each of these classes. Understand and be able to prove the known inclusions of these classes.
The basic topics covered in this course are:
- Part 1: formal models of computation ("how can we define computation in a mathematical way?")
- Mathematical overview: sets, proofs, formal computational models, languages
- Regular languages: deterministic and nondeterministic automata, NFA and DFA equivalence, closure properties under set operations, decision problems
- Non-regular languages: pumping lemma for regular languages
- Context-free languages: context-free grammars, pushdown automata, non-context free languages, pumping lemma for context free languages
- Part 2: computability theory ("what sorts of problems can computers solve?")
- Turing machines: computation, languages, configurations, computation histories, multitape and nondeterministic Turing machines, enumeration
- Decidability: countable and uncountable sets, decidable and undecidable languages, recognizable and unrecognizable languages, co-recognizability
- Reductions: proving decidability, undecidability, recognizability, un-recognizability, mapping reductions, reductions by computation history, Rice's theorem
- Algorithmic information: recursion theorem, descriptive complexity and its computability, string compressibility
- Turing reductions, decidability of logical theories, Gödel's incompleteness and inconsistency
- Part 3: complexity theory ("how efficiently can computers solve different problems?")
- Complexity basics: class P
- Complexity class NP: deterministic polynomial time verification, nondeterministic polynomial time decision, equivalence of definitions, relationship to P, example languages
- NP-completeness: definition, NP-hardness reductions, certificates
- Space complexity: definition, PSPACE, NPSPACE, Savitch's theorem, PSPACE-completeness, L, NL
- Randomized complexity: classes RP, BPP
This is a difficult course. Be prepared to invest the time necessary to understand the concepts, and to do the assignments. My best advice is to pay attention during the lectures, ask questions, and start assignments early.
Practical information
Besides this page, most of the course information is available in Canvas. Please see that site for the course schedule, readings, lectures, assignments, discussions, etc.
We will use the scheduled class meeting times to discuss course material. Before each meeting, you should have viewed the lectures for the week, and come prepared to discuss the material, driven by your questions.
My office location and office hours are listed on my home page. I am glad to talk to students during and outside of office hours.
Schedule
Please see Canvas for a schedule of the course.Textbooks & resources
Required text: we will be using Michael Sipser's textbook Introduction to the Theory of Computation (3rd Edition). Please note: using another edition will probably be fine, but it may have different numbering of problems and exercises. I have seen students lose credit for using "international" versions that are mostly the same, except for the problems and exercises. Make sure you are doing the problems as assigned.
Further online resources:
- We will use Canvas for keeping records of assignment grades.
- Please see this STL cheatsheet (1) and this STL cheatsheet (2) for a quick overview of the STL.
- LaTeX information: Getting Started with LaTeX; The Not So Short Introduction to LaTeX.
- Here is a C++ style guidelines for the class. These guidelines also apply to Java.
Grading
Grades will be assigned based on this breakdown:
- assignments: 50%
- midterm exam 1: 15%
- midterm exam 2: 15%
- final exam: 20%
Final letter grades will be assigned at the discretion of the instructor, but
here is a minimum guideline for letter grades:
F <
60 ≤ D- <
62 ≤ D <
67 ≤ D+ <
70 ≤ C- <
72 ≤ C <
78 ≤ C+ <
72 ≤ C <
78 ≤ C+ <
80 ≤ B- <
82 ≤ B <
88 ≤ B+ <
90 ≤ A- <
92 ≤ A
Some homeworks may be worth more than others. All exams are closed-book. The final will be comprehensive.
Homeworks should be written up in (nice-looking) LaTeX. Some homeworks may have a day or two of "grace period" where they may be turned in late, but with a 20% penalty. These due dates and grace periods are specified on Canvas.
Graduate / Undergraduate Course Content
This semester, thiss course is being offered concurrently for both graduate credit (CSI 5310) and undergraduate credit (CSI 4330). The graduate course will have additional topics, and the two courses will have some differences in their assignments and exams.
Policies
- Check Canvas and your email regularly for updates and announcements. It is your responsibility to stay current on course changes.
- All work in this course is strictly individual, unless the instructor explicitly states otherwise. While discussion of course material is encouraged, collaboration on any work for the course is not allowed. Collaboration includes (but is not limited to) discussing with anyone other than the professor any material that is specific to completing an assignment. You are not to work with anyone else on any assignment unless I expressly permit it. You are encouraged to discuss the course material with the professor, preferably in class, office hours, and also by email.
- Exams may be made up with prior arrangement (made at least one class before to the exam) or due to illness, with a note from a health care professional.
- Bring any grading correction requests to my attention within 2 weeks of receiving the grade or before the end of the semester, whichever comes first. After that, I will not adjust your grade.
Academic honesty
Plagiarism or any form of cheating involves a breach of student-teacher trust. This means that any work submitted under your name is expected to be your own, neither composed by anyone else as a whole or in part, nor handed over to another person for complete or partial revision. Be sure to document all ideas that are not your own. Instances of plagiarism or any other act of academic dishonesty will be reported to the Honor Council and may result in failure of the course. Not understanding plagiarism is not an excuse. I expect you as a Baylor student to be intimately familiar with all aspects of the Honor Code.
I take academic honesty very seriously. Many studies, including one by Sheilah Maramark and Mindi Barth Maline have suggested that "some students cheat because of ignorance, uncertainty, or confusion regarding what behaviors constitute dishonesty" (Maramark and Maline, Issues in Education: Academic Dishonesty Among College Students, U.S. Department of Education, Office of Research, August 1993, page 5). In an effort to reduce misunderstandings in this course, a minimal list of activities that will be considered cheating have been listed below.
- Copying another student's work. Simply looking over someone else's source code is copying.
- Providing your work for another student to copy.
- Collaboration on any assignment, unless the work is explicitly given as collaborative work.
- Using notes or books during any exam.
- Giving another student answers during an exam.
- Reviewing a stolen copy of an exam.
- Plagiarism.
- Studying tests or using assignments from previous semesters.
- Providing someone with tests or assignments from previous semesters.
- Taking an exam for someone else.
- Turning in someone else's work as your own work.
- Studying a copy of an exam prior to taking a make-up exam.
- Providing a copy of an exam to someone who is going to take a make-up exam.
- Giving test questions to students in another class.
- Reviewing previous copies of the instructor's tests without permission from the instructor.
Title IX Office
Baylor University does not discriminate on the basis of sex or gender in any of its education or employment programs and activities, and it does not tolerate discrimination or harassment on the basis of sex or gender. This policy prohibits sexual and gender-based harassment, sexual assault, sexual exploitation, stalking, intimate partner violence, and retaliation (collectively referred to as prohibited conduct). For more information on how to report, or to learn more about our policy and process, please visit www.baylor.edu/titleix. You may also contact the Title IX office directly by phone, (254) 710-8454, or email, TitleIX_Coordinator@baylor.edu.
Copyright © Greg Hamerly, with some content
taken from a syllabus by Jeff Donahoo.
Computer Science Department
Baylor University
This page was last updated January 15, 2025 at 2:36 (UTC)