Course Information

Time and Location

Lectures (required)

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

Recitation Sections

On 22 January, 597 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, consider changing your section to even out the numbers.

section Time Room Instructor #
2110-201 Tu 12:20PM Hollister 206 Michael Patashnik 35
2110-206 Tu 12:20PM Phillips 407 Karl-Frederik Maurrasse 33
2110-213 Tu 12:20PM Phillips 403 Luke Mehringer 33
2110-220 Tu 12:20PM Phillips 307 Matthew Weidman 26
 
2110-202 Tu 1:25PM Phillips 407 David Cho, Alexander Zhang 39
2110-207 Tu 1:25PM Upson 111 Jingsi Zhu 36
2110-214 Tu 1:25PM Phillips 403 Jason Weinberg 18
 
2110-203 Tu 2:30PM Phillips 407 Steven Lam 39
2110-215 Tu 2:30PM Hollister 306 Wenhui Feng 8
 
2110-211 Tu 3:35PM Phillips 407 Marc Berenger 39
2110-219 Tu 3:35PM Upson B17 Elizabeth VanDenburgh, Kelly Yu 10
 
2110-204 We 12:20PM Phillips 403 Dan Sedra 40
2110-208 We 12:20PM Phillips 307 Vidit Bhargava 40
2110-216 We 12:20PM Upson 111 Dashiell Brown 22
 
2110-205 We 1:25PM Phillips 403 Amy Wey, Abigail Shchur 40
2110-209 We 1:25PM Hollister 320 Ryan Pindulic 39
2110-217 We 1:25PM Hollister 401 Sarah Forcier, Yiting Wang 17
 
2110-210 We 2:30PM Hollister 206 Danlu (Athena) Huang 40
2110-218 We 2:30PM Hollister 401 Andrew Matsumoto, Yujin Koh 23
 
2110-212 We 7:30PM Upson 111 Ronald Ho, Sung Won An 19

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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.

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.

 

Instructors

NAME & INFO OFFICE HOURS
Ross Tate
ret87@cornell.edu
434 Gates Hall

David Gries David Gries
djg17@cornell.edu
255-2998
460 Gates Hall
Gries's office hours are Thurs 1:00-3: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.

NAME & INFO
  Megan Gatch [NOTE: please contact Megan for CMS add/drop issues
mlg34@cornell.edu
255-3313
437 Gates Hall

Consultants

CS2110 has about 20 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.

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

Grading

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, feer quizzes, etc.

ASSIGNMENTS
(~35-40%)
QUIZZES
(~0-2%)
EXAMS
(60%)
A0 A1 A2 A3 A4 A5 A6 A7 A8 Q P1 P2 F
1 5..9 5..9 5..9 5..9 5..9 3..5 3..5 5..7 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 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 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

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.