OverviewIntroduction 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.
LecturesThere are four lectures a week, MTWR 10-11 in Towne 303. Each lecture is followed by a 1-hour recitation. Slides generally be posted before or shortly after class. Because of the compressed nature of the Summer term, attendance is required. We will be moving very quickly between topics, and it will be difficult to catch up with material that you miss.
RecitationsRecitation will run 10-11am immediately following lecture. One recitation section will meet in Towne 303; a second location will be announced on the first day of class. Attendance is required. Reciation are 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 boardWe 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.
Resources and softwareWe 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. Please refer to Homework 0 for instructions on how to obtain and install these software packages for use on your home computer.
TextbookWe 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 labsThe University of Pennsylvania provides a number of computer labs for use by SEAS students. All of the SEAS computer lab machines have DrJava 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.
GradesThe following is the grade breakdown for the course:
- Homeworks: 50%
- Midterm: 20%
- Final: 30%
- Staff Discretion: Adjustment for pariticipation, etc.
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.
Homework and lateness policiesIt 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 be due 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 the Summer term is compressed, we will not accept any late submissions past the grace period without prior consent of the instructor. Extensions will only be granted under exceptional circumstances, such as serious illness, and it may be necessary to take in incomplete in such cases. There is no grace period allowed on extensions. This policy is enforced automatically by the submission system. At the end of the grace period the submission link will disappear and you will no longer be able to submit. It is your responsibility to make sure your submission completes successfully in time.
ExamsThere will be one mid-term exam and a final this semester. See the Exams page for the dates.
Re-gradesYou 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 policiesIn 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.
Questions and commentsWe'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.