Frequently Asked Questions

[Will there be recitations this week?] The first recitation sections will start on Monday January 21, which means that for some students, the first recitation will actually occur before the first lecture.  You should attend the recitation of your choice every week, starting with the first week.

[Which code should I register under?] Engineering undergraduates should register under the ENGRD codes, and Arts students under the COMS codes. Requirements and grading are identical, but if you mess this up, you don't get the proper college credit.  The main issue is that engineering students need a certain number of ENGRD credits, and if you register under the main CS2110 code, the Engineering registrar won't realize you've satisfied the requirement.  Use Add/Drop to fix mistakes.

[Everyone else will know Java and I don't.  Is taking CS2110 a mistake?]  Actually, 60% of students either don't know Java, or only have minimal prior experience in Java.  Everyone does know some programming language and everyone has seen object oriented features somewhere, but we're not expecting more than that.  We'll teach you Java and Java's version of object oriented computing in the first weeks of class.

[I'm joining late.  How can I catch up?]  We don't have any special way to help people who join late.  But please meet with one of our TAs to understand what you've missed.  You need to really buckle down to get into sync with the main class as quickly as possible if you join late, so expect to be working very hard for a few days!

[Do I really need the textbook?] Yes and No. Obviously, you need access to a copy, but you can share or use a copy from the ones we put on reserve in the Engineering library (you won't be able to check those out, of course). We won't use the book very heavily and I think one copy for as many as 5 or 10 people will work out just fine. So get your roommates to take cs2110 too, and save big bucks! Used textbooks are fine but get the correct edition, if you can.  We're working with Edition 3 and will use that for any page or section references in the recommended readings.  Edition 2 is actually very similar, but Edition 1 is very outdated now.

[What is an eBook and do I need it? ]  If you purchase a new copy, you also get access to a free eBook version.  This is probably useful, but in fact we don't care if you have the eBook or not.

[Do you really care if I use Eclipse or not?] Yes.  Please use Eclipse.

[So, where can I find Eclipse?] Follow the download instructions on the resources page on our web site.

[Should I install Java if my machine already has some version of Java on it?] We explain how to decide in the the download instructions on the resources page on our web site.  Basically, you need Java version 7 (also called 1.7).  Earlier versions might lack features we use in class, or be unstable.

[Do I really need to come to class?] Yes. We have surprise quizzes in class every week or two and they count towards your grade. Most people who ask this question are trying to take two classes scheduled at the same time. Cornell doesn't allow you to do that, so please don't. We often cover things in class that you won't find in the book and we sometimes depart from the material on the posted slides from lecture. Exams reflect what we covered in class and in recitation, not the book or any other material you could use for a self-taught approach...

[I'm taking another class that conflicts with the CS2110 lecture times] You aren't allowed to do that and we, at least, aren't going to help in this situation!

[Why can't I just watch the video-notes?]  Those are from Fall 2010 and things have changed.  At least five lectures are totally new and three others are substantially different.   So yes, the 2010  videotaped lectures are a useful resource and we recommend using them if you miss a lecture, but if you were to get addicted to sleeping late and using videonotes, you would probably have some nasty surprises, plus you would miss those in-class quizzes mentioned above.

[Do I really need to attend a recitation?] Yes, although we don't care which one and you can sign up for one and then attend some other section. But you do need to sign up and we do use a recitation grade as part of your class grade.

[I think I'm in trouble in this class, what can I do?] This does happen.  Even the best students get overwhelmed or sick or have to deal with personal issues, and every semester there are some who fall behind.  Our TAs and consultants can help you catch up.  Or come see Professor Birman or Professor Gries and we'll work out a plan.  Don't panic, but don't keep these things secret... we won't ask how you got into this situation, and we can often help you figure out a way out of it.

[I've become aware of people who are cheating and this has me angry.] You can always talk to us confidentially about your concerns.  But if you aren't comfortable doing that, it may help to realie that cheating isn't possible on exams.  People who don't do the assignments rarely do well on exams. 

[My exam was graded incorrectly.] Don't modify or change your exam in any way.  Write down an explanation for the regrade request on a separate piece of paper ("added up incorrectly", or "the grader is just wrong; my solution to problem 4 is nearly identical to the sample solution", etc) and hand the exam in to Amy Finch (Upson room 4120) for a regrade.  You can also request regrades via CMS. 

[What is CS2111?]  When we realized that almost 60% of the class either has no prior Java experience or was expressing real worries about the class, we decided to add an extra "enrichment" course for those who could use just a bit more help.  The main lectures do go fairly quickly.  So CS2111 is a one-credit S/U course, taught by Professor Gries, that revisits key ideas from the main class in a more systematic (and slightly slower) way.  The idea is to help you really internalize and understand those foundational ideas.  CS2111 involves one extra lecture per week, on Tuesdays.  It is optional, and you still would need to attend the main CS2110 lectures and recitations.

[Can my roommate do my coding for me?] No, that's a great way to get an F in CS2110 and to get both you and your roommate into hot water.

[Can I base my solution for the spring 2013 assignment on my friend's solution to the fall 2010 version?] No, the assignments differ. But we also check. We would consider that an integrity violation.

[How about code I find on the web?  Can I use code from the we?]  You can copy code from the Java.Oracle.Com site and for some things, like reading files or doing a GUI, we actually recommend doing that.  But you can't get other people to solve things for you, and shouldn't copy code from other sources.  Every line you write should be your own (or joint with your teammate if you have one for A2-A4), or from the official Java site at

[I took CS in high school. Should I skip to cs3110?] Usually the answer to this is a firm "no". Even people with a 5 on the CS AP exam seem to lack a lot of the more theoretical material we cover. Apparently most high school classes are a bit too focused on coding and not focused enough on the ideas behind the code, and on algorithm design and analysis. So definitely skip cs111x if you arrive at Cornell with a good high school background, but don't skip into cs3110 unless some very unusual situation applies (for example you live in Boston and took the equivalent class to cs2110 at Harvard). In those extreme situations, see Professor Birman and then Professor Joachims for permission to take cs3110. We don't give that permission very often.

[I took CS in high school but I'm terrified. Should I take cs111x as a kind of refresher?] Base this on your CS AP exam score. With a 4 or 5 I would skip into cs2110. With a 1, 2 or 3 you might consider taking cs111x first.  If you belong in CS2110 but are still scared, sign up for CS2111 too.

[Don't I need to learn Matlab? If I skip cs111x how will I catch up?] Engineering undergrads who skip cs111x should take the 1-credit self-paced online transition to Matlab course to gain proficiency with that system. You don't need to know Java for CS2110.