Lecture (CPSC 046 01)
Times: Mondays, Wednesdays, and Fridays @ 10:30am - 11:20am ET
Location: SCI 264
Labs (attendance is required)
In labs students work on quizzes, group activities, and homework assignments.
Times:
Lab A: Mondays @ 1:15pm - 2:45pm ET
Location: SCI 256
Instructor: Michael Wehar
Email: mwehar1@swarthmore.edu
Office Hours (tentative): Fridays 11:30am - 12:30pm in SCI 205B and by appointment
Description from CS Department:
This course is an introduction to the formal systems that are commonly used as abstract models for computational processes. We will study a variety of computational models, and classify and solve problems in each of them. While computers are now ubiquitous and the idea of an algorithm seems natural, where did these ideas originate? Why, for instance, do we have memory on our machines --- is it necessary for computation, or simply a convenience? Do other methods of computation even exist? Could we solve more interesting problems with another model? Along the way, this course will develop mathematical concepts which are fundamentally important for computer science: decidability, undecidability, and computational complexity. We will go beyond simply saying "this problem seems hard" and show that some computational problems are inherently harder than others, or simply unsolvable by computers. We will examine the limits of computers and computation, and consider the consequences of these limits. By approaching these topics from a formal standpoint, this course aims to teach students how to describe and to reason precisely about computational objects.
Introduction to the Theory of Computation, Third Edition by Sipser. (Any edition is ok.) Errata.
Available @ Swarthmore Book Store (TAP Program), Amazon
We will be using Slack for general discussion and communication throughout the semester.
See the CS46 Slack Guide for more information.
Regular communication and collaboration are important parts of this course.
Students are expected to attend lectures and labs, contribute during group activities, and be actively engaged. If you need to miss a lecture meeting, then you are expected to notify the course instructor. If you need to miss a lab, then you are expected to notify the course instructor and any teammates.
If a student has an excused absence for a quiz or group activity, then they are expected to efficiently notify the course instructor and make up the activity or quiz during office hours.
Eleven quizzes will be given during this semester. Usually, quizzes will be given at the beginning of lab. Quizzes may contain a mixture of short answer questions, mathematical problems, computational problems, and long answer open-ended questions.
To best accommodate the many different circumstances that may come up for different students throughout the semester, students will be allowed to drop two quizzes. To easily implement this policy, the course instructor will simply drop the lowest two quiz grades for each student.
Your submitted quiz answers should be your own individual work. You should not be communicating with classmates while you are taking a quiz. See academic integrity statement below.
I will only allow students to make up quizzes in special cases.
Six homework assignments will be given. Some of the homework assignments may need to be completed individually and some may need to be completed with a partner.
Homeworks must be submitted by the specified deadline. Extensions will only be given in rare cases where there are excused absences. Please contact the instructor before a homework deadline to request an extension.
Your submitted homework answers should be your own individual work (or work with your partner). In some cases, you may be allowed to discuss ideas with classmates during lab or receive hints from the instructor. In such cases, you should cite who you discussed the problems with. Ultimately though, you must write your own answers. In no cases should you be sending solutions to other classmates or copying solutions from the internet. See academic integrity statement below.
Writing homework solutions using LaTeX is recommended. See our guide to LaTeX here.
Primarily during lab (occasionally in lecture), there will be group activities where you will work with other students to solve problems. You are expected to participate and make an effort. You must show your progress to the course instructor to receive credit.
There will a final exam (details will be provided).
Your submitted exam answers should be your own individual work. You should not be communicating with classmates while you are taking an exam. See academic integrity statement below.
Grades will be computed based on the following percentages.
Quizzes (45%)
Homeworks (25%)
Group Activities (10%)
Final Exam (20%)
Scores will be posted on Moodle whenever possible.
Note that Moodle does not accurately compute a student’s total grade.
DFA’s, Alphabets, Strings, Languages
Regular Languages, Closure Properties, Product Construction
NFA’s, NFA to DFA Conversion, State Blow-ups
Concatenation, Kleene Star, Regular Expressions, Regex
Equivalence of DFA / NFA / Regular Expressions, DFA Minimization
Classes of Languages, Non-Regular Languages, Pumping Lemma, Myhill-Nerode Theorem
CFG’s, Parse Trees, PDA’s
CFL’s, Closure Properties, Reversals
One-Tape Turing Machines, Two-Tape Turing Machines, Church Turing Thesis
Decidability, Decision Problems, Expressing Decision Problems as Languages
Basic Complexity Classes, Computable Functions, Reductions
Undecidability, NP-completeness
For information on the Computer Science Department’s waiting list policies, please see here.
If you are currently on the waiting list for this course, then you should have received an email with more information. To remain on the waiting list, please attend lectures during the first week of class. If you are unable to attend, then please notify the course instructor for alternative accommodations.
Academic honesty is required in all your work. Under no circumstances may you hand in work done with or by someone else under your own name. Discussing ideas and approaches to problems with others on a general level is encouraged, but you should never share your solutions with anyone else nor allow others to share solutions with you. You may not examine solutions belonging to someone else, nor may you let anyone else look at or make a copy of your solutions. This includes, but is not limited to, obtaining solutions from students who previously took the course or solutions that can be found online. You may not share information about your solution in such a manner that a student could reconstruct your solution in a meaningful way (such as by dictation, providing a detailed outline, or discussing specific aspects of the solution). You may not share your solutions even after the due date of the assignment.
In your solutions, you are permitted to include material that was distributed in class, material which is found in the course textbook, and material developed by or with an assigned partner. In these cases, you should always include detailed comments indicating on which parts of the assignment you received help and what your sources were.
When working on tests, exams, or similar assessments, you are not permitted to communicate with anyone about the exam during the entire examination period (even if you have already submitted your work). You are not permitted to use any resources to complete the exam other than those explicitly permitted by course policy. (For instance, you may not look at the course website during the exam unless explicitly permitted by the instructor when the exam is distributed.)
Failure to abide by these rules constitutes academic dishonesty and will lead to a hearing of the College Judiciary Committee. According to the Faculty Handbook:
"Because plagiarism is considered to be so serious a transgression, it is the opinion of the faculty that for the first offense, failure in the course and, as appropriate, suspension for a semester or deprivation of the degree in that year is suitable; for a second offense, the penalty should normally be expulsion."
This policy applies to all course work, including but not limited to code, written solutions (e.g. proofs, analyses, reports, etc.), exams, and so on. This is not meant to be an enumeration of all possible violations; students are responsible for seeking clarification if there is any doubt about the level of permissible communication.
The general ethos of this policy is that actions that shortcut the learning process are forbidden while actions that promote learning are encouraged. Studying lecture materials together, for example, provides an additional avenue for learning and is encouraged. Using a classmate’s solution, however, is prohibited because it avoids the learning process entirely. If you have any questions about what is or is not permissible, please contact your instructor.
Note: The above statement was written through a collaboration between faculty members within the Computer Science Department.
If you believe you need accommodations for a disability or a chronic medical condition, please contact Student Disability Services via email at studentdisabilityservices@swarthmore.edu to arrange an appointment to discuss your needs. As appropriate, the office will issue students with documented disabilities or medical conditions a formal Accommodations Letter. Since accommodations require early planning and are not retroactive, please contact Student Disability Services as soon as possible. For details about the accommodations process, visit the Student Disability Services website. You are also welcome to contact me (Michael Wehar) privately to discuss your academic needs. However, all disability-related accommodations must be arranged, in advance, through Student Disability Services.
Diversity, inclusion, and a mutual sense of belonging are all core values of this course. All participants in this course must be treated with respect by other members of the Swarthmore CS community. We must all strive, students and faculty both, to never make anyone feel unwelcome or unsafe in any way. Violations of these principles are viewed as unacceptable, and we take them very seriously. If you ever feel discriminated against or otherwise excluded, no matter how minor the offense, we encourage you to reach out to your instructor, one of the college deans, or campus non-discrimination contacts.
Note: The above statement was written through a collaboration between faculty members within the Computer Science Department.
Students are expected to complete and submit their assignments by the assigned deadlines. Even if you do not fully complete an assignment, you should submit what you have done to receive partial credit.
Extension requests will be evaluated on a case-by-case basis. If an extension request is not submitted before the deadline (at least 2 days before is recommended), then it will be denied.
Students should not record lectures or course related meetings without permission.