Course homepage (Summer 2024)

Welcome to the homepage for Cornell’s intermediate-level course on computer programming and software design. The majority of materials used in the course will be available on this publicly-accessible website.

See Cornell’s class roster for official meeting times and locations. Lectures will be delivered exclusively in person.


We assume that all students in the class have prior programming experience with a general-purpose procedural language (e.g. Python, Java, …). Suitable courses offered by Cornell include CS 1110 and CS 1112. Credit for CS 1110 is also offered to students who scored a 5 on the “Computer Science A” AP exam, passed the CASE exam during orientation, or took an equivalent course at another university. If you are not familiar with recursion or reference semantics (i.e. objects), then your prior experience is likely insufficient, and we recommend taking one of Cornell’s introductory offerings.

The language used in this course is Java. Knowledge of Java is not a prerequisite, but we do assume that you will be able to adapt your knowledge of other languages to this setting quickly. CS 2110 focuses on generalizable design principles, algorithms, and data structures, not on the syntax and quirks of a particular language, so be prepared to do additional reading and practice at the outset if the language is new to you.

Related courses

CS 2110 is cross-listed as ENGRD 2110. These are the exact same course (same lecture); it makes no difference which one you enroll in. The ENGRD label means this course can count towards the engineering distribution requirement for students in the College of Engineering (if taken for a letter grade). Whenever course staff or materials refer to “CS 2110”, they also apply to “ENGRD 2110”.

An honors course on object-oriented programming and data structures is also usually offered in the fall semester as CS 2112. That course covers topics in more depth, and its assignments entail writing significantly more code.

For the purposes of affiliating with the CS major, an alternative to CS 2110/2112 is ECE 2400: Computer Systems Programming, which uses C++ instead of Java.

CS 2110 is a prerequisite for most other courses offered by the Computer Science department (see prerequisite structure chart).

Key dates

June 24
First lecture
August 2
Last lecture
August 6
Tentative final exam


Portrait of Ayaka Yorihiro

Ayaka Yorihiro

5th year PhD Candidate, Computer Science

This course adapts material from Sowmya Dharanipragada, Alexa VanHattum, Curran Muhlberger, David Gries, Michael Clarkson, Anne Bracy, Adrian Sampson, and from previous offerings of this course.