- Diversity, Equity, and Inclusion
- Research News
- Department Life
- Oral History of Cornell CS
- Department Timeline
- Job Postings
- Ithaca Info
- Internal info
- Graduation Information
- Cornell Tech Colloquium
- Student Colloquium
- Spring 2023 Colloquium
- Conway-Walker Lecture Series
- Salton Lecture Series
- Seminars / Lectures
- Big Red Hacks
- Cornell University High School Programming Contests 2023
- Game Design Initiative
- CSMore: The Rising Sophomore Summer Program in Computer Science
- Explore CS Research
- Research Night
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.
- Introduction to Computing Using Python (CS 1110), 4 credits, letter grade.
- Introduction to Computing Using Matlab (CS 1112), 4 credits, letter grade.
Which of these courses you take is entirely your choice. Both courses cover the same foundational computing concepts, even though one course uses Python and other uses Matlab as the 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 corresponding short courses.
- Short Course in Matlab (CS 1132), 2 credits, pass/fail.
- 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. 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 a mathematiics pre/co-requisite while CS 1110 does not.
- 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.
- 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.
- 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.
- 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.
- If you have exceptional prior experience, upper-level courses such as CS 3110 may be appropriate. Contact the CS undergrad office at email@example.com for more information and guidance.
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; 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 Using MATLAB; generally offered fall and spring; 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, recursion, 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.
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.