CIS 110 Fall 2012 - Introduction to Computer Programming

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

Overview

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.

Lectures

There are three lectures a week, MWF 12-1 (first section) and 1-2 (second seciont) in Wu & Chen Auditorium. Recitations will be held every week on Wednesday or Thursday, and attendance is required. Slides will generally be posted before or shortly after class.

Recitations

Reciation is a critical component of the class. In recitation, 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 recitation 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.

All questions about course material and assignments should be posted to Piazza rather than e-mailed to your TA or the instructor. Other students invariably have the same questions as you do, and posting them to Piazza encourages discussion amongst you. For this reason, if you e-mail a question directly to a TA or the instructor, you will likely be asked to repost it to Piazza. If you need to post details of your code or solution to your assignment, please post a private question. All course staff can see private questions, which means we can respond more qucikly. If we think the question is appopriate to share with the rest of the class, we can also make it public.

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 and obtain a permit to transfer between classes. Keep in mind that we will be doing our best to accommodate your request, but 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 Homework 0 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 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. You may also be able to find a used copy.

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.


Grades

The following is the grade breakdown for the course:

  • Homeworks: 40%
  • Midterm: 20%
  • Final: 30%
  • Recitation: 10%
  • Staff Discretion: Adjustment for pariticipation, etc.

Each component of your grade is curved independently. There is no preset curve, or quota for the number of As, Bs, etc. Typically, about half the students receive some sort of A. Many of these students started with no prior programming experience.

If you do better on the final than on the midterm, more weight will be given to your final exam score relative to your midterm to reward your improvement.

Course Absence Reports (CARs)

If you must miss your recitation, and/or two or more consecutive lectures, and/or would like a homework extension due to absence (e.g. because of illness, religious holidy), you must fill out a Course Absence Report on PennInTouch. CARs allow you to notify all your instructors at once and ensure that we can properly take any absences into account at the end of the semester (e.g. by not penalizing you for missing recitation due to illness). Depending on the circumstances, we may ask you for more information so we can work out the most appropriate accomodation for you.

You do not need to fill out a CAR if you:

  • will miss only a single lecture.
  • will miss your recitation, but are able to attend a different one. In this case, you simply need to notify your TAs.

In the case of longer absences that cause you to get behind in all your courses, you are strongly encouraged to talk to your academic advisor. Your advisor can help you coordinate a realistic plan to catch up in all your courses simultaneously.

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. Homework assignments will generally be due on Thursdays at 9pm, with a 3-hour grace period on the due date unless otherwise noted. We strive to be available in the lab and to answer posts on piazza quickly up until the 9pm due date. During the grace period, you're on your own. We also will not count any extra credit on assignments submitted during the grace period.

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

The late policy is automatically enforced by our submission system. When you submit assignments or check your grades, you will be able to see exactly when each assignment was submitted, when it was due, how many late days you have used on each assignment, and how many late days you have left. Once you can no longer receive credit on an assignment the submission link will disappear. It is your responsibility to make sure your submission completes successfully on time.

Exceptions to the late policy will be granted only in exceptional circumstances (e.g. extended, serious illness). Be prepared to provide proof of your circumstances. You will see any extensions when you view your grades or submit an assignment online. If you 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. You may not use a grace period or any late days together with an extension.

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.

Exams

There will be one mid-term exam and a final this semester. See the Exams page for the dates.

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.

Re-grades

You may request a re-grade for homeworks up to a week after it is returned. 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 the instructor 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.