CIS 110 - Introduction to Computer Programming

Java | /r/compsci (reddit) | PennPortal |

Overview

This course is an introduction to computer science by way of learning the fundamentals of computer programming in Java. The heart of computer science lies in algorithmic thinking or how to "think like a computer". While algorithmic thinking and computer programming are not the same thing, they are closely related as the famous computer scientist Donald Knuth once wrote:

It has often been said that a person does not really understand something until after teaching it to someone else. Actually a person does not really understand something until after teaching it to a computer, i.e., expressing it as an algorithm.

Thus, CIS 110 develops your skills in the three key areas of algorithmic thinking, precision, decomposition, and abstraction using computer programs as a way to make all of these things concrete. So in addition to learning how to think like a computer, you will also gain practical experience with computer programming that you can take back to your own field.

CIS 110 is the first part of the introductory sequence to computer science. It is designed for people with no prior programming experience. If you have programmed in the past and find the material to be a review, you should consider the continuation course, CIS 120.


Lectures

There are two lectures a week on Monday and Wednesday offered twice each day.

  • MW 11:00 - 12:00, Wu and Chen auditorium (Levine Hall)
  • MW 1:00 - 2:00, Berger auditorium (Skirkanich Hall)

There will be no difference in content between the two lectures, so it is fine to attend the lecture that you are not registered for if you happen to miss your assigned lecture. However, we ask that, for space reasons, that you otherwise attend the lecture for which you are registered.

Lab sections

Lab 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.

Labs are a critical component of the class. In labs, 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. As a result Lab attendance and participation are mandatory and will impact your grade as described below.

Your lab TA 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 homeworks. 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. Please sign up for the service and add CIS 110 to the list of classes you are attending.

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 enrollements in both classes this semester, you must speak with your current class's instructor to initiate a request to to transfer between classes. Keep in mind that we will be doing our best to accomodate your request, but ultimately, we may not be able transfer you depending on class enrollements at the time.


Resources and software

We will be using the Java programming language and the jGRASP integrated development environment (IDE) this semester. Java is a platform-independent, high-level, object-oriented programming language commonly used in the software development industry. jGRASP is a lightweight, yet full-featured IDE that specializes in creating software visualizations to help you understand your code.

Please refer to the course webpage for instructions on how to obtain and install these software packages for use on your home computer.

Textbook

We will be using the required textbook Building Java Programs: A Back to Basics Approach by Stuart Reges and Marty Stepp. The course follows closely the first nine chapters of the text and the problems at the end of each chapter serve as good, additional practice for the homeworks and exams. 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 Java and jGRASP installed by default. You can find a list of SEAS-supported labs on the SEAS computer lab page.


Grades

The following is the grade breakdown for the course:

  • Homeworks: 50%
  • Lab attendance and participation: 10%
  • Exam #1: 12%
  • Exam #2: 12%
  • Final: 16%

There is no curve for the course. I reserve the right to slide grades upward for particular assignments or exams if the average is below my expectations. Overall, this maps to the following list of overall percentages to the given set of guaranteed final letter grades.

  • 95% is a A (4.0)
  • 90% is at least a A- (3.5)
  • 85% is at least a B (3.0)
  • 80% is at least a B- (2.5)
  • 75% is at least a C (2.0)
  • 70% is at least a C- (1.5)
  • 65% is at least a D (1.0)

For example, if you have an overall 87%, you will at least get a B in the class.

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. 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 due date, including weekends. You may use up to 2 late days per homework. After your late days are used up, each successive day that your homework is late results in a 2 point penalty for that homework's grade.

We will not accept homework submissions turned in a week after the due date, and we will not accept any homework submissions after the final day of class.

Exams

There will be two exams and a final this semester. The exams and finals are scheduled for the following days:

  • Exam 1: Wednesday 10/5 (the week before Fall break)
  • Exam 2: Wednesday 11/16 (the week before Thanksgiving break)
  • Final: TBA

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.

Due to administrative reasons, exams are kept by us but are viewable by asking Cheryl Hickey in Levine 502.

Re-grades

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, Cheryl Hickey has 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

Quoting a wise collegue: cheating is not cool, is not tolerated, defeats the purpose of taking this class, and carries severe penalties.

In a computer programming class, the line between cheating and helping can be blurry at times. And we want to encourage you to help your peers! 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.
  • You may not show your code to others.
    • 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 judgement.
    • Protect both yourself and your friends. In Penn Engineering, in cases of unwarranted collaboration all participating parties are typically penalized (both helpers and helpees).
    • Use judgement 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.

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 coments 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.