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.

Lecture and Recitation

There are three lectures a week, MWF 12-1 (first section) and 1-2 (second section) in Towne 100. There will also be a one-hour recitation each week, which you will sign up for at the beginning of term. Attendance is required for both lecture and recitation.

Slides will be posted on the syllabus page shortly before class.  The lecture recordings will be posted once they become available after class. No that the recordings do not replace your attendance in class! You will not be able to ask the recording questions, see anything written on the chalkboard, hear other students' questions (only the instructor's microphone is captured), or see demos or the contents of the second projector screen. In some cases, the recording system may be unreliable.


The grade breakdown for the course is:

Incomplete grades will be given only for verifiable medical illness or other such dire circumstances.

Your lowest homework grade on a submission that demonstrates at least minimal effort (at least 7/20) will be dropped.

All graded work will receive a percentage grade between 0% and 100%.  Here is how the percentage grades will map to final letter grades:

Rounded Percentage
Letter grade

Rounded Percentage Letter grade
97% -100%
A+ (4.0)
77% - 79% C+ (2.3)
93% - 96% A (4.0) 73% - 76% C (2.0)
90% - 92% A- (3.7) 70% - 72% C- (1.7)
87% - 89% B+ (3.3) 67% - 69% D+ (1.3)
83% - 86% B (3.0) 60% - 66% D (1.0)
80% - 82% B- (2.7) 0% - 59% F (0.0)

The instructors reserve the right to adjust the percentage ranges for each letter grade upward in your favor.  Final grade determinations are made by the instructors.

A serious lack of effort may be grounds for failure in the course. If you find yourself in any of the situations below, you should meet with an instructor promptly to discuss your situation:

Other Notes:


You may request a re-grade for homeworks up to one week after they are returned. Please direct your homework re-grade requests to your TA.

For exam re-grade requests, we provide a re-grade request forms on the exams page for you to fill out. We will announce the deadline for re-grade requests when we release exam grades. Midterm re-grade requests must be submitted to your TAs. We will provide directions for submitting final re-grade requests when we release the final exam scores. All exam re-grade request must be in writing, and must be accompanied by your exam.

Note that a re-grade can result in a lower score on the problem in question. We also reserve the right to re-grade the entire submission. As a result, your final grade may be lower or higher than your original grade.

Homework and Late Policies

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

Submitting Homeworks

Late Policy

Collaboration Policy

We encourage you to discuss the material and work together to understand it, but you must complete all homework assignments and exams yourself.  For this reason, we have strict rules about what you can and cannot do:

We encourage you to:
You must not:
Use your best judgment.

Naturally, the course also follows the standard Penn 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 to detect copying from other students or from the internet.

If you have any questions or doubts as to what types of collaborations are allowed, please ask the instructor or your TA.