Welcome to the Summer 2021 iteration of CIS 160!

If you're new here, welcome!

We have a course Piazza page. It will be used for course announcements and Q&A.

We have a course Gradescope. It will be used for homeworks. Gradescope can be accessed through Canvas.

Most questions should be directed to Piazza. However, if you need to get in contact with the course staff for an urgent matter, please email the head TAs at cis160@seas.upenn.edu (do not contact this email address with waitlist related queries).

Course Learning Objectives

  • Decipher and manipulate mathematical notation for sets, functions, operations, and relations, as applied to discrete modeling of computational problems.
  • Construct informal but rigorous mathematical proofs.
  • Apply combinatorial techniques to counting problems that arise in computation.
  • Build discrete probabilistic models for random processes and behaviors that arise in computation.
  • Apply graph theory to modeling problems that can be solved with computational methods.


Your final grade will consist of:

  • 30% - Exam 1
  • 30% - Exam 2
  • 30% - Homework
  • 5% - Interactive Session Attendance/Participation
  • 5% - Recitation Attendance/Participation

Collaboration Policy

You may organize into collaboration teams of up to 3 current students. For each homework assignment, you can only be in one team and must list all team members on your homework submission, whether or not you specifically spoke with them. You may have different teams for different assignments.

Collaboration can only consist of discussions. You must write your solutions on your own. Sharing of solutions essentially as they are written in a LaTeX file, an email, a PDF, over Zoom, or elsewhere is not allowed. This includes submitting solutions that you obtain from the web or from people not enrolled in CIS 160. Penalties could include failing the course and/or being reported to the Office of Student Conduct.

The only materials you may reference when writing homework solutions are course materials (lecture notes, homework solutions, and recitation guides).

If you would like to use part of a solution from a problem presented in lecture, recitation, or past homework solutions you may do so with attribution; i .e., provided you add a comment in which you make clear you copied it from these sources.

Example of Allowed Collaboration

  • Val lists Swap and Sampath as collaborators.
  • Sampath lists Swap and Val as collaborators.
  • Swap lists Val and Sampath as collaborators.

Example of NOT Allowed Collaboration

  • Val lists Sanjeev and Sampath as collaborators.
  • Sanjeev lists Sampath and Swap as collaborators.
  • Sampath lists Swap and Val as collaborators.
  • Swap lists Val and Sanjeev as collaborators.

This example is a violation of the policy since the size of the team is 4 (which is bigger than the maximum of 3 allowed). Sanjeev would have to list Val, which would give him 3 collaborators.

Example of NOT Allowed Collaboration

  • Val lists Sanjeev as a collaborator.
  • Sanjeev lists Val and Sampath as collaborators.
  • Sampath lists Sanjeev as a collaborator.

This example is a violation of the policy since Val does not list Sampath. Even if Val and Sampath never directly spoke to each other, they are considered part of the same “team.”

Other examples of collaboration which are NOT permitted include:

  • Discussing or solving problems with friends not enrolled in the course.
  • Posting questions on the internet or searching for solutions on the internet.
  • Borrowing a friend's solutions.
  • Giving your solutions to a friend. This includes screen sharing documents.

If you are unsure of whether or not something is allowed, make a private post on Piazza


There is no required or recommended textbook for this course. A textbook that can be referred to for extra reading is ''Mathematics: A Discrete Introduction'' by E. A. Scheinerman.