Course homepage (Fall 2023)

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 and discussion sections 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, same discussion sections); it makes no difference which one you enroll in. The ENGRD label is a reminder that 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 offered most fall semesters as CS 2112. That course covers topics in more depth, and its assignments entail writing significantly more code. Unfortunately, CS 2112 will not be offered in FA23.

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.

A student-led Academic Excellence Workshop (AEW) is offered as ENGRG 1011 and provides additional practice with the material in a collaborative setting.

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

Key dates

August 22
First lecture and discussion section
September 19
Prelim exam 1
November 14
Prelim exam 2
November 30
Last lecture
December 9
Final exam


Portrait of Curran Muhlberger

Curran Muhlberger

Lecturer, Computer Science