Course Information

Time and Location

Lectures (required)

TR 10:10AM - 11:00AM Statler Auditorium

Recitation Sections

On 26 August, 407 students were pre-enrolled. The number of students in each section is taken from facultycenter (studentcenter). If more than one section exists at the same time, please change your section to even out the numbers.

section Time Room Instructor #
2110-201 Tu 12:20PM Phillips 219 Alex Fusco 48
2110-207 Tu 12:20PM Olin 245 Eric Chahin 36
2110-213 Tu 12:20PM Hollister 306 Aiswarya Jami 3
2110-202 Tu 1:25PM Olin 245 Eric Perdew 46
2110-208 Tu 1:25PM Olin 218 Leon Zaruvinksy 14
2110-203 Tu 2:30PM Phillips 219 Alexandra Anderson 28
2110-214 Tu 2:30PM Hollister 306 Chang Jiao 5
2110-209 Tu 3:35PM Bard 140 Michael Patashnik 27
2110-204 We 12:20PM Phillips 219 Aaron Nelson and Iryna Ivasyk 47
2110-210 We 12:20PM Olin 218 Rebecca Stambler 23
2110-205 We 1:25PM Olin 218 Xilun Chen 46
2110-211 We 1:25PM Hollister 306 Heath Guo and Kwang Woo 23
2110-206 We 2:30PM Phillips 101 Michael Jalkio and Alexander Miller 48
2110-212 We 7:30PM Olin 218 Danning Yao 13

















About this Course

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, graph algorithms, and abstract data types. Java is the principal programming language. The course syllabus can easily be extracted by looking at the link to lectures. Here are the expected course outcomes:

Outcome 1: Be fluent in the use of recursion and object-oriented programming concepts (e.g. classes, objects, inheritance, and interfaces).

Outcome 2: Be able to design and implement nontrivial Java programs (roughly 1000 lines of code), starting from an English language specification.

Outcome 3: Be able to design graphical user interfaces (GUIs) in Java.

Outcome 4: Understand asymptotic complexity of algorithms and be able to analyze programs to determine their running times.

Outcome 5: Understand basic data structures.

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 60% 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!

A complete listing of topics, lecture-by-lecture, appears on the lecture notes page.

Each lecture will be best appreciated if you download the ppt slides the day before the lecture and spend a few minutes going over them; then, during the lecture, have them available to look at, either in paper form or on your laptop or tablet.

In CS 2110, you will learn about:

Note: CS offers a 1-credit enrichment course CS 2111. We encourage anyone who is unusually nervous about Java or object orientation take it. In the single weekly hour, you will see us talk about the material from different perspectives, reviews of material, more elaboration of assignments, and preparation for the tests. You will have a chance to ask more questions. The course is S/U and requires no homework.



Doug James Doug James
311 Gates Hall
Doug's office hours are Friday 1:00-3:00pm, or by appointment.
David Gries David Gries
460 Gates Hall
David's office hours are Wed 11:00-12:00pm, Thurs 1:00-2:00pm, or by appointment (email Gries).
If in his office, he generally can speak to anyone who drops in.
He is generally not in on Mon and Fri.

If a conflict arises, he posts a notice on Piazza and cancels his normal hours.

It never hurts to double check before walking to Gates. You can always email or call James or Gries to confirm they are in their office.

Teaching Assistants

The TAs mainly teach recitation sections and assist with homework and exams. All TAs hold office hours, and we encourage you to attend them if you have difficulties. Here is the link to the table of office hours.

During the study period and finals, office hours are by appointment only.

Course Administrator (CA)

The CA provides clerical and logistical support for the course. Please notify the CA of any errors or discrepancies in the website.

  Megan Gatch [NOTE: please contact the TAs and NOT Megan for CMS add/drop issues]
437 Gates Hall


CS2110 has 30-40 consultants: undergraduates who have excelled in their coursework and are employed as tutors and graders. Consultants hold office hours in Upson 360. They are always happy to help with Java and Eclipse issues. See the consultant schedule.


Makeup Exams (sorry, not possible)

We don't offer makeup exams in cs2110. There are too many reasons for this to list them, but the main reason is that we work hard to create these exams and creating two of them isn't practical. Also, no two exams are of identical difficulty.

Instead, if you have two exams the same evening, you may take the cs2110 prelim at 5:30pm so that you finish in time to get to your other exam. You will have a half hour to unwind between finishing ours and starting the other one. If someone needs to take the early version of our exam for some other reason, we are usually flexible about it. We DO make the 5:30 and 7:30 exams sufficiently different that trying to cheat doesn't make sense. Those taking the 5:30 exam are not allowed to talk to anyone who is taking taking the 7:30 exam until both exams are finished.

If you miss an exam, and we gave you permission to do so, we modify the grading formula to compute your grade with just the two other exams. If you miss an exam and we didn't excuse you, that can be a bit sticky: we would average in a zero for the missing score. So please put dates and times of the exams into your calendar reminder system! Ask us for permission, don't just skip exams and assume you can patch things up later.

Special Situations

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.

In any semester we have a few students who need to schedule job interviews, attend professional conferences, or participate in off-campus sports events. We solve this by by having someone at the company, or perhaps the coach or a professor travelling with you or someone from the hotel or conference staff, agree to receive the exam, administer it at roughly the same time that everyone else takes the exam, and then send it back to us. That is, rather than have you miss an exam, if feasible we prefer for you to take it wherever you happen to find yourself. This happens all the time. It won't harm your interview to explain the situation to the company and ask them for a little help on this. If you do the exam in your hotel, the company won't even need to know you took an exam that day.

You need to talk to us about this in advance and should try and it helps if you've already identified the person who can administer the exam. They won't need to watch you minute by minute, but will need to have some way to see that you aren't using your computer, phone, notes or textbook. For example, you might take the exam in the hotel "business center", which is usually somewhere near the front desk and gives them a chance to keep one eye on you. We really do try to have the exam occur during the same period that students will be taking it in Ithaca, so factor time zones in when you work out a proposed plan. If you are out of town due to a family emergency, we'll consider having a family member receive the exam and send it back.


All assignments and exams receive scores out of 100 points. Your grader's comments will be posted on CMS. The grading guide will be posted as well, so you can see why points were deducted.

Submission of assignments and the lateness penalty

An assignment may be submitted more than once on the CMS. All submissions are kept, but we grade only the latest one. Try to submit well before the 11:59PM deadline. The closer to that time, the more students are submitting, the higher he chance that the CMS will be overloaded and break down or not handle your submission properly. That is your problem. We do program a grace period of an hour or two into the submission time.

The lateness penalty for assignments is 3 points the first day, 4 the second, and 5 each day thereafter. Eventually we lock down CMS, and you can't hand the assignment in at all. Normally, this occurs after 4 days, but we may make an exception if extra time is needed for some reason. We do program a very short grace period into CMS.

     Caculating grades

If everyone does A work in the course, everyone will get an A. We do not formally "curve" the course ---giving a certain grade to those a standard deviation below the mean and so forth.

Generally, however, not everyone gets an A. The average course grade has over the years has been B.

To determine letter grades for the course, we calculate a total weighted score based on all the components of the course as shown in the table below. We may change the weights in the table as the semester progresses, as we give fewer or more assignments, fewer quizzes, etc.

A1 A2 A3 A4 A5 A6 Q P1 P2 F E
6-10 6-10 6-10 6-10 6-10 6-10 0-4 15 15 30 1

"EVAL" is the online universitycourse evaluation. We get a list of people who complete it. We don't see the actual course evaluations until we have turned in grades, and of course those evaluations are anonymous --your names are ot attached to them.

Having calculated a weighted total, we look at all the weighted totals and determine cutoff points for the letter grades. We then look at each individual student and see whether an adjustment is appropriate. We base this based on many factors ---e.g. personal issues or illness just before an exam that may have contributed to a low score, substantial reasons for lateness on an assignment.

Also if a student's grades are very low in the beginning but rise steadily, showing a big change by the end of the semester, we may raise the student's letter grade. The change can go the other way as well; if a student starts out strong but shows a steady decline and ends with a final that shows little comprehension of the material, that student does not get the "benefit of the doubt".

Please note that getting an A in the course requires getting an A (or close to it) on all components of the course, including the exams. Here is a problem that occurs in a course like this, with so many students.

Grades on the assignments are usually high --averaging over 95. This is because everyone has the chance to talk to the course staff (instructors, TAs, consultants) and get help with understanding, programming, and debugging. Thus, the submitted program may be okay --but is it entirely the result of a student's effort? The assignment are a great tool for learning about programming and the material in the course, but they are not always a good tool for determining grades.

To make sure you have some idea of your standing in the class, we will tell you approximate letter grades for the prelims (after they have been graded). If your approximate letter grades on the prelims are B and B, your tentative letter grade thus far (see below, under "Optional final") is likely to be B+ at best, even though you get 95-100 on all the assignments.

Optional final

We expect the final to be optional --half way through the semester, we will make the final decision on this. It works this way: After all assignments are graded, we compute a tentative letter grade based on the approach described above, but lacking the final (so the prelims are weighted more heavily. Once the tentative letter grades are known, will student can go on the course CMS and either accept the grade or indicate that they will take the final.

Taking the final can raise the letter grade or lower it ---the latter does happen in a few cases. Once you enter the room to take the final, you may not change your mind and not take it.

In our experience, between 60 to 70% of the student accept the tentative letter grade and don't take the final.

Why don't assignments count more heavily?

Some students feel they do much better on programming assignments than on exams and wonder why the assignments are not more heavily weighted.

There are two points to consider. First, you can get a lot of help on the assignments ---talking to instructors, TAs, and consultants. You can get help on understanding the assignment, on understanding Java constructs and how to develop the program, on testing, on debugging, etc. The assignment turns out to be a great learning experience. But is it a good vehicle to test your programming ability? Probably not, if you get a lot of help. Thus, we see the assignments as helping mainly with learning. And for that purpose, we often grade less harshly while providing good feedback, so that you also learn from our feedback.

The second point is that proficiency on the assignments, especially the ability to work at this level individually without a lot of help, prepares you extremely well for the exams, which have some programming questions and puzzles that relate to computational ways of thinking, object-oriented computing, and data structures. So the hard work done on homework will pay off on higher exam grades. A student who never really masters the material may get enough help to do well on the homeworks but will probably not do as well on the exams. Thus your exam scores do shape the letter grades more than the homework does, but the homework still plays a vital role.

If you feel you do poorly on exams, then we suggest practicing early on exam questions from previous semesters --many are on the exam page of this website.


Piazza hosts a public forum that we use for discussing questions about the assignments. The course staff monitors this group regularly, so this is a great way to get help and interact with the course staf and other studentsf. An extra advantage of using the group is that everyone else can benefit from your question as well. Anyone can visit the group and read previous questions here .

If you know the answer to a question, feel free to post a reply yourself, and you can edit another student's post if you think there is an error in it. But please avoid giving away any hints on the homework or posting any part of a solution. This will be considered a violation of Academic Integrity. Generally, rough algorithms or non-solution-specific code fragments are OK if you need them to illustrate a point.

 Academic Integrity

The utmost level of academic integrity is expected of all students. Please read the following webages carefully. The second one is a great resource for both students and faculty, looking at Academic Integrity from all viewpoints and answering many questions about procedures.