Frequently Asked Questions

[Which code should I register under?] Engineering undergrads should register under the ENGRD codes; other students under the CS codes. Requirements and grading are identical, but if you mess this up, you will have some trouble getting 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 may not 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?] 60–70% of the students either don't know Java or have only minimal prior experience in Java. Everyone does know some programming language. We'll teach you Java and Java's version of object-oriented computing.

[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. Buckle down to get into sync with the main class as quickly as possible if you join late, so expect to work hard for a few days! You can see lectures from previous versions of the course on

[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 heavily. 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 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. It may be useful, but 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 for all programming assignments. You should use version 8; it is required on some of our assignments.

[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 8 (also called 1.8). Earlier versions might lack features we use in class or be unstable.

[Do I really need to come to class?] Yes. We may have surprise quizzes in class everyonce in a while, and they count toward your grade. Most people who ask this question are trying to take two classes scheduled at the same time. Cornell doesn't allow that, so please don't do it. 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 lecture and 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 are not allowed to do that. If we find out that you are doing it, we will require you to drop one of the classes.

[Why can't I just watch the video-notes?] Those are from Fall 2015. 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 possible in-class quizzes mentioned above as well as changes we make in lectures to improve them.

[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 a professor 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. BUT WE CAN HELP ONLY IF YOU COME TALK TO US, and the earlier the better.

[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 realize 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 give the exam to the staff in the handback room (Gates 216).

[What is CS2111?] When we realized that almost 60% of the class had little or no prior Java experience or was expressing real worries about the class, we decided to add an extra "enrichment" course. The main lectures do go fairly quickly. 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 lecture per week, on Tuesdays; it has no homework.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 an assignment on my friend's solution to a similar assignment in a previous version of the course?] No, the assignments differ. But we also check. We consider this an integrity violation.

[How about code I find on the web? Can I use code from the we?] You can copy code from the 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), or from the official Java site at

[I took CS in high school. Should I skip to CS 3110?] 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 a 2110 professor and then the CS 3110 instructor for permission take CS 3110. 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, we would skip into cs2110. With a 1, 2, or 3, consider taking CS 111x first.  If you belong in CS 2110 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 can take the 1-credit self-paced online transition to Matlab course to gain proficiency with that system. You don't need to know Java to take CS2110.