Students are expected to know how to program, be familiar with common data structures, and to have a certain level of mathematical maturity, which includes knowledge of common proof techniques. These prerequisites are satisfied by Computer Science 211 (Data Structures) and Mathematics 232 (Discrete Math).


The course has a required textbook, which will be used for readings and homework problems:


Students will complete:

All exams will be take-home exams. Assignments are due at the posted time, or at the beginning of class on the due date if not otherwise noted. Readings should be completed before coming to class.


Limited collaboration is encouraged on the homework assignments. Problems will take time to understand and solve, and students will benefit from developing ideas and solutions in small groups. However, each student must write their own solutions, and no collaboration is allowed while writing the solutions. Writing solutions on your own will cement understanding of the problem and demonstrate mastery of the solution. Looking at solutions from other students or any other source (including the web), or collaborating to write solutions, is considered a violation of the honor code. All suspected violations will be referred to the academic honor board.

I highly encourage students to attempt problems on their own before meeting as a group, especially the easier problems that are designed to exercise skills.

No collaboration is allowed on quizzes.

No collaboration of any kind is allowed on the exams.

See the longer statement below about academic honesty in CS 312 and for more tips.

Homework Submission and Late Policy

Homework will be submitted via GradeScope. You may type up your answers in Latex and compile to pdf (preferred) or hand-write your homework and scan to pdf. If scanned, the pdf must be rotated correctly, scanned at high quality, and readable at a standard letter size. In each assignment, some points are devoted to having a high-quality, readable submission — you will lose these points if your work is unreadable or too messy. You should view the pdf once you submit to ensure it meets these minimum standards. Review the gradescope submission workflow (here and here) to make sure you upload and annotate your homework correctly.

Late Policy. Each student will have three free late days to be used on homework assignments. Each late day buys exactly 24 hours from the original due date (so 24.5 hours = 2 late days). If you use up your late days, you will be penalized 33% of the assignment’s value for each day it is late (0–24 hours = 33% penalty; 24–48 hours = 66% penalty; 48+ hours = no credit). Late work should be submitted electronically as an attachment to a private message to instructors on Piazza. It is your responsibility to scan any written work and submit it in pdf form.

Late days may not be used on the exams.


Weekly quizzes will be assigned on Moodle and count as part of your homework grade. Collaboration is not allowed on the quizzes, but you may consult your notes and the textbook. The lowest quiz score will be dropped.

Fourth Hour

The fourth hour will be used every week, primarily to practice solving problems both as a class and in small groups. We will also use this time for questions about homework and lecture topics, and occasionally for additional lectures or other activities. Attendance at fourth hour is required and will be included in the class participation portion (10%) of your final grade.

Course Technology


Accommodations for Disabilities

If you have a disability and would like to request accommodations, please contact AccessAbility Services, located in Wilder Hall B4, at (413) 538-2646 or If you are eligible, they will give you an accommodation letter which you should bring to me as soon as possible.

Academic Honesty in CS 312

The Computer Science Department follows the Mount Holyoke College Honor Code. Work submitted for grading must be entirely your own, unless you were instructed to work in groups. The purpose of course assignments is to practice skills, gain a deeper understanding of the course material, and apply that knowledge to new situations. Assignments are designed to challenge you, stimulate critical thinking, and help you understand the concepts related to the course. Your grade is a reflection of your understanding of the material. We recognize that collaboration can help you master course material. In fact, there are certain ways in which we will encourage you to collaborate. These include: discussing course content at a high level, getting hints or debugging help, talking about problem-solving strategies, and discussing ideas together. However, you must do all coding and write-ups on your own. Writing code and solutions on your own will test and demonstrate your mastery of course material. Looking at solutions from other students or any other source (including the web), or collaborating to write solutions to individual work, is considered a violation of the honor code. All suspected violations will be referred to the academic honor board. If you are uncertain whether something is allowed, it is your responsibility to ask.

If you have engaged in any of the above acceptable collaboration activities for an assignment, you MUST acknowledge the classmates or TAs with whom you spoke – this should be done in a comment at the top of your main submission file.

The Association for Computing Machinery has a strong Code of Ethics and Professional Conduct. At this site you can read both the current Code from 1992 and the draft of the new 2018 version.

Internet sources:

The internet is a useful resource when learning to solve computer science problems. In general, it’s OK to look at resources for a broad topic (e.g., dynamic programming), but it is not OK to look at solutions for specific problem (e.g., interval scheduling) that is the same or subtantially similar to one you are working on for the class. If you are unsure whether something is allowed, ask. You must cite all online sources used while working on an assignment. It is always your responsibility to learn if a source is allowed.

Dos and Don’ts:

These lists are intended to clarify what types of behaviors are and are not generally permissible. Follow these guidelines unless specifically directed otherwise.