CS 2110 (cross-listed as ENGRD 2100) is an intermediate-level programming course and an introduction to computer science. Topics include program design and development, debugging and testing, object-oriented programming, proofs of correctness, complexity analysis, recursion, commonly used data structures, trees, graph algorithms, and abstract data types. Java is the principal programming language.
A complete listing of topics, lecture-by-lecture, appears on the main course page.
In CS 2110, you will learn about:
The official prerequisites are CS 1110 or CS 1112 or equivalent background. This means that you must have a working knowledge of basic programming in some programming language, but not necessarily Java. About 70% of students have not seen Java prior to taking this course, so, if your lack of knowledge of Java makes you nervous, you are in the majority! No need to be nervous.
Summer courses are great! We'll have a small class, so interaction is highly encouraged. I'll try to get to know you all. It's also nice because you probably have fewer things to focus on than during the semester.
However, keep in mind that summer courses are particularly intense; we will cover the same material in six weeks that is typically covered in 14. It is very important that you keep up with the material and with the problem sets.
It is very difficult to catch up if you fall behind. You should come talk to me as soon as possible if you're feeling lost or getting behind.
There will be a lot of homework. During the normal semester, a 3 credit course expects 6 hours of work per week outside of lecture; with the compressed shedule I will aim for ~14. There is also natural variability around this average, so you may find you need to spend more on some weeks. Make sure that you are prepared to put in the work.
This is also the first college course for some of the students in the class. This can be a culture shock, both because of the differences between high school and college, and because of the diversity of cultures and opinions at Cornell. I expect everyone to treat each other with respect, and I encourage you to develop friendships with your summer colleagues.
During the Spring and Fall offerings of this course, there are mandatory weekly Recitation sections. We do not have these in the summer, but they are an important part of the class.
We will have Tuesday and Thursday discussion sessions that you are strongly encouraged to attend. These will give you an opportunity to work with other students on the discussion worksheets, which will be due twice weekly.
Lecture notes and office hours are on the course website.
We will be using Piazza for all course announcements. Please enroll yourself.
We will be using CMS for assignment submissions and grades.
The primary reference will be the lecture notes, posted on the main course website after each lecture.
We will also reference online "Java HyperText", also linked from the main course website.
If you prefer a printed text, "Thinking in Java", 3rd edition is a good resource that has been used in the past for this course.
Note: I am adapting the Spring course structure to the six-week summer structure; I will continue to adapt if I feel things aren't working well. Therefore, everything in this section is subject to change.
Your course grade will be based on the following:
Weekly programming assignments, due Monday at 5PM. These will be graded for correctness as well as for software engineering good practice (documentation, submitted tests, etc.) You will be working with a partner for these projects. This is where I expect you to invest most of your time.
Twice-weekly discussion worksheets, due Wednesday and Friday at 5PM. These are intended to cover additional material not covered in lecture. They are expected to take an hour or so, and if you make a good effort you should get most of the credit.
Short, weekly in-class quizzes, every Friday. These are intended to be low-stress; we want to make sure you're keeping up with the material.
A final exam, Tuesday 8/6 at 8:30am.
Additional factors, such as completing surveys or course evaluations.
We follow Cornell's university-level policy when issues that fall under that policy arise. This covers a wide range of special situations including disabilities, health or family crises, etc.
As a practical matter, this sometimes means we need to excuse you from a particular exam, give you a bit of extra time on an exam or an assignment, or work out a way for you to take the exam remotely.
Please talk to Professor George as soon as possible if you have special circumstances needing accomodation.
Academic integrity is important for two reasons. The first is that the course is designed to help you learn the material. If you don't do the work you won't learn the material. The second is that we grade you; this would be meaningless if the work we grade is not yours.
The utmost level of academic integrity is expected of all students. Please read the following webages carefully:
In short, all submitted work should be your own, and you are forbidden from duplicating any course materials (including course notes) for distribution.