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.
|2110-201||Tu 12:20PM||Bard 140||Dash Brown|
|2110-207||Tu 12:20PM||Hollister 368||Eric Campbell|
|2110-213||Tu 12:20PM||Olin 216||Matt Weidman|
|2110-216||Tu 12:20PM||Upson 216||Alison Molchadsky|
|2110-202||Tu 1:25PM||Hollister 206||Devin Lehmacher|
|2110-208||Tu 1:25PM||Hollister 312||Adam Gleisner, Kyler Ruvane|
|2110-203||Tu 2:30PM||Hollister 110||Jason Liu|
|2110-214||Tu 2:30PM||Olin 165||Eamon Woods|
|2110-209||Tu 3:35PM||Bard 140||Tony Zhang|
|2110-204||We 12:20PM||Bard 140||Akash Peri|
|2110-210||We 12:20PM||Olin 218||Ramya Babu|
|2110-205||We 1:25PM||Bard 140||Monica Ong|
|2110-211||We 1:25PM||Upson 216||Natasha Armbrust, Yudi Wang|
|2110-206||We 2:30PM||Bard 140||Jerry Qu, Rohit Khanwani|
|2110-215||We 2:30PM||Phillips 407||Chris Sciavolino|
|2110-212||We 7:30PM||Upson 142||Susan Zou, Stephanie Sinwell|
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:
- the Java programming language
- concepts in modern programming languages, including classes, objects, inheritance, recursion, and generic programming;
- strategies and principles for developing programs
- data structures, such as lists, stacks, queues, trees, hash tables, graphs, and collections;
- how to produce correct, well-structured, readable, and maintainable programs.
- the ideas underlying "types" as used in modern programming languages.
- a bit about Java's flaws and limitations. No language is perfect. You will also learn about the powerful features and the issues associated with Eclipse, the interactive development environment (IDE) we use.
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.
|NAME & INFO||OFFICE HOURS|
|Office hours are 4:30-6:30pm on Wednesday and appointment.
If a conflict arises, she will post a note on Piazza.
She is generally in her office most afternoons, so feel free to drop by with quick questions or just to say hi.
460 Gates Hall
|Gries's office hours are Thurs 9-9:45 and 1:00-2:15pm and
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.
|Adrian’s office hours are Tuesday 11am–noon and Wednesday 1:15pm–2:15pm in Gates 411A and by appointment (via an instructors-only Piazza post).|
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.
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.
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|
401 Gates Hall
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 & 408 Rodes Hall. 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.
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.
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.
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.
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.
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:
- You can't get questions answered easily and quickly.
- You don't have time to mull things over.
- The consultant room is filled with too many students and the consultants are overwhelmed (this is a REAL problem).
- 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 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.
"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.
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.
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.