Course Information


Time and Location

Lectures (required)

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

Recitation Sections

Day Time Room TA

About this Course

CS 2110 (fcross-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 and complexity analysis, recursion, and commonly used data structures and abstract data types. Java is the principal programming language.  The course syllabus can easily be extracted by looking at the link to lectures.

Please note that Professor Birman may change some of the slide sets prior to class; the versions posted as of now are from Fall 2010 and many are missing because we're revising or completely redoing about 1/3 of the lectures.  An old set of video-notes of the lectures is available here.  Obviously, these will only cover the 2/3s or so of the lectures that won't have changed drastically, but they should still be useful.  We don't have any plans to re-do the video-notes this semester.

To take CS2110, you must have a working knowledge of basic programming (but in any language at all) and some exposure to object oriented programming, but not necessarily to Java -- about 60% of students either won't have seen Java prior to taking this course, or have seen it but have very little experience with the language.  So if you feel nervous you are in the majority!  The official prerequisities are CS 1110 or CS 1130 or equivalent background.

In CS 2110, you will learn about:

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

Note: We are offering an 1-credit enrichment course CS 2111, and encourage anyone who is unusually nervous about Java or object orientation to consider taking it.  In fact 60% of students who enter CS2110 are nervous, so you are in good company, but CS2111 offers a bit of extra help for those who could use a little help, in a single hour per week, S/U.



Ken Birman Ken Birman
4119B Upson
Ken's official office hours are Tuesday, Wednesday and Thursday 1:15-2:15 or by appointment (email Amy Finch:  In addition, he tries to be available after class on Tuesday and Thursday (11:15am to noon).

 Sometimes Cornell has visitors or there are meetings that he has to attend.  If these would conflict with his scheduled office hours, he posted on Piazza and cancels his normal hours.

It never hurts to double check before walking to Upson. You can always email to, or call (607)255-9199, to confirm that he'll be there. You can also make appointments for other times outside of these three periods.

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.

Office hours by appointment only during study period and finals


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.

Amy Finch Seely Amy Finch ( [NOTE: please contact the TAs and NOT Amy for CMS add/drop issues]
4120 Upson


In addition to TAs, there are a number of consultants. These are are undergraduates who have excelled in their coursework and are employed as graders and tutors. Consultants hold office hours in 360, and are always happy to help with Java and Eclipse issues. See the consultant schedule. Policies

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, we let you start our cs2110 prelim early so that you finish in time to get to your other exam.  Have your other instructor agree to let you start a few minutes late.  This way you'll have a half hour to unwind between finishing our's and starting the other one.  If someone needs to take the early version of our exam for some other reason, we're usually flexible about it. To ensure that academic integrity is respected, we won't let people leave our early exam session until people are in the room and seated for the second session.

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 your coach, or perhaps 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 while interviewing at Microsoft or Google or 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.

You may receive bonus points for exceptionally nice work on assignments, and some assignments have extra credit options. Bonus points do not count in the computation of your score on that assignment, but are accumulated separately in a single bonus score for the semester.

Late Penalty

If an assignment is handed in late, we deduct 5 points per day late.  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 the head TA feels that extra time is needed for some reason.  We do program a very short grace period into CMS.  It works best not to try and upload your solution in the 30 seconds before the deadline (if CMS is very busy and having problems, it could think you were late).  CMS does let you revise an uploaded assignment but the time that counts is the time when the final upload occured.


Your final numerical score will be a weighted combination of your scores for all required course work. Here's how we compute the score, but there are some complications this won't capture.  First, if we don't actually do 4 quizzes, we weight the ones we did do accordingly to get the right number of points.  Second, we drop the low assignment score, but only if you turned in all five assignments.  Exceptions are made for people who joined the course too late to turn in A1, and got our permission to not do that one.  An unexcused missing assignment is averaged in as a zero.

A1 A2 A3 A4 A5 Q P1 P2 F E
9 9 9 9 9 4 15 15 20 1

"EVAL" is the University course evaluation. We get a list of people who fill it out, but the university keeps your responses anonymous. We reserve the right to change the relative weights or to add an adjustment value to all the scores on a prelim (for example, if the mean comes out way too low, or way too high).

Bonus and extra credit points are added into the assignment score.  So for example, suppose that you got 85,79, 92, 97 and 100 on A1 to A5, and along the way you earned 11 extra credit/bonus points.  We drop the 79, sum up the 85 through 100, add in the 11, and then multiply by 45/400.  We cap this at 45.  And that gives us the assignment part of your "score".  Notice that the extra credit/bonus points for A2 (if there were any) counted even if we dropped A2 because it was your lowest assignment score.

Grade Computation

We will determine your letter grade for the course using your final numerical score and predetermined grade cutoffs as given in the following table. These are numerical scores that will guarantee you at least a certain letter grade, regardless of how the rest of the class performs.  As you will see, the course isn't curved in an overt way, but your score ranking (the "curve") does enter our thinking at several steps.

We may choose to lower the cutoffs based on the overall class performance on all course work, but we normally won't raise them.  So, for example, if you compute your own score and it works out to 70.001, you are certain to get at least a B- in the course.  If we decided that we need to adjust the scores on a prelim, we'll say so when we grade that exam. 

90 A-, A or A+
80 B-, B or B+
70 C-, C or C+
50 D-, D or D+

Within the score ranges, we assign a "+" to the top third, and a "-" to the bottom third in each group. 


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 of getting help and interacting with the course staff. 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, 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 carefully.