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 Using Python (CS 1110), 4 credits, letter grade.
(2) Introduction to Computing Using Matlab (CS 1112), 4 credits, letter grade.

Which of these courses you take is entirely your choice. All courses cover the same foundational computing concepts, even though some courses use Python and others Matlab as their programming language. The courses mostly differ in emphasis, and a short description of each course is given below. Note that you can always learn the other programming language as well by taking one of the transition courses.

(a) Transition to Matlab (CS 1132), 1 credit, pass/fail.
(b) Transition to Python (CS 1133), 1 credit, pass/fail.

These transition courses take only 5 weeks to complete.

Deciding on a First Computing Course

Below, CS 111x refers to one of the 4-credit courses CS 1110 and CS 1112. For your information, brief course descriptions appear below. There is no need to decide until the semester begins and you can enroll via http://studentcenter.cornell.edu/ during pre-enroll in July (for newly admitted Cornell students) or during add/drop in August. Note that CS 1112 has amathematiics pre/co-requisite while CS 1110 does not.

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.

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. You may want to take one of the two transition courses CS 1132 or CS 1133 to learn Python or Matlab, but this is optional. We recommend (1) accepting the AP credit and (2) taking 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 trasnition 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 transition class (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 607-255-0982 or ugrad@cs.cornell.edu 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 Using Python; offered fall 2014, spring 2015, and summer 2015; 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 object-
oriented concepts, procedures and functions, iteration, recursion, arrays and vectors, strings, algorithms, exceptions, 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 Using MATLAB; offered fall 2014 and spring 2015; 4 credits
Assumes student is comfortable with mathematics (at the level of one semester of calculus), but has no prior programming experience. Programming and problem solving using MATLAB. Emphasizes the systematic development of algorithms and programs. Topics include iteration, functions, arrays and vectors, strings, recursion, algorithms, object-oriented programming, and MATLAB graphics. Assignments are designed to build an appreciation for complexity, dimension, fuzzy data, inexact arithmetic, randomness, simulation, and the role of approximation. Weekly discussion or lab sections provide guided practice.

CS 1132 Transition to Matlab; offered fall 2014 and spring 2015; 1 credit; pass/fail only
Introduction to programming in Matlab. Assumes programming knowledge in a language like Python, Java, C, C++, or Fortran.

CS 1133 Transition to Python; offered fall 2014; 1 credit; pass/fail only
Introduction to programming in Python. Assumes programming knowledge in a language like MATLAB, Java, C, C++, or Fortran.

CS/ENGRD 2110 Object-Oriented Design and Data Structures; offered fall 2014, spring 2015, and summer 2015; 3 credits
Prerequisite: One of: CS 1110, CS 1112, CS 1114, CS 1115, or an equivalent course in object-oriented programming.Intermediate programming 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), simple graph algorithms. Java is the principal programming language.

CS/ENGRD 2112 Object-Oriented Design and Data Structures - Honors; offered fall 2014; 4 credits
Prerequisite: Very good performance in one of: CS 1110, CS 1112, CS 1114, CS 1115, or an equivalent course in object-oriented programming, or permission of the instructor. Honors version of CS/ENGRD 2110. Topics are similar to those in CS 2110 but are covered in greater depth, with more challenging assignments. Java is the principal programming language.