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.