Welcome to the CS2110 Course website

Click on Course Info above to find out more about the course---times and venues, what the course is about, the instructors, and more.

Course description

Fall, spring, summer. 3 credits.

Prerequisite: CS 1110 or CS 1112 or equivalent course on programming in a procedural language.

Intermediate programming in a high-level language and introduction to computer science. Topics include program structure and organization, object-oriented programming (classes, objects, types, sub-typing), graphical user interfaces, algorithm analysis (asymptotic complexity, big O notation), recursion, data structures (lists, trees, stacks, queues, heaps, search trees, hash tables, graphs), graph algorithms. Java is the principal programming language.

Outcome 1: Be fluent in the use of recursion and object-oriented programming concepts (e.g. classes, objects, inheritance, and interfaces).

Outcome 2: Be able to design and implement parts of nontrivial Java programs (roughly 1000 lines of code), starting from an English language specification.

Outcome 3: Understand asymptotic complexity of algorithms and be able to analyze programs to determine their running times.

Outcome 4: Understand basic data structures taught in the course and be able to implement them and use them in programs.

Programming prerequisite for CS 2110

CS 2110 does not require knowledge of or experience with Java. It does not require knowledge of or experience with object-oriented (OO) programming. Over 75% of the students in CS 2110 have no knowledge of Java. They may have seen a little bit of OO in CS 1110 (Python based) or CS1112 (Matlab based), but many students entering CS 211o did not take one of those courses.

So: Rest easy if you don't know Java or OO. Our job is to teach them to you.

CS 2110 does require fluency is some procedural language ---fluency with assignment, if-statements, loops, string manipulation, arrays, two-dimensional arrays, and declarations of functions and procedures as well as calls on them. if you are not fluent, you may find yourself in difficulty. By fluent we mean that you can easily see how to map a computational task to code, implement the code yourself, debug it (including testing it thoroughly), and understand how to use comments to document your logic. But by "some procedural language" we mean any programming language at all that includes these kinds of mechanisms. It definitely doesn't need to be Java.

If you completed Cornell's CS 1110 or CS 1112 with a grade of B- or better you are prepared for CS 2110. If you took one of those courses but had a weaker grade, you will want to sign up for CS 2111, plan to start assignments early, and work hard on your programming skills. If you learned to program elsewhere, that's fine, but make sure you are ready for this course.

It may be helpful to understand exactly what we do expect. At the end of this announcement are examples of the sorts of programs you should be able to easily write. To test yourself, consider launching the editor you used when you learned to program and actually write, test, and debug these little problems. If you find these sample problems difficult, you may want to spend some time this summer practicing programming in your favorite programming language.