Skip to main content
CIS 121: Spring 2021
Rajiv Gandhi
Teaching Assistants:
Course staff
Discussion Forum:
Tuesdays and Thursdays at 9:00am and 10:30am, virtually and synchronously. Recordings will be made available after lecture.
CIS 120 and CIS 160 (These are prerequisites; you must have completed both courses before taking CIS 121. Exceptions will not be granted.)


The grading for the course will tentatively consist of:

  • 30% - Homework Assignments
  • 20% - Midterm 1 Exam
  • 20% - Midterm 2 Exam
  • 25% - Final Exam
  • 5% - Recitation Attendance and Feedback/Surveys

The professor reserves the right to adjust grading policies. Any cheating or violations of the collaboration policy will result in severe penalties to your grade, and may be escalated further.

You will be guaranteed a passing grade in the course if you meet all of the following conditions at the end of the semester:

  • Your average score on written homeworks is greater than or equal to 50%
  • Your average score on programming homeworks is greater than or equal to 50%
  • On each exam (both midterm exams and the final exam), your score is greater than or equal to one standard deviation below the course average on that exam.

If you do not meet these conditions, you will not necessarily fail the course; however, there is no guarantee that you will pass. Professor Gandhi or the TAs will not be able to answer questions like “do I have a passing grade?” or “what score do I need on the final exam to pass?” at any point throughout the course.

Late submission policy:

The following applies to all homeworks, both written and programming, unless otherwise specified. Each student can submit three assignments late. ‘Late’ means you may submit between 1 second and 48 hours after the homework deadline. These allowances are to accommodate things like mild sickness, holidays, interviews, computer crashes (see below), 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. Late homeworks can be turned in via Gradescope.

In the case of extreme circumstances, please do not hesitate to contact us at!

A word of advice:

We highly recommend using Overleaf for typing up written homeworks. This way if your computer crashes, you won’t lose all your hard work. For programming homeworks, we recommend backing up your computer regularly (Google, Microsoft OneDrive, etc. provide tools for automatically backing up your computer at scheduled intervals, or you can do this manually). You can also use GitHub, though make sure you only use private repos.

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. These students must also list you as a collaborator. The composition of your team may change from one homework to another. 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.
  • Our suggestion is to discuss the problems together, but if you made any notes or worked out something on a white board with another person while you were discussing the homework, then 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 sure that you genuinely and fully understand them.

Any violation of the collaboration policy will be dealt with severely.

Collaboration policy for programming homeworks:

You are allowed to discuss low-level issues like the meaning of Java constructs, or how to use the computing environment. You are allowed to discuss high-level questions such as what the instructor/lab TA said, the content of the textbook or other general resources. At no time – prior to submitting an assignment, after submitting an assignment, or after the course has ended – are you allowed to…

  • Discuss issues directly pertaining to the homework questions or their solutions.
  • See another student’s homework solutions.
  • Show your solutions to another student.
    • This includes asking a classmate to debug your code and agreeing to debug a classmate’s code. If you do this in view of a TA, know that the TAs are required to report your names to the instructor.
  • Share any code except the code that is being made available by us on the course website to be used specifically with your solutions
    • Occasionally, a small snippet of code from the textbook may help your work. You can use such a snippet with attribution, i.e., provided you add a comment in which you make clear you copied it from the textbook.
    • You may NOT use snippets of code from the Internet (e.g., and similar).
    • You may NOT share test cases.
  • Post your code where it may be accessible to others. This is largely a clarification of the previous rule. This means that you may NOT seek help from online forums, like StackOverflow or similar. You may NOT push your code to a public repository like GitHub (private repositories, however, are permitted. Note that if you use a private repo, you must keep it private, even after the course ends). When in doubt, ask on Piazza.
  • Share the material that we post for this course with anybody who is not a registered student in this course or a staff member.
    • If you find any such material already posted somewhere else you must inform the course staff immediately. Use your common sense and ask any member of the staff if you are not sure about a resource you are considering.
    • You may NOT share course materials without the prior approval of the course staff. You may NOT post course materials on sites such as CourseHero. This infringes upon the copyright of materials authored by the course staff.

Any violation of the collaboration policy will be dealt with severely.

Regrade policy for written homeworks and exams:

Each written assignment and each midterm 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. Beyond that deadline, regrades can only be given by permission of the instructor. Regrade requests are meant for cases such as arithmetic mistakes in tabulating a final score, or for a grader not seeing that you continued your solution on the back of the page (as an example). In the interest of transparency, the course staff makes its best effort to indicate exactly where points are docked with the associated reasons. For the written assignments and for the midterms, solutions will be provided in class. Please consult these carefully before requesting a regrade. Please submit a regrade request via Gradescope by the regrade deadline.

Please note that we regrade the entire submission, so it’s possible for your score to go both up and down.

Regrade policy for programming homeworks:

Regrade requests will only be accepted when they are a result of our mistake. For submissions which the autograder caught the error, we will not accept any regrade requests.