Syllabus
- Logistics
- Learning Goals
- Environment
- Learning
- Honor Code
- (un)Grading
- Class Participation
- Assessments
- Late Submissions
- Advice from Fall 2020 Students
- Texts
Logistics
- Time and Location
-
- All students:
- Tu/Th 11:00 am-12:15 ET in 75 Shannon, Room 203.
- CW students: (this might be rescheduled based on CW students' preference)
- Fri 11:15-12:05 ET in 75 Shannon Room 206
- Faculty Info
- Shelby Kimmel
Please call me "Professor Kimmel" or "Professor"
Pronouns: she/her
Office: 75 Shannon, Room 210
skimmel [at] middlebury (dot) edu - Office (student) Hours
- Location: Concurrently in-person (75SHS Rm 210) and over zoom (Zoom Office Hours Link)
- Drop-in: Mon 3:30-4:30, Wed 3-4, Thur 2-3, Fri 12-1:30
- Individual Appointment: E-mail me to arrange
- Peer Tutors
- Mondays 7-9. See CS Tutoring Site for more info
- Communication
-
- I will e-mail you for urgent matters.
- You can always e-mail me, but I will not answer problem set questions via e-mail, except for logistical or typo questions.
- I will keep the Calendar up-to-date with assignments and lecture notes.
- Department Wiki
- Department Wiki
Learning Goals
All Students
- Explain the connections between complexity classes and the physical world.
- Describe some of the open questions in computational complexity, and explain why this shows how little we understand of what computers can do.
- For the complexity classes P, NP, PH, EXP, NEXP, PSPACE, NPSPACE, L, NL, BPP, RP, ZPP, BQP, complements of these classes, and possibly others, be able to
- Define the class
- Describe the significance of class
- Prove a language is in the class
- Prove a language is hard for the class
- Describe and prove relationships between complexity classes using techniques such as diagonalization.
CW students
- Write proofs that
- Are easy to follow
- Are logically correct
- Use mathematical notation appropriately
- Use English language to clearly convey precise mathematical ideas
- Describe complex computer science and mathematical ideas to a non-expert audience in a relatable and understandable way
- Identify strengths and weaknesses in your own writing and other's, and revise effectively.
Environment
It is important to me to create an inclusive learning environment where diversity and individual differences are respected and recognized as a source of strength. However, this is by nature a team effort, and I expect you to join me in fostering such an environment.
You deserve a learning environment free of comments or assumptions that are based on race, color, ethnicity, national origin, accent, religion, sexual orientation, gender identity/expression, body size/type, disability, socioeconomic status, age, or veteran status. I am continually working to recognize and unlearn my own biases and to keep them from causing harm. I expect you to do the same, and to be willing to have a dialog about these biases as needed.
If you experience or witness any behavior that opposes the creation of an inclusive learning space, it would be helpful for me to know so that I can address it, but I recognize that this is additional work that may be difficult. If you are comfortable reporting such incidents, there are a few ways you can do so:
- Talk to me or e-mail me
- Report it in our anonymous CS departmental climate feedback form
- Fill out a Bias Incident Report which goes to the Middlebury Community Bias Response Team
You belong in this class and in the computer science department. Thank you for being here and for contributing to this course.
Office (Student) Hours
Office hours are a time when I am available for you. During office hours, you can ask me for help related to the course, or we can talk about other topics, like grad school, how your semester is going, or anything else you want to talk about. You do not have to have a question or appointment to come to office hours - you can pop-in for a quick hello, or listen to other students' questions. Office hours help me get to know you on a more individual basis, which in turn allows me to better support you as a learner and a person. Here are some suggestions for what to talk about at office hours if you don't know where to start, or would like to expand your office hours conversations. If you have a conflict with a drop-in session, or if you have something you want to discuss privately, you can e-mail me to schedule an appointment. I look forward to seeing you!
Names/Pronouns
I will use the gender pronoun and name you go by, and I expect you to use the names and pronouns your classmates go by. If you wish you can indicate this information through Banner or e-mail me. In class I will give you the opportunity to share your gender pronoun, if you choose, when doing group work.
Academic Accommodations
Students who have Letters of Accommodation in this class are encouraged to contact me as early in the semester as possible to ensure that such accommodations are implemented in a timely fashion. For those without Letters of Accommodation, assistance is available to eligible students through the Disability Resource Center (DRC). Please contact ADA Coordinators Jodi Litchfield and Peter Ploegman of the DRC at ada@middlebury.edu for more information. All discussions will remain confidential.
Laptop Loaner Program
If you ever find yourself temporarily in need of a laptop, the Computer Science department has 10 rotating Dell laptops available to our students. These come pre-installed with software for most of the courses in the major. They are available to be loaned out short-term or long-term based on your need (as determined by you). Feel free to ask your professor ahead of time if you think you need one for just a class period, or you can e-mail our CSI Maja Cannavo at: mcannavo [at] middlebury (dot) edu.
On Long-Term Use: College policy has changed recently to include the expectation that every student have a laptop available. The college provides laptops to those who need them where “need” is based on Student Financial Services calculations. If you anticipate needing a laptop for the whole term, we encourage you to inquire with Student Financial Services and the library first due to our smaller pool of equipment. However, our department commits to meeting the needs of every student, so do not be afraid to reach out if you believe you need one of our laptops for any length of time.
Title IX
You deserve a community free from discrimination, sexual harassment, sexual assault, domestic violence, dating violence, and stalking. If you experience or know of a Title IX violation, you have many options for confidential support and/or to report your experience. At go/titleIX you can read more about how to get help and support. Note that I am a mandatory (non-confidential) reporter.
Learning
Learning happens when you develop new neural pathways. You do this by repeatedly practicing new skills. This takes time, patience, and perseverance, and it can sometimes feel deeply uncomfortable. My role is to facilitate your learning by providing guided practice with feedback, and to help you structure the pace of your learning.
Based on your past learning experiences, you may already have the neural pathways in place to quickly learn certain topics, while you may have to work harder on others. This has nothing to do with your ability to learn this material. You all have the capacity, with sufficient practice, to rewire your brains to become experts in this subject.
Honor Code
All work you turn in should be your own, but collaboration is encouraged. Please adhere to the following guidelines:
- For problem sets, you must acknowledge your collaborators, and write up your solutions on your own, using your own words, and without another solution in front of you.
- First attempts at exams, quizzes, and proofs must be entirely your own work, and should be completed only with the resources specified. Revisions can be discussed with a peer or with me, after both students have completed the exam/quiz in question. Again, the actual revision should be completed on your own and in your own words.
(un)Grading
You will not receive a grade for any single assignment. Instead, you will propose a final grade to me based on a portfolio of your work that demonstrates your learning throughout the semester. While I reserve the right to reject the grade you propose, I trust you that you will engage thoughtfully in this process, and I do not anticipate having to reject your proposals. I'm taking this approach in order to remove the extrinsic motivator of grades, which have been consistently shown to hamper learning.
While there will not be grades, there will be lots of feedback, evaluation, assessment, and revision. These activites will help you to maximize your learning. At the beginning of the semester you will create an individual learning plan, and you will meet with Prof. Kimmel during the semester to discuss your progress.
As this is a 400 level elective, and a CW class for some of you, the expectations for the amount and sophistication of the work you complete is high. In exchange for your hard work, I will do my utmost to help each of you achieve your learning goals, and to be transparent about expectations for learning throughout the semester.
Class Participation
Your engagement in class periods will directly affect your learning. If you become distracted, whether through digital devices or analog daydreams, it not only affects your learning but hampers the learning of those around you; it can distract them, or it can make you unprepared to engage with your group. If your behavior is disruptive or distracting to the learning of your peers, I will give you a warning. If it continues, I will ask you to leave.
Group Problem Solving
Problem solving in groups helps you to learn. Explaining your thoughts solidifies your thinking, and hearing other people's perspectives broadens your conceptions. Additionally, working with other students will help you to build a community within the computer science department. Finally, practicing working in groups will help you to become a better team member no matter what you do after Middlebury.
Here are some ideas to participate productively in group work:
- Suggest an idea
- Highlight an idea that someone else suggested
- Solicit feedback on an idea
- Give feedback on an approach
- Write on the board
- Ask questions: ask what the problem means, ask for clarification for something you don't understand, ask for more time to think
- Restate in your own words something someone else said.
- If you are someone who is uncomfortable with silence and likes to fill it, try to sit in silence to give others a chance to think and speak.
Note that I generally only give you enough time to brainstorm and test a few approaches rather than fully solve a problem, so don't get discouraged if you are not fully able to complete the prompt.
Attendance
Your being in class helps your classmates to learn, just like their presence will help you to learn. If you will miss a class, please let me know as early as possible so that I can provide a good learning environment for your groupmates; you are still responsible for learning the missed material.
Exit Tickets
After each class, you should (within 24 hours) fill out an exit ticket on the Canvas discussion with one question or comment you have from the day's class (or you can like other post(s)). In order to provide you with the best learning experience possible, I need to know what I have not yet explained well enough. The next class I will fill in any gaps in my explanations.
Choose Your Own Adventure Participation
In your learning plan, you should lay out additional goals for participation in the class. Here are some ideas:
- Come to office hours regularly. (This is my personal favorite because I get to know you better!)
- Ask questions regularly during class. (This one helps you stay focused in class, in addition to helping me help you learn optimally.)
- Participate in a regular study group
- Ask questions about the problem set on the Canvas Problem Set Discussion board
- Respond to questions about the problem set on the Canvas Problem Set Discussion board
- Use Perusall to read/annotate the textbook.
- Alert me to typos in any of my materials. Everyone's learning will be hampered if my material is not clear or incorrect because of a typo!
- Have another idea for participation? Please come discuss with me.
Problem Sets
One of the main ways you will learn this material is by working on problem sets. The problem sets provide you with opportunities to practice problem solving, to make mistakes, to build new neural connections, and to self-assess your learning. Many of the concepts in this class will not truly sink in until you try to solve a problem that applies those concepts. I expect you to understand the course material at a level such that you can independently solve problems and write proofs related to complexity classes.
If you want additional practice beyond the problem set, see these textbooks for additional problems, as well as the additional exercises in our text.
Each problem set has 3 parts. In my experience, most students find completing all three parts very helpful for their learning. However, if you would like to Please see these instructions for how to submit the Rough Draft, Problem Set, and Self-Assessment.
- Rough draft: To complete the problem set, your brain needs time (and sleep) to brainstorm, consolidate, and synthesize ideas. To get this process started, you should submit a "rough draft" of your problem set. This draft can take any form you choose, but should demonstrate you've spent at least 1-2 hours working on or thinking about the problem set. Once you submit the rough draft, hints for the pset will become available on Canvas files. You should try as much as possible to complete the problem set without the hints, but if you are stuck for some time, you can use the hints to try to get unstuck.
- Problem Set: Write up and turn in your solutions to Canvas. Your solutions do not need to be perfect or even complete. You are not being graded on completion or correctness. The point of the problem sets is to help you learn and practice the skills of the course. You should put time into them but don't go over board. Once you turn in your problem set, solutions for the pset will become available on Canvas. You will use these for the self-assessment.
- Self-Assessment: You will critically compare your solutions to pset problems with my solutions. This process helps you to figure out what you understand, and where you need more practice. You should follow these instructions.
Reflections
Regular reflecting on your learning process will help you to learn. You will write a written reflection approximately every two weeks on your progress towards your learning goals, commenting on your accomplishments and challenges you're facing.Assessments
Weekly Assessments
Non-CW Students
There will be a weekly quiz for you and me to assess your learning. Quizzes will always consist of one problem related to the most recent problem set, and may contain a problem related to previous material. Quizzes will be taken through Canvas. All quizzes must be completed individually but are open personal notes, course notes, and textbook. (Not open internet.)
I will give you feedback on your quiz responses. You are expected to retake quizzes until you have sufficiently demonstrated an understanding of the material. In my past experience, if the quiz needs to be revised, usually one resubmission is sufficient, students occasionally submit twice, and rarely three or more times. I encourage you to discuss any questions about the material with me, and you are also welcome to discuss with classmates if you have both previously attempted the quiz. However, the quiz should always be taken on your own and your responses should be your own.
CW Students
You will write a polished draft of one proof from the problem set each week. Sometimes I will designate which proof should be chosen, and other times, you can choose from among those on the problem set. You will get feedback on your draft from a peer and from me, and should submit a revised version the following week based on this feedback, (and possibly additional revisions, if necessary), to demonstrate full understanding.
Major Assessments
Non-CW Students
There will be a multi-day self-scheduled midterm and end-of-term exam. (I do not expect you to work on it for multiple days, but these problems benefit from time spent mulling.) Both exams should be completed individually, but are open course notes and textbook. You may revise the midterm.
CW Students
There are two longer writing assignments. See the CW tab for more info.
Late Submissions
All assigned work will have deadlines. These are for your benefit to keep you on track to acheive the level of learning I (and hopefully you!) expect in this course. Given that there are no grades, all of these deadlines are necessarily soft/suggested. However, if you do not keep up with these deadlines, you will make it increasingly difficult for yourself to learn and accomplish your learning goals.
Advice from Fall 2020 Students
- Don’t let perfect be the enemy of good!!!!!!!
- Form a consistent problem set group.
- Focus on your learning and your understanding - this is a perfect example of something where you’ll get out what you put in!
- Always question your intuition!
- Ask lots of questions
- Think ahead for problem sets because you might randomly get stuck and set a few strict rules with yourself if there are loose deadlines
- Give yourself time on rough drafts & go to office hours!
- It's all realistic, even if it doesn't seem that way.
- Review the Venn diagram frequently cuz it helps!
- Seek out office hours on the feedback you get. It was helpful to talk out loud what areas you need to improve on and try to explain the concept in your own words in front of the professor.
Texts
Main text:
- Computational Complexity: A Modern Approach by Arora and Boaz.
The link above is to Perusall, an app that allows you to annotate (post questions and comments) on the text that others in the class can see and respond to. The version in Perusall is a draft version of the textbook that is available for free, and is very close to the published version. You can buy the hard copy version from the usual places.
It can be helpful to see alternate explanations of these topics, or additional practice problems. Here are a few other texts/lecture notes/videos courses websites for this purpose:
- Computational Complexity: A Conceptual Perspective
- If you like watching videos, these video lectures from Carnegie Mellon cover a lot of the material that we will be learning.
- Luca Trevisan's lecture notes
- Muli Safra's lecture notes