Skip to main content
CIS 121: Fall 2018
Eric Eaton
Teaching Assistants:
Course staff
Discussion Forum:
Tuesday/Thursday 10:30 am – 12:00 pm in CHEM 102
Professor Office Hours:
Monday/Thursday 12:30 pm – 1:30 pm in Levine 464
CIS 120 and CIS 160. (Please note that these are prerequisites; you must have completed both courses before taking CIS 121. Exceptions will not be granted.)
Introduction to Algorithms, 3rd edition by Cormen, Leiserson, Rivest, and Stein. The lectures and the reading will draw from the textbook. It is strongly recommended that you buy this textbook.


The grading for the course will consist of:

  • 45% for homework assignments
  • 10% for each of three exams
  • 20% for the final exam
  • 5% for recitation attendance. Recitation attendance is mandatory.
Late submission policy:

The following applies to all homeworks, both written and programming. Each student has two free, no-strings-attached late-days. These are to accommodate things like mild sickness, interviews, procrastination, etc. No additional late days will be granted for any of the above reasons. If you are out of late days, then your homework will receive a score of 0. One “day” is defined as anytime between 1 second and 24 hours after the homework deadline. Late homeworks can be turned in via Gradescope.

Communications policy:

As you will discover, I am a proponent of two-way communication and 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.

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 Dr. Eaton for extremely personal matters. Whenever possible, make your post public to benefit other students. Be sure to check Piazza to see whether someone else has asked your question before posting!

Please do not email Dr. Eaton – post all course-related communications to me through Piazza. This will ensure that I respond quicker to students in my courses, instead of having your email mixed in with the hundreds of others I receive each day. I make a sincere effort to respond to all course communcations within 24 hours during weekdays.

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.

Collaboration policy for written homeworks:

You are allowed to discuss ideas for solving homework problems in groups of three, documenting who you discussed with at the top of your assignment. You are not allowed to write up the solutions together.

  • It is fine to discuss the topics covered in the homeworks, to discuss approaches to problems, and to sketch out general solutions. However, you MUST write up the homework answers and solutions individually. You are not permitted to share specific solutions, mathematical results, etc.
  • My suggestion is to discuss the problems together, but then if you made any notes or worked out something on a white board with another person while you were discussing the homework, then to erase or destroy those notes as soon as the discussion is over. You shouldn’t use those notes while writing up your answer, however tempted you may be to do so. This will force you to write up the solutions yourself and to make certain that you genuinely and fully understand them.
Collaboration policy for programming homeworks:

You may not collaborate on any part of programming assignments. This includes discussing solution strategies, sharing code, looking at someone else’s code, using code from online forums (e.g. Stack Overflow), sharing specific test cases, keeping code in a public repository, etc. You may consult any official documentation, such Javadocs or Oracle’s Java tutorials, or any official course material.

TAs must report any instances of cheating during office hours. Both written and programming homeworks are automatically checked for similarity and similar homeworks are also brought up during grading. Any violation of the collaboration policy will be dealt with severely.

Regrade policy for written homeworks and exams:

Each written assignment and each exam will have a regrade request deadline that will be posted typically one week after the assignment or exam has been returned with your score. Note that solutions will be provided in class, so please consult these carefully before requesting a regrade. Please submit a regrade request via Gradescope by the regrade deadline.

Regrade policy for programming homeworks:

We allow you to indicate small errors (defined below) that you have made, which, when fixed, will allow your programs to pass autograder tests. You will need to fill out a regrade request on Gradescope by the regrade deadline, which is one week after you receive your scores. In the form, you must identify exactly the error in your code and include a precise description of the fix that needs to be made (e.g. line numbers). A small error is a problem whose fix should generally require changing only 1 to 2 lines of code. Your new score will be the maximum of your original score and 80% of your regraded score. Examples of small errors:

  • Use of == instead of .equals
  • Modification of a method header, causing compilation failure
  • Lack or addition of ! operators
  • Forgetting to cast an int as a double

We reserve the right not to regrade fixes deemed too large.