Although the first section below talks about Engineering requirements, most of the material in this document is equally relevant as recommendations to Arts & Sciences students.

The Computing Requirement in Engineering

Four credits of computing are required, which can be covered by any of the courses below.

  1. Introduction to Computing: A Design & Development Perspective (CS 1110), 4 credits, letter grade.
  2. Introduction to Computing: An Engineering & Science Perspective (CS 1112), 4 credits, letter grade.

Which of these courses you take is entirely your choice. Both courses cover the same foundational computing concepts, but approach the subject matter from different perspectives. Short descriptions of each course are given below.

We also offer short courses in Matlab and Python. These short courses *do not* satisfy the College of Engineering computing requirement. 

  1. Short Course in Matlab (CS 1132), 2 credits, pass/fail.
  2. Short Course in Python (CS 1133), 2 credits, pass/fail.

These short courses meet during the first half of the semester for approximately 7 weeks.

Deciding on a First Computing Course

Below, CS 111x refers to one of the 4-credit courses CS 1110 and CS 1112: the two classes take different perspectives, but the basic content, and now the programming language, is the same, and both provide good preparation for further computing-related classes in any discipline. . For your information, brief course descriptions appear below. There is no need to decide until the semester begins and you can enroll via during pre-enroll in July (for newly admitted Cornell students) or during add/drop in August. Note that CS 1112 does have a prerequisite of one semester of calculus, so students without that background should take CS1110.

  1. Generally, engineering students take CS111x and an ENGRI course in different semesters during the first year, but if you have AP credit for CHEM 2090 or PHYS 1112, seriously consider taking both CS111x and an ENGRI course in your first semester.
  2. If you are interested in computer science as a possible major or minor and do not have AP credit for programming, taking CS 111x the first semester is a good idea but is not necessary. The computer science department views either course (CS 1110 and CS 1112) as equally good preparation for the CS major. If one doesn't have a preference between a more design-oriented perspective and a perspective more influenced by scientific or engineering applications, and no scheduling constraints apply, then we advise students to simply pick the class with fewer students enrolled at the time.
  3. If you took an AP-level course in high school in Java and received 5 on the Computer Science A exam or perform sufficiently well on the placement exam Cornell offers to entering students during orientation, you will be offered credit for CS 1110. Students considering majoring in CS, ORIE, ISST or ECE may want to (1) accept the AP credit and (2) take CS/ENGRD 2110 (or CS/ENGRD 2112, enrollment is limited and assigned on a first-come first-serve basis) as the first programming course. (Note that one of CS/ENGRD 2110 or CS/ENGRD 2112 is required for CS, ORIE, and ISST majors, and it is strongly recommended for ECE majors.) Eventually, you may want to take one of the two short courses CS 1132 or CS 1133 to learn Python or Matlab, but this is optional.
  4. If you're planning to eventually take CS/ENGRD 2110 or CS/ENGRD 2112, then any CS 111x course will provide you with the necessary prerequisites without taking a short course (CS 113x). However, CS 1110 provides a bit more practice with object-oriented design, which could help with CS/ENGRD 2110 and CS/ENGRD 2112.
  5. If you have exceptional prior experience, upper-level courses such as CS 3110 may be appropriate. Contact the CS undergrad office at for more information and guidance.

Course Descriptions

Below is a short description of each course, as well as the current plan of when these courses will be offered.. Additional information can be found at the course listing page.

CS 1110 Introduction to Computing: A Design & Development Perspective; generally offered fall, spring and summer; 4 credits

Assumes basic high school mathematics (no calculus), but no programming experience. Programming and problem solving using Python. Emphasizes principles of software development, style, and testing. Topics include procedures and functions, iteration, recursion, arrays and vectors, strings, an operational model of procedure and function calls, algorithms, exceptions, object-oriented programming, and GUIs (graphical user interfaces). Weekly labs provide guided practice on the computer, with staff present to help. Assignments use graphics and GUIs to help develop fluency and understanding.

CS 1112 Introduction to Computing: An Engineering & Science Perspective; generally offered fall and spring; 4 credits

Programming and problem solving using Python. Emphasizes the systematic development of algorithms and programs. Topics include iteration, functions, arrays, strings, recursion, object-oriented programming, algorithms, and data handling and visualization. Assignments are designed to build an appreciation for complexity, dimension, randomness, simulation, and the role of approximation in engineering and science. Weekly discussion section provides guided practice on the computer, with staff present to help. NO programming experience is necessary; some knowledge of Calculus is required.

CS 1132 Short Course in Matlab; generally offered fall and spring ; 2 credits; S/U ("pass/fail") only

Introduction to the MATLAB programming language. Covers the basic programming constructs of MATLAB, including assignment, conditionals, iteration, functions, arrays, vectorized computation, and scientific graphics. Designed for students who need MATLAB for research or other courses. Does not assume any previous programming experience.

CS 1133 Short Course in Python; generally offered fall and spring; 2 credits; S/U ("pass/fail") only

Introduction to the Python programming language. Covers the basic programming constructs of Python, including assignment, conditionals, iteration, functions, object-oriented design, arrays, and vectorized computation. Designed for students who need Python for research or other courses. Does not assume any previous programming experience.

CS/ENGRD 2110 Object-Oriented Design and Data Structures; generally offered fall, spring, and summer; 3 credits

Prerequisite: One of: CS 1110, 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.

CS/ENGRD 2112 Object-Oriented Design and Data Structures - Honors; generally offered fall only; 4 credits

Prerequisite: very good performance in CS 1110 or equivalent course in Java or C++, or permission of the instructor. Honors version of CS 2110/ENGRD 2110; credit is given for only one of CS 2110 and 2112. Corrective transfer between CS 2110 and 2112 (in either direction) is encouraged during first three weeks. Intermediate software design and introduction to key computer science ideas. Topics are similar to those in CS 2110 but are covered in greater depth, with more challenging assignments. Topics include object-oriented programming, program structure and organization, program reasoning using specifications and invariants, recursion, design patterns, concurrent programming, graphical user interfaces, data structures as in CS 2110, sorting and graph algorithms, asymptotic complexity, and simple algorithm analysis. Java is the principal programming language.