Choosing Your First Computing Course
The Computing Requirement in Engineering
Four credits of computing are required, which are covered by either 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 one of these courses you take is entirely your choice. Both courses cover the same foundational computing concepts, even though one course uses Python and the 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 additionally taking one of the following short courses:
1. A Short Course in Matlab (CS 1132), 2 credits, pass/fail
2. A Short Course in Python (CS 1133), 2 credits, pass/fail
These short courses take between 5-6 weeks to complete. Please note: the short courses do not complete the Introduction to Computing degree requirement.
What should I consider when making the choice?
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 or switch courses via Student Center during pre-enroll in July or during Add/Drop in August. Note that CS 1112 has a mathematics pre/co-requisites 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 and 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 performed 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, or ISST may want to (1) use 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.) 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 are planning to eventually take CS/ENGRD 2110 or CS/ENGRD 2112, then either CS 111x course will provide you with the necessary prerequisites without taking a short 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 firstname.lastname@example.org for more information and guidance.
What are the course options?
Below is a short description of each course.
CS 1110 Introduction to Computing Using Python; offered fall, spring, and summer; 4 credits
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; offered fall and spring; 4 credits
Corequisite: MATH 1110, MATH 1910, or equivalent. Assumes student is comfortable with mathematics (at 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 A Short Course in Matlab; offered fall and spring; 2 credits; 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 A Short Course in Python; offered fall and spring; 2 credits; 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; offered fall, spring, and summer; 3 credits
Prerequisite: One of: CS 1110, CS 1112, or an equivalent course in object-oriented programming. 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; offered fall only; 4 credits
Prerequisite: Very good performance in: CS 1110 or an equivalent course in Java or C++, or permission of the instructor. Honors version of CS 2110/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.