Attendance and active participation are expected in every class. Participation includes asking questions, contributing answers, proposing ideas, and providing constructive comments. Other students invariably have similar questions and concerns as you do and they, too, will appreciate your participation. Most importantly, your participation allows us all to develop a common terminology and understanding of the abstract and difficult concepts we study, and is the only way for me to understand what you and other students might have difficulties with.

I welcome feedback during the semester about the course. I am available to answer student questions, listen to concerns, and talk about any course-related topic (or otherwise!). Come to office hours! This helps me get to know you. You are welcome to stop by and chat. There are many more exciting topics to talk about that we won't have time to cover in-class.

In particular, we encourage students to find mistakes in the lecture notes and the powerpoint slides. Students who report mistakes will get a small amount of credit. Please send all course communications through Piazza. Your post should be public for general questions, private to all instructors (which includes the TAs) for any student-specific issues (e.g., grading, etc.), and private to Prof. Roth for extremely personal matters.

Although computer science work can be intense and solitary, please stay in touch with me and the TAs, particularly if you feel stuck on a topic or project and can't figure out how to proceed. Often a quick face-to-face conference or Piazza post can reveal solutions to problems and generate renewed creative and scholarly energy. It is essential that you begin assignments and projects early, since we will be covering a variety of challenging topics in this course.

We will be using Piazza as the course message board. We also make course-wide announcements through Piazza, be sure to sign up for it. You are responsible for the content of all announcements on Piazza.


Your grade will be based upon five homework assignments, two exams, short weekly quizzes, and (possibly) a course project. Assignments must be submitted according to the assignment submission instructions.

Homeworks: There will be 5 problem sets, most of which will involve Python programming and experimental work. Instructions on how to submit solutions will be available for each assignment.

Quiz: There will be short quizzes nearly every week hosted on Canvas. The purpose of these quizzes is to get you to review the lectures from the previous week and to think about the involved content. Quizzes will be short (~10 minutes) and are open notes. In general, they will be due on Mondays at 11:59 PM; consult the course schedule for further details.

At the end of the semester, final grades will be calculated as a weighted average of all grades according to the following weights:


Academic Integrity

All work in this course is subject to the University's Academic Integrity policy. Violations of the academic integrity policy or the course collaboration policy will incur consequences according to university regulations. Penalties for academic dishonesty may lower the final grade in the course. If one student shares code with another, both the donor and the recipient of the code are in violation of the academic integrity policy and will be referred to the Office of Student Conduct.

As we will state explicitly for each of the assignments, we encourage people to work together and discuss the assignments. However, each of you should produce your own code and your own write-up. If required by any assignment, you must list all people you worked with or consulted, and all resources you consulted (excluding the course textbooks and notes) during the completion of the assignment.

Submission and Late Policy

All work must be turned in either in hard-copy or electronic submission, depending on the instructions given in the assignment. E-mailed submissions or privately Piazza-posted submissions will not be accepted. Extensions will be given only in the case of verifiable medical excuses or other such dire circumstances, if requested in advance.

Everyone will receive 96 late hours (four late days) . It is up to you to track how many late days you've used and mark your count at the top of each late hardcopy submission. (For example, if you turn in one assignment 3 hours late, you would write at the top "Turning in 3 hours late")

Once you exhaust you late budget, your submissions will not be accepted. The reason is that we want to post solutions in a timely manner, and waiting too long will already affect your fellow students.


There will be two exams in this course. The exams will be closed-book and closed-notes. They will cover material from lectures, homeworks, and assigned readings (including topics not discussed in class). So, keep up with those readings!

Collaboration Policy

I want to encourage you to discuss the material and work together to understand it. Here are my thoughts on collaborating with other students:

If you have any questions as to what types of collaborations are allowed and which are dishonest, please ask me before you make a mistake.

Electronic Devices

I have no problem with you using computers or tablets to take notes or consult reference materials during class (even though, some research questions the benefit of this) . Tempting though it may be, please do not check e-mail or visit websites that are not relevant to the course during class. It is a distraction, both for you and (more importantly) for your fellow classmates. Please silence your phones and computers when you enter class.