2020 March 25,
Carleton College, Winter 2020, Joshua R. Davis, , CMC 324, x4095
This course considers the fundamental questions of computer science: What can computers do, and how much time and space do they require to do it? To address these questions, the course proceeds in three stages:
The official prerequisites for this course are Introduction to Computer Science (CS 111) and a proof course (CS 202 or Math 236). If you don't know Python, then study it on your own (using the links below or other tutorials). Talk to me if you are concerned about your background.
Our class meets in CMC 301 during period 5A (MonWed 1:50-3:00, Fri 2:20-3:20). Some course materials are:
The following elements contribute to your course grade.
Course grades are assigned according to an approximate curving process. There are no predetermined percentages (90%, 80%, 70%, etc.) required for specific grades (A, B, C, etc.). Rather, I assign grades by comparing the students to each other, to earlier students, and most importantly to the course goals. An advantage of this system is that student grades don't suffer when I write a difficult exam, for example. The disadvantage is that you cannot compute your own grade. Visit me in my office, if you want me to estimate your current grade for you.
If some medical condition affects your performance in this course, then let me know in the first week of class (or as soon as it arises). You may need to make official arrangements with the Disability Services.
You are expected to arrive to class slightly early, so that you are ready to participate as soon as class begins. Do not sit alone. You are often expected to work out problems with your neighbor. My ideal class meeting is more of a discussion than a lecture. Discussions are not just for English and history classes. Communication skills are essential to every academic discipline, and they are highly prized by employers.
You are expected to take notes, even if your learning style is primarily aural. Because the material involves many diagrams, you should take notes on paper or on an electronic device that supports rapid drawing. Typing on a laptop is not adequate.
Photographs and recordings are not permitted without my prior approval. Phones are not permitted, except for the purpose of approved photographs and recordings.
Although class meetings may seem like the core of the course, homework assignments are actually where you learn the material. As far as your grade is concerned, homework serves primarily as the first step in studying for exams.
On homework, you are encouraged to figure out the problems with other students. However, you should always write/type your solutions individually, in your own words. You may not copy someone else's work or allow them to copy yours. Presenting someone else's work as your own is a violation of Carleton's Academic Integrity standards.
Writing is not just for English and history majors. Communication skills are essential to every academic discipline, and they are highly prized by employers. In this course, your written work is evaluated both for correctness and for presentation.
Although homework is assigned every day, it is collected only once a week. When handing in a week's homework, staple your pages into a single packet, in the correct order. Multi-sheet packets that are not stapled are unacceptable. I will not accept packets that are not stapled. Is there a stapler in the classroom? Often not, so staple ahead of time. Is a paper clip okay? No.
During the term, you have one free pass to hand in a week's homework packet late. You do not have to justify your lateness. In fact, this policy exists so that I don't have to agonize over the relative merits of varying excuses. When using your late pass, simply hand in your late packet when the next packet is due, writing "Late Pass Used" prominently at the top of the late packet. Once you have used your late pass, no late assignments are accepted, except in extreme circumstances that typically involve interventions by physicians or deans.
You are expected to spend about 10 hours per week on this course outside class. Some students need to spend more than 10 hours. If you find yourself spending more than 15 hours, then talk to me.
To help you decode the schedule, here is an example. On Day 03 we discuss nondeterministic finite automata. Section 1.2 of our textbook covers that material; read it before or after class, to get another treament. You might also want to read my extra notes called "DFA vs. NFA Details". You have homework called "Day 03", which you hand in on Day 06.
Date | Day | Topic | Assignment | Due | Reading | Notes |
---|---|---|---|---|---|---|
M 1/06 | 01 | introduction | Day 01 | 01, 02 | 0.1-0.4 | soSuperSum.py |
W 1/08 | 02 | deterministic finite automata | Day 02 | 03 | 1.1 | |
F 1/10 | 03 | nondeterministic finite automata | Day 03 | 06 | 1.2 | DFA vs. NFA Details |
M 1/13 | 04 | regular expressions | Day 04 | 06 | 1.3 | Python Regular Expressions |
W 1/15 | 05 | pumping lemma | Day 05 | 09 | 1.4 | |
F 1/17 | 06 | catching up | Day 06 | 09 | Radiolab: Loops (6:40-15:33) | |
M 1/20 | 07 | context-free grammars | Day 07 | 09 | 2.1 | |
W 1/22 | 08 | Exam A | ||||
F 1/24 | 09 | pushdown automata | Day 09 | 12 | 2.2 | Recursion |
M 1/27 | 10 | pumping lemma | Day 10 | 14 | 2.3 | |
W 1/29 | 11 | catching up | Wikipedia: Alan Turing | |||
F 1/31 | 12 | Turing machines | Day 12 | 14 | 3.1 | |
M 2/03 | 13 | variants of Turing machines | Day 13 | 17 | 3.2 | |
W 2/05 | 14 | nondeterministic Turing machines | Exam B | 15 | 3.3 | |
F 2/07 | 15 | decidable examples | Day 15 | 17 | 4.1 | Interpreter |
M 2/10 | Midterm Break | |||||
W 2/12 | 16 | undecidable examples | Day 16 | 20 | 4.2 | |
F 2/14 | 17 | undecidable, unrecognizable examples | Day 17 | 20 | 5.1 | |
M 2/17 | 18 | unrecognizable examples, Rice's theorem | 5.29, 5.30bc | 20 | ||
W 2/19 | 19 | time complexity | Day 19 | 23 | 7.1 | Complexity of {0m 1m : m ≥ 0} |
F 2/21 | 20 | time complexity | 7.6, 7.7 | 23 | 7.2 | |
M 2/24 | 21 | deterministic polynomial time | Day 21 | 23 | 7.3 | |
W 2/26 | 22 | Exam C | ||||
F 2/28 | 23 | nondeterministic polynomial time | Day 23 | 26 | 7.3 | |
M 3/02 | 24 | mapping reducibility | 7.26, 7.27 | 26 | 7.4 | |
W 3/04 | 25 | NP-completeness | none | 7.4 | ||
F 3/06 | 26 | NPSPACE = PSPACE | Day 26 | 28 | 8.1-8.2 | |
M 3/09 | 27 | TQBF is PSPACE-complete | none | 8.3 | TQBF | |
W 3/11 | 28 | conclusion | none | this, this, this, ... | ||
S 3/14 | Exam D 3:30PM-6:00PM |