A bachelor's degree (BA / BS / BE) in computer science or a related technical field (e.g., electrical and computer engineering,  information science, operations research) typically suffices. Applicants who have majored in these and other fields are absolutely encouraged to apply provided they have demonstrated knowledge of the following subjects:

  • Object-Oriented Programming and Data Structures (e.g., CS 2110) 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), simple graph algorithms. Java is the principal programming language.
  • Data Structures and Functional Programming (e.g., CS 3110) Advanced programming course that emphasizes functional programming techniques and data structures. Programming topics include recursive and higher-order procedures, models of programming language evaluation and compilation, type systems, and polymorphism. Data structures and algorithms covered include graph algorithms, balanced trees, memory heaps, and garbage collection. Also covers techniques for analyzing program performance and correctness. NOTE: Although knowledge of functional programming is not essential, advanced knowledge of data structures is.
  • Computer System Organization and Programming (e.g., CS 3410) An introduction to the design of embedded systems, with an emphasis on understanding the interaction between hardware, software, and the physical world. Topics covered include assembly language programming, interrupts, I/O, concurrency management, scheduling, resource management, and real-time constraints.
  • Discrete Structures (e.g., CS 2800) Covers the mathematics that underlies most of computer science. Topics include mathematical induction; logical proof; propositional and predicate calculus; combinatorics and discrete mathematics; some basic elements of basic probability theory; basic number theory; sets, functions, and relations; graphs; and finite-state machines. These topics are discussed in the context of applications to many areas of computer science, such as the RSA cryptosystem and web searching.
  • Basic Calculus and Linear Algebra  Functions and graphs, limits and continuity, differentiation and integration, volume and arc length, infinite sequences and power series, parametric equations, partial derivatives, double and triple integrals, line and surface integrals, vector fields, gradients and Jacobians, matrices, determinants, vector spaces, linear systems, least squares, eigenvalues and eigenvectors, orthogonality and inner product spaces.

The courses listed above will best prepare you for the courses required to meet the CS M.Eng degree requirements. It is essential that the material covered in these courses be familiar to you in order for you to be successful. We suggest that when taking the equivalent of the Cornell CS courses listed as pre-requisites, you insure the courses you take cover the same material and the school where you take them is comparable to Cornell.

Unfortunately, when taking courses through MOOCs there is no official documentation of your success, so we cannot consider those courses as meeting the pre-requisites.