CIS 110 - Introduction to Computer Programming

Java | /r/compsci (reddit) | PennPortal | | directories | van pelt library | CETS | engineering library
computer graphics & game dev (SIGGRAPH @ Penn) | dining philosophers (DP) | science & tech wing (STWING) | women in cs (WICS)
CETS Answers


Introduction to Computer Programming is the first course in our series introducing students to computer science. In this class you will learn the fundamentals of computer programming in Java, with emphasis on applications in science and engineering. You will also learn about the broader field of computer science and algorithmic thinking, the fundamental approach that computer scientists take to solving problems.


There are three lectures a week, MWF 9-10 in Heilmeier Hall (Towne 100). Slides and video of the lecture will generally be posted shortly after class. However these do not capture everything that happens in lecture!

Recitation Sections

Recitation sections are offered once a week at a variety of times on Wednesday and Thursday. Currently available times are listed on the CIS class schedule.

Sections are a critical component of the class. In section, you will review the content discussed in lecture, learn about additional content that we did not cover in lecture, and work on problems together as a group.

Your section TAs is an invaluable resource at your disposal. They will be your guide for the course and your first stop for any questions that you may have. In addition, they will be responsible for grading your assignments. You should feel free to get in contact with them during their office hours or via email with any questions, concerns, or comments you have about the course.

Class message board

We will use Piazza as our message board system this semester. Piazza is a web service specifically designed for students to post questions about the course and have them answered by the class staff or their peers. We will also make course-wide announcements through Piazza, so make sure to sign up for it as part of Assignment 0.

Switching between CIS 110 and 120

CIS 110 and 120 make up our introductory sequence to computer science. While 110 is designed for people with no prior programming experience, 120 is designed to build on either the fundamentals learned in 110 or otherwise obtained outside of the classroom. Because this is not a black-and-white scale, we traditionally allow students to switch between classes.

However, because of record enrollments in both classes this semester, you must speak with your current class's instructor to initiate a request to transfer between classes. Keep in mind that we will be doing our best to accommodate your request, but ultimately, we may not be able transfer you depending on class enrollments at the time.

Resources and software

We will be using the Java programming language and the DrJava integrated development environment (IDE) this semester. Java is a platform-independent, high-level, object-oriented programming language commonly used in the software development industry. For TOY assignments, we will also use the Visual X-TOY environment. These software packages are all free, and you will install them as part of Assignment 0.

Please refer to Assignment 0 for instructions on how to obtain and install these software packages for use on your home computer.


We will be using the required textbook Introduction to Programming in Java: and Interdisciplinary Approach by Robert Sedgewick and Kevin Wayne. You can purchase the textbook from the UPenn bookstore, Amazon, or your favorite bookstore.

Computer labs

The University of Pennsylvania provides a number of computer labs for use by SEAS students. All of the SEAS computer lab machines have both DrJava and Visual X-TOY installed by default. The CIS 110 course-specific folder in the start menu contains shortcuts to these programs as well as links to useful, on-line resources.

You can find a list of SEAS-supported labs on the SEAS computer lab page.


The following is the grade breakdown for the course:

  • Homeworks: 50%
  • Section attendance and participation: 10%
  • Midterm and final exam: 50%

There is no preset curve for the course. The nominal division of weight between the midterm and final will be 20% midterm, 30% final. However if you do better on the final than on the midterm, more weight will be given to your final exam score to reward your improvement.

Homework and lateness policies

It is imperative to understand that computer programming is not a spectator's sport. To get good at it, you need to practice, and the primary vehicle for that is the homeworks.

Because of the size of the class, we will be using the late days system to manage late submissions. Assignments will be due at 9pm, with a 3-hour grace period. You will have 4 late days to use this semester on the homeworks. Each late day that you use allows you to turn in a particular homework assignment 24 hours past the (9pm) due date, including weekends. The grace period does not apply to late days. You may use up to 2 late days per homework. Assignments submitted more than 2 days late will receive no credit. Exceptions to this policy will be granted only in exceptional circumstances (e.g. extended illness). You may not combine late days or use a grace period with an extension for exceptional circumstances. Starting with Homework 5, extensions for exceptional circumstances must be entered into the course database. You will see any extensions when you view your grades or submit an assignment online. If your do not see an extension listed with 24 hours of it being granted, you must contact the TA or instructor who granted it to make sure it is entered.

Extra credit will only be given on assignments turned in by the original due date. Assignments submitted during the grace period or using late days will not receive extra credit.


There will be one mid-term exam and a final this semester. These are scheduled for the following days:

  • Mid-Term: Wednesday 29 Feb (the week before Spring break) in class
  • Final: Monday 7 May 12-2

Because of the size of the class, we will be employing multiple rooms to deliver the exams. Close to each exam date, we will announce the room assignments for each exam.


You may request a re-grade for homeworks up to a week after it due. Please direct your homework re-grade requests to your TA.

For exam re-grade requests, we will provide exam re-grade request forms for you to fill out. Your TA will then get back to you with the results of the re-grade.

Note that when re-grading homeworks and exams, we reserve the right to re-grade the entire submission. As a result, your final grade may be lower or higher than your original grade.

Academic honesty policies

In a computer programming class, the line between cheating and helping can be blurry at times. We encourage you to discuss assignments and approaches to solving them with each other, but it also important to go through the process of turning this in to a working program yourself. So we have pretty strict rules about what you can and can't do (shared with CIS 120):

  • You must type in and edit your own code.
    • Copying someone else's file is not allowed.
    • Allowing someone else to copy a file of yours, either explicitly or implicitly by leaving your code unprotected, is not allowed.
    • Editing each other's files is not allowed.
    • Suspected cases of plagiarism will be referred to the Office of Student Conduct. The typical punishment for plagiarism is suspension.
  • You may not show your code to others (except course staff).
    • Showing your code to someone else who is having trouble is not allowed.
    • Having someone else debug your code is not allowed.
  • Use your best judgment.
    • Protect both yourself and your friends. In Penn Engineering, in cases of unwarranted collaboration, all participating parties are typically penalized (both helpers and helpees).
    • Make sure you log out of lab computers and protect access to your code. If it is stolen, you may well still have to go through a stressful disciplinary hearing that will be more punishment than you deserve!
    • Use judgment about asking or answering questions of other students. For example, if you are supposed to implement Algorithm X that is described in the book, and you don't understand Algorithm X, then you can ask another student to explain it to you. However, if you are supposed to come up with your own algorithm to solve a problem, then you can not ask another student to tell you their algorithm.

Naturally, the course also follows the standard UPenn academic integrity code, so make sure that you are familiar with this as well. As a final note, we will periodically run cheat checking software such as Alex Aiken's MOSS to help detect copying. These program are remarkably good at detecting copying; changing variable names and simple code rearrangements don't trick them. Modifying an existing program to defeat a cheat checker is generally just as hard and requires just as much understanding of the problem as writing your own program from scratch.

When in doubt, don't hesitate to ask myself or your TA if you are unsure if the help you are providing is a violation of academic honesty.

Questions and comments

We're here to answer your questions, help you learn, and evolve the class so that current and future students learn why we love computer science so much! Remember that your TA is your first stop for any questions or comments about the class. You should also feel free to contact me with your questions and comments as well in before or after class, during my office hours, or via email.

If you are interested in CIS or one of our related degree programs, feel free to get in contact with Jackie Caliman.