Course Information!

Time and Location

Lectures (required)

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

Recitation Sections

The number of students in each section is taken from facultycenter (studentcenter). If more than one section exists at the same time, consider changing your section to even out the numbers.

section Time Room Instructor  
2110-201 Tu 12:20PM Phillips 307 Morena Rong, Yuhuan Qiu  
2110-206 Tu 12:20PM Upson 222 Lucy Lu, Darren Tsai  
2110-213 Tu 12:20PM Hollister 320 Avani Bhargava  
2110-220 Tu 12:20PM Hollister 306 Adam Wojciechowski  
2110-202 Tu 1:25PM Phillips 307 Yicheng Wang  
2110-207 Tu 1:25PM Upson 222 Lucy Lin  
2110-214 Tu 1:25PM Hollister 206 Arshi Bhatnagar  
2110-203 Tu 2:30PM Phillips 307 Ziwei Gu  
2110-215 Tu 2:30PM Hollister 372 Victoria Mao  
2110-211 Tu 3:35PM Upson 222 Eric Wang  
2110-219 Tu 3:35PM Phillips 307 Oren Michaely  
2110-204 We 12:20PM Hollister 306 Michelle Ip  
2110-208 We 12:20PM Phillips 307 Chris Gyurgyik  
2110-216 We 12:20PM Hollister 206 Aditya Shah, Hyun Kyo Jung  
2110-205 We 1:25PM Hollister 306 Arnav Ghosh  
2110-209 We 1:25PM Hollister 206 Himank Yadav  
2110-217 We 1:25PM Hollister 320 Matt Wallingford  
2110-210 We 2:30PM Hollister 306 Edward Li  
2110-218 We 2:30PM Hollister 206 Pranav Darbha, Joshua Ying  
2110-212 We 7:30PM Hollister 401 Michael Xing, Zhelun Zhang  



















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, trees, 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.

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.

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:

CS offers a 1-credit enrichment course CS 2111. We encourage anyone who is unusually nervous about Java or object orientation to 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.



Michael Clarkson Michael Clarkson
461 Gates
Wed 10:30am–noon 
461 Gates
David Gries David Gries
460 Gates Hall
Thu 1:00-3:00
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 an instructor to confirm they are in their office.

Course Administrator (Admin)

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


Lacy Lucas
401 Gates Hall

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.

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


CS2110 has about 23 consultants: undergraduates who have excelled in their coursework and are employed as tutors and graders. Consultants hold office hours in 406 Rodes Hall. They are always happy to help with Java and Eclipse issues. See the consultant schedule.


Makeup Exams (a real exception)

In CS2110, we give prelims twice: at 5:30 and 7:30. If you have a conflict for one of them, you take the other one. 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.

Because we give each prelim twice, we rarely have makeups.

The final is optional. But if you miss a prelim you must take the final.

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.

Work habits in CS2110

Students sometimes study in a course on a weekly or biweekly basis (instead of daily or every other day) and start doing homework a day before it is due. That won't work well in CS2110! For several reasons.

  1. The material taught each lecture is put to use almost immediately. If you don't learn the material each lecture, you won't understand the next lecture.

  2. Programming is learned by doing. It takes regular, steady practice to become fluent. If you play a musical instrument, you know that you have to practice every day or almost every day ---practicing once a week is useless. It's the same thing with programming.

  3. If you start early on a programming assignment, you have time to do it in almost a leisurely, steady, way, giving yourself time to think about and mull over problems and issues. You can easily get help from our consultants. You enjoy it. But if you wait until the last day (or penultimate day) to work on an assignment, the following happens:

    1. You can't get questions answered easily and quickly.
    2. You don't have time to mull things over.
    3. The consultant room is filled with too many students and the consultants are overwhelmed (this is a REAL problem).
    4. You get angry, upset, frustrated. You blame us for not providing more staff help. You make more mistakes because of your state of mind. Consequently, the assignment is not a good, educational experience.

So, for your own sake, do some studying and homework every day, or every other day, rather than once a week or once every two weeks. Learn the material of one lecture before the next lecture. You will find the course so much more relaxed and enjoyable and fruitful.


You can take the course for a letter grade, an S/U grade, or AUDIT.

Check with your advisor or major to make sure it is allowed before signing up for an S/U grade. To get a grade of S, you have to get the equivalent of a letter grade C- or better. We encourage S/U grades because it does lower your stress.

Someone who takes the course for AUDIT does not take exams and don't have to turn in assignments. They are in the course just for the fun of it and do not get a grade.

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.

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.

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 3 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.

If you do an assignment with another person, you must group on the CMS before you submit. Both people must do something: one person invites and the other accepts. Failure to group in a timely fashion incurs a 4-point penalty.

     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.

A0 A1..A8     Q P1 P2 F
1 each between 3 and 6 points 2-4 points total 1 0-2 14 16 30

"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 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. For some assignments, we give a full suite of test cases, so there is little reason for not getting full credit. Thus, the submitted program may be okay --but is it entirely the result of a student's effort?

The assignments are the best tool for learning about programming and the material in the course, but they are not a good tool for determining grades.

To make sure you have some idea of your standing in the class, we may 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

The final is optional. After everything is 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, each student visit 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. Once you enter the room to take the final, you may not change your mind and not take it.

In our experience, between 70 to 80% 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 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 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 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.