Syllabus

COSC 340: Theory of Computation (Spring 2026)

👨🏻‍🏫 INSTRUCTOR

Dr. Beau M. Christ
Associate Professor
Department of Computer Science

📧 christbm@wofford.edu
📞 (864) 597-4528
💻 www.beauchrist.com
🏛 Olin 111C
⏰ Office hours will be Tuesdays (4PM-5PM), Wednesdays (2PM-5PM), and Thursdays (4PM-5PM). You can always feel free to email me as well!

🗺 MEETING TIME & LOCATION

We will meet every Tuesday and Thursday from 1:00PM - 2:20PM in Olin 218, unless otherwise specified.

📖 TEXTBOOK

You will need to obtain a copy of “Introduction to the Theory of Computation” (3rd edition) by Michael Sipser.

📋 COURSE OVERVIEW

Welcome to COSC 340: Theory of Computation!

The purpose of this course is to answer the following question: What are the fundamental capabilities and limitations of computers? In other words, what are computers able to do, and what are they not able to do? In order to find an answer to this question, we explore three separate subdomains: automata theory (the study of abstract machines and the computational problems that can be solved using them), computability theory (the study of the extent to which a problem is solvable on a computer), and complexity theory (the study of how efficiently a problem can be solved on a computer).

Topics will include languages (regular, context-free, context-sensitive, recursively enumerable), models of computation (finite-state machines, pushdown automata, Turing machines), the halting problem, decidability, and complexity classes (P, NP, etc.), among others. The skills you will learn in this course have a wide range of applications including compiler construction, artificial intelligence, parsing and formal verification, and algorithms. In addition, it can make you are better programmer!

Prerequisites: COSC 240 (Discrete Structures) with a minimum grade of D and COSC 350 (Data Structures & Algorithms) with a minimum grade of C.

Catalog Description: A study of formal models of computation such as finite state automata, pushdown automata, context-free grammars, and Turing machines, along with the corresponding elements of formal languages. Other topics include computability, complexity, and NP-completeness.

✅ COURSE OBJECTIVES

By taking this course, my goal is for you to:

  • Gain a greater understanding of computers including their abilities and limitations.
  • Learn how to construct abstract models of computation.
  • Learn how to determine whether a given problem is solvable or not by a computer.
  • Be able to formally classify a given problem as easy or difficult to solve.
  • Be well prepared for further study in computer science.

You will fulfill these objectives by:

  • Reading your textbook
  • Taking two midterm exams, and a final exam
  • Completing multiple assignments
  • Being engaged during in-class discussions and activities

📝 GRADING

Assignments (40%)

You will complete multiple assignments to help solidify your understanding of the material, and these will be submitted via Moodle. Every assignment will be equally weighted, and each will be given a grade out of 10 points.

Midterm Exams (40%)

You will complete two midterm exams (20% each) during the semester 1) to help test your knowledge of things we discuss in class and read in the textbook, 2) to help you keep up in the course, and 3) to help me understand what topics need to be covered better.

Final Exam (20%)

You will complete a final exam that will cover important topics related to the course. It will occur on the scheduled final exam date.

GRADING SCALE

We will utilize the following grading scale (grades will be rounded, so a 92.49% will map to an A-, and a 92.5% will map to an A):

0% - 59% F 80% - 82% B-
60% - 69% D 83% - 86% B
70% - 72% C- 87% - 89% B+
73% - 76% C 90% - 92% A-
77% - 79% C+ 93% - 100% A

📜 POLICIES

ATTENDANCE

You are expected to attend class. I do understand that absences are sometimes unavoidable, so I appreciate an email letting me know in advance that you will be absent. You are responsible for catching up on missed classes. Finally, in accordance with Wofford policy, you must be present for the final exam.

CLASSROOM

You are allowed to bring your computer to work along with the examples in class. I highly advise you, however, to not become distracted by your devices (notebook, phone, tablet, etc.) for things other than course-related use. Not only are you missing out and inhibiting your learning, but it is often a distraction to others as well. I strongly encourage you to use features such as do not disturb or focus mode. It is also worth mentioning that research has shown that taking notes by hand instead of typing results in a better learning experience.

LATENESS

You are expected to keep up with all coursework and due dates during the semester. Submitting coursework past the due date/time (even by a single minute!) will result in a 1 point penalty (out of 10) for that particular project. After that, you have 24 hours to submit the late work until a second penalty is given (another point). After 48 hours past the due date, the project will not be accepted under any circumstances and will receive a 0. There are a few reasons that are acceptable (medical, family emergencies, etc.), but I will usually only grant extensions for those cases when receiving an email or phone call before the due date. I will decide on a case-by-case basis, but having official documentation will help make your case.

COMMUNICATION

I will use email as my main means of communication. Feel free to contact me using “christbm@wofford.edu”. The top of this syllabus shows other ways to contact me as well. You are also welcome to stop by office hours to chat about any questions or concerns you have.

ACADEMIC INTEGRITY

Please do your own work!

I have caught students cheating in the past, and take these matters very seriously. Any student I determine is guilty of academic dishonesty will have their case referred to the department and the college to be pursued further (trust me, you do not want that to happen). You may discuss ideas with other students, but all work must be your own. You can discuss approaches and ideas with others, but there should be no sharing of code.

To make sure you understand what constitutes academic dishonesty, please read the Wofford Honor Code. By enrolling in this course, you are pledging that you agree to the Wofford Honor Code and that all submitted work is your own. Please talk to me if you are unsure what constitutes academic dishonesty.

REASONABLE ACCOMMODATIONS

If you need accommodations with anything at all, please contact both the Wofford Accessibility Services and myself at the beginning of the semester. We will do our best to assist you as best we can.

USE OF GENERATIVE AI

Any AI-generated works are not permitted and will be treated as plagiarism. Any use of generative AI for any stage of your work in this course is considered a violation of the honor code. Even using it for “being inspired” is negatively affecting your creativity and problem-solving skills. If I suspect AI use, you will get a ‘0’ for that assignment or exam as a warning the first time. The second will be reported.

The only exception is if I specifically give permission on an assignment to use it.

I would personally write a much stronger letter of recommendation for someone who does their own work and gets a ‘C’ than someone who is using generative AI for their work and gets an ‘A’. Don’t use it.