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
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
The grade breakdown for the course is:
- Homeworks: 50%
- Midterm: 15%
- Final: 25%
- Recitation: 10% (5% attendance / recitation exercises + 5%
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
|77% - 79%
|93% - 96%
||73% - 76%
|90% - 92%
||70% - 72%
|87% - 89%
||67% - 69%
|83% - 86%
||60% - 66%
|80% - 82%
||0% - 59%
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
- Numerous missed assignments or substantially blank
- Missed midterm or final exam. Be prepared to provide
documentation of a serious emergency to justify any unexcused
- Academic dishonesty (see the collaboration policy below). If
you believe you may have violated the collaboration policy, you
are encouraged to explain what happened to the instructor. Even
if your actions constitute a serious violation, the sanctions
are likely to be considerably less if you turn yourself in.
- Exam averages tend to be relatively low, reflecting the nature
of the exams; homework averages tend to be relatively high,
reflecting the effort that many students put into them.
- The median and standard deviation for each exam will be
posted, and approximate letter-grade guidance for the
midterm (but not the final) will be posted to help you evaluate
your own learning and performance. The median and standard
deviation for the homework assignments will not be given out.
- There is no quota for the number of As, Bs, etc. Many
students with no prior programming experience have been able to
earn an A in this course.
- Focus on the course material, not on your grade. You
will enjoy the course more, find it more rewarding, and most
likely do better. Counting points will not help you get more
points, only distract from the substance.
- We do not provide any additional detail on the grading
procedures beyond this section. We will not predict what grade
you will get in the course, nor tell you what you have to do
to get an A.
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.
- Homework assignments are due at 9pm.
- Assignments submitted within three hours of the original due
date will be counted as on time, however they will not be
eligible for extra credit. This is a grace period, and does
not apply to late days or extensions.
- Homework must be submitted through the online submission
system. All deadlines are automatically enforced. If
your homework is late, you will not be able to submit.
- If you have trouble with the submission system, e-mail your
code to your TAs before the deadline. We will normally
give you an extension to resubmit online once. Submit
your next assignment early and seek help if you still have
problems. (You can always resubmit later on.) We will not
normally give you a second such extension unless you have sought
help resolving the problem.
- You may submit as often as you like. We will grade the
last version of each file that you submit.
- Once you have submitted a file, you do not need to resubmit
it unless it has changed.
- If the deadline is approaching, submit! Remember, it
is much better to submit an incomplete assignment than nothing.
- Deadlines are automatically enforced. Forty-eight (48)
hours after the deadline, the submission link will disappear.
(E.g., if an assignment is due on Thursday at 9pm, the
submission link will disappear Saturday at 9pm). If you
have fewer than two late days remaining, the link will disappear
- You have four late days to use as you wish throughout
the semester. Each late day allows you to submit an assignment
up to 24 hours late. Late days are designed to help you through
an especially busy week, a cold, and other issues that commonly
crop up at some point in the semester. Use them wisely.
- You may use at most two late days on any given
assignment. After two days, you will receive no credit.
- Late days are deducted automatically for late submissions. You
do not need to ask permission or give any reason for using them.
- You may not use late days or the grace period together
with an extension. This rule is enforced by the submission
- Extensions will be granted only in exceptional verifiable
circumstances (e.g., extended, serious illness). It
is your responsibility to provide documentation.
- Extensions are valid only if entered into the system
and are visible when you view your grades or submit online. If
your extension does not show up with 24 hours, contact the
instructor or TA who granted it to make sure it gets
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:
- Discuss assignments, the readings, and lecture topics with one
- Discuss general solutions to the homeworks
- It is fine to discuss the topics covered in the homeworks,
to discuss approaches to problems, and to sketch out general
solutions. However, you MUST write up the homework
answers, solutions, and programs individually without sharing
specific solutions, program code, etc.
- If you made any notes or worked out something on a white
board or paper with another person while you were discussing
the homework, you shouldn't use those notes while writing up
- Explain the meaning of error messages to each other, as long
as you don't look at any other student's code
- Work on examples related to assignments, including coding
- Sharing test cases and input data that you create, except
when creating these is part of the assignment itself
You must not:
- Share your code with anyone, electronically or on paper, even
after you are no longer in the course
- Copy anyone else's code, either electronically or by typing it
- Look at anyone else's code, electronically or on paper, even
if they are not currently in the course
- Post your code anywhere that is publicly accessible, such as
GitHub (making your code widely available, even unintentionally,
is a very serious violation of the course policy)
- Allow anyone else to copy a file of yours, either explicitly
or by leaving your code unprotected
- Have someone else debug your code, except members of the
- Use or consult code found on the internet for any of your
Use your best judgment.
- Protect both yourself and others. In cases of unwarranted
collaboration, all participating parties are typically penalized
(both helpers and helpees).
- Do not put a copy of your code on a friend's or roommate's
computer, even temporarily and even if you absolutely trust
- Do not access your code via a web browser or online service
such as DropBox from anyone else's computer. If you are not able
to work on your own computer or on a lab computer, keep your
code on a USB key. The temptation of code left in the
browser cache or recycle bin has gotten the better of more than
- 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 procedure that will be more
punishment than you deserve! You will also have the burden of
demonstrating that your code was stolen.
- 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 may not ask
another student to tell you their algorithm.
Naturally, the course also follows the standard Penn
integrity code, so make sure that you are familiar with this
As a final note, we will periodically run cheat-checking
software to detect copying from other students or from the
- These programs are remarkably good at detecting plagiarism;
changing variable names and simple code rearrangements don't
- Modifying an existing program to defeat a cheat checker is
just as hard as writing your own program from scratch.
If you have any questions or doubts as to what types of
collaborations are allowed, please ask the instructor or your