- About
- Events
- Calendar
- Graduation Information
- Cornell Learning Machines Seminar
- Student Colloquium
- BOOM
- Fall 2024 Colloquium
- Conway-Walker Lecture Series
- Salton 2024 Lecture Series
- Seminars / Lectures
- Big Red Hacks
- Cornell University - High School Programming Contests 2024
- Game Design Initiative
- CSMore: The Rising Sophomore Summer Program in Computer Science
- Explore CS Research
- ACSU Research Night
- Cornell Junior Theorists' Workshop 2024

- People
- Courses
- Research
- Undergraduate
- M Eng
- MS
- PhD
- Admissions
- Current Students
- Computer Science Graduate Office Hours
- Advising Guide for Research Students
- Business Card Policy
- Cornell Tech
- Curricular Practical Training
- A & B Exam Scheduling Guidelines
- Fellowship Opportunities
- Field of Computer Science Ph.D. Student Handbook
- Graduate TA Handbook
- Field A Exam Summary Form
- Graduate School Forms
- Instructor / TA Application
- Ph.D. Requirements
- Ph.D. Student Financial Support
- Special Committee Selection
- Travel Funding Opportunities
- Travel Reimbursement Guide
- The Outside Minor Requirement

- Diversity and Inclusion
- Graduation Information
- CS Graduate Minor
- Outreach Opportunities
- Parental Accommodation Policy
- Special Masters
- Student Spotlights
- Contact PhD Office

Choosing a Coherent Set of Electives

For those students looking to pursue certain CS lines of inquiry, the department has developed a collection of advising "vectors" that promote coherent, in-depth study. Each vector has a magnitude (typically four to five courses, which may be internal or external to CS) and a direction representing a particular "line of inquiry" within CS.

- Artificial Intelligence (The machine learning and NLP/human-language technologies track have been folded in.)
- Computational Science and Engineering
- Graphics and Computer Vision
- Network Science
- Programming Languages
- Software Engineering
- Systems / Databases
- Theory

*Pursuing a vector (or one of its more specialized tracks) is optional and not a requirement for graduation*.

Vector Descriptions

*NOTE: The "F" notation Fxxx (or variants like F7xx) is used, informally speaking, to denote an Four or Five or, um, Six-thousand level Full-Fledged elective. It does not mean a 4000-level course (otherwise, we would have written "4" instead of "F".) Specifically and technically, it stands for any course that's at the 4000-6000 level, at least 3 credits, not an independent study or teaching for credit, and not required by the CS major. For example, Fxxx includes 4750, 5620, and 6110, but not 4820 (required by the major), 4090 (teaching experience in CS), 4999 (independent study), or 4121 (fewer than 3 credits). As another example, CS F4xx includes CS 4450 and 5430, but not CS 4410 (required by the major), 4411 (too few credits) or 4620 (doesn't match the pattern!)*.

### Vector name: ARTIFICIAL INTELLIGENCE

*Focuses on understanding and creating intelligent systems*

**Explanation of requirements:** the core AI course and associated practicum, machine learning, an AI elective, and either connections to human intelligence or further grounding in techniques.

**Required courses: **Five total (4 full and 1 half)

- CS 3700, Foundations of Artificial Intelligence
- CS 4701, Practicum in Artificial Intelligence
- An additional course numbered CS 378x, CS F78x, or listed under the subheading "Foundations of AI: machine learning" for the AI minor.
- An additional course numbered CS F7xx or CS 4300 (Language and Information) or CS F67x (Computer Vision) or CS 5846 (Decision Theory) or on the list of Cornell's NLP courses or machine learning courses.
- An additional course chosen from the following list: COGST, PSYCH or LING Fxxx, CS F2xx, CS 32xx, or listed as part of the AI minor.

**Also recommended are (additional) courses on **scientific computing (e.g., CS 4210 or 4220), game theory or related economics topics.

### Vector name: COMPUTATIONAL SCIENCE AND ENGINEERING

*Focuses on the numerical algorithms that support computer modeling and simulation to guide experimental and design work in data-intensive scientific computing.*

**Explanation of requirements:** Effective numerical computing in science and engineering requires an understanding of the fundamental algorithms that have been devised to solve the continuous problems of applied mathematics. Requirements include a year-long sequence in numerical analysis that covers data fitting and approximation, nonlinear systems and optimization, ordinary and partial differential equations, and the essential methods of numerical linear algebra. An applied mathematics course that covers differential equations and/or optimization together with a programming versatility requirement completes the vector.

**Required courses: **Five minimum (3 full and 2 or more half). Note that a prerequisite for this vector is MATH 2930 (Differential Equations for Engineers) or Math 2220 (Multivariable Calculus).

- Two (different) courses numbered F2xx, with the following exception: one cannot count both CS 4220 (Numerical Analysis II: Linear and Nonlinear Problems) and CS 6210 (Matrix Computations), due to overlapping content.

Note that one can take CS 4210 (Numerical Analysis I: Numerical Analysis and Differential Equations) and CS 4220 in either order.

- One of the following applied mathematics courses: OR 3300 (Optimization I), TAM 3100 (Applied Mathematics I), Math 4200 (Differential Equations and Dynamical Systems), Math 4240 (Wavelets and Fourier Series), Math 4280 (Introduction to Partial Differential Equations), AEP 4210 (Mathematical Physics I), CEE 3310 (Fluid Mechanics), CEE 3710 (Structural Modeling and Behavior), MAE 3230 (Introductory Fluid Mechanics).

- A minimum of four-credit hours of programming experience obtained through any combination of CS 20xx courses: CS 2022 (Introduction to C), CS 2024 (C++ Programming), and CS 2043 (UNIX Tools and Scripting).

Also recommended are CS 3300 (data-driven web applications), CS 4320 (introduction to database systems), computer graphics courses with significant mathematical content numbered (typically numbered CS F6xx or corresponding cross-lists), CS F78x (machine learning courses).

### Vector name: GRAPHICS AND COMPUTER VISION

*Focuses on computing with visual images*

**Explanation of requirements:** The introductory graphics or vision course and practicum, scientific computing, and two electives (in various combinations) in graphics and related fields

**Required courses: **Five total (4 full and 1 half)

- CS 4620, introduction to computer graphics or CS 4670, introduction to computer vision
- CS 4621, computer graphics practicum
- CS 32xx or F2xx (scientific computing)
- An additional course numbered CS F6xx (graphics and vision courses)
- An additional course drawn from the following list: CS F6xx (graphics and vision courses) or CS 3152 or CS 4152 (game design courses) or CS F78x (machine learning)

Also recommended are courses in visual art or photography or human perception especially as applied to computer graphics/art/visual display (e.g. PSYCH 3420), as well as additional 4000-level mathematics courses.

### Vector name: NETWORK SCIENCE

*The social, technological, and natural worlds are connected; the study of networks sheds light on these connections. This vector provides preparation in the network- and data-analysis tools to understand and develop predictive models of physical, biological, and social network phenomena.*

**Explanation of requirements:** Two core courses in the analysis of networks; a course in machine learning; and a course on application areas

**Required courses: **Four total (4 full and 0 half)

- Two different courses numbered CS x85x (complex networks/information access), or INFO 4220 (Networks II). To be clear: CS 2850 counts towards this requirement.
- One advanced technical course dealing with understanding data. Courses that count towards this requirement are coursees numbered CS 378x,. CS F78x (machine learning courses) or CS 4758 (Robot Learning) or CS 4740 (Natural Language Processing) or CS 3300 (Data-driven Web Applications) or CS 4300 (Language and Information).
- One course chosen from the following list: ORIE x350 (Game Theory), ECON 4020 (Game Theory; formerly, ECON 3680), CS F84x (game theory courses), or INFO 4220 (Networks II) if not already used to satisfy the requirements above.

### Vector name: PROGRAMMING LANGUAGES

*Spans logics and language semantics, language design, compilation and optimization.*

**Explanation of requirements:** Requirements include a course on programming languages; a course on compilers and the associated practicum; an elective in either applied logic, computability and complexity, or advanced programming languages; and a (short) course on a particular language.

**Required courses: **Five total (3 full and 2 half)

- CS F110 (programming-language and logics courses)
- CS 4120 (introduction to compilers)
- CS 4121 (practicum in compilers)
- An additional course chosen from the following list: CS 4860 (applied logic), CS 5114 (network programming languages), CS 5860 (intro to formal methods), CS F810 (computability and complexity), or CS 611x if not already used to satisfy the requirements above.
- One short course, CS 202x, on an additional programming language. For example, 2022 (C), 2024 (C++) qualify.

Since 4110 and 4120 are typically offered in alternate years, completion of this vector usually requires taking one of these courses by fall of one's junior year.

### Vector name: SOFTWARE ENGINEERING

*Provides students with the fundamentals of software engineering and extensive implementation experience in a variety of application areas.*

**Explanation of requirements: **a masters-level course on software engineering, two programming-intensive practica in different areas, and an additional course with a heavy implementation component. Experience in C++ is strongly recommended (note that many CS majors are exposed to Linux through the core course CS 3410).

**Required courses: **Four total (2 full and 2 half, but at least one additional full course corresponding to one of the half-course practica is strongly recommended (and in some cases required))

- CS 5150 (Software Engineering) or CS 5152 (Open_source Software Engineering)
- Two different courses numbered 4xx1 (practicums, such as 4121 (compilers), 4321 (databases), 4411 (operating systems), 4621 (computer graphics), 4701 (artificial intelligence)).

Note: It is strongly recommended (and in some cases required) that one also take the corresponding "full" course; for example, if one takes 4621 (the graphics practicum), it is recommended that one also take 4620 (introduction to computer graphics) - One of CS 3152 (Introduction to Computer Game Development), CS 4152 (Advanced Topics in Computer Game Architecture), CS 4154 (Analytics-Driven Game Design), CS F45x (computer networks), CS 5412 (Cloud Computing), 5414 (Distributed Computing Systems), or the following implementation-heavy computer graphics courses: CS 5625.

Also recommended are exposure to C++, either through 2024 (C++ programming) or practica taught in C++; 2043 (UNIX tools and Scripting); CS 2300 (intermediate design and programming for the web), CS 3300 (data-driven web applications).

### Vector name: SYSTEMS / DATABASES

*Focuses on design and implementation of the fundamental software systems that comprise our computing infrastructure.*

**Explanation of requirements: **the core operating-systems practicum, and three systems electives (areas include networking, architecture, and so on). The launch-point for this vector is CS4410 (operating systems, a core CS course) and its practicum, CS 4411; or, CS 4414. Many students follow on with CS4450/5450 (networks, not offered every year), CS 5430 (security) and/or CS 5412/14 (intermediate computer systems: cloud and distributed computing and high performance systems and networking), and other 54xx courses). Note: undergraduates should not have difficulty taking these CS 54xx courses provided that they had no difficulty in CS4410/CS4411.

**Required courses: **Four total (3 full, 1 half)

- CS 4411 (Practicum in Operating Systems) or CS 4321 (Practicum in Database Systems)
- 3 additional courses chosen from the following list: CS F4xx, CS F12x (compilers courses), CS F32x (database courses), and ECE 4450 (computer networks and telecommunications)

Although any group of courses from the acceptable list will do, many systems students find it especially useful to get a solid background in databases.

Given the definition of "Fxxx" from above, CS F4xx includes CS 4450/5450, CS 5430, CS 5412, CS 5413, and CS 5414, but does not include CS4410 or CS 4411; similarly, CS 4321 is not included under F32x, and CS 4121 is not included under CS F12x.

#### Track: Operating Systems

*Provides detailed and hands-on knowledge of operating systems and low-level systems software.*

In order to build a detailed understanding of operating systems and low-level systems software, the following course is required in addition to the vector requirements:

- the practicum under (1) is CS 4411 (Practicum in Operating Systems).

#### Track: Security & Trustworthy Systems

*Addresses fundamental problems in ensuring the security and reliability of our global critical computing infrastructure.*

Combines operating systems with mathematical tools for cryptography or verification, system security, and the second course in the systems core sequence. In addition to the vector requirements:

- the practicum under (1) is CS 4411 (Practicum in Operating Systems).
- one course under (2) is CS 5430 (System Security)
- one course under (2) is CS 5412 (Cloud Computing) or 5414 (Distributed Computing Systems).
- students take one additional course CS 4830 (Introduction to Cryptography) [preferred] or CS4860 (Applied Logic) or MATH 3360 (Applicable Algebra)

Also recommended are INFO 5150 (Culture, Law and Politics of the Internet) or other relevant law or policy courses. Note: undergraduates should not have difficulty taking the CS 54xx courses provided that they had no difficulty in CS 4410/CS 4411.

#### Track: Data-Intensive Computing

*Focuses on the foundations of managing, processing, and analyzing large datasets*

Combines one course plus practicum on data management and courses on large data-driven systems, with machine learning/data mining or information retrieval. In addition to the vector requirements:

- the practicum under (1) is CS 4321 (Practicum in Database Systems);
- one of the three courses under (2) isCS 4320 (Database Systems);
- students take one additional course from CS F78x (Machine Learning) or ORIE 4740 or CS 4300 (Language and Technology) or CS 4740 (Natural Language Processing)

### Vector name: THEORY

*Focuses on the study of efficient computation, models of computational processes, and their limits.*

**Explanation of requirements:** a course in computability/complexity, two theory electives and an upper-level technical mathematics course

**Required courses: **Four total (4 full, 0 half)

- CS 481x (intro theory course)
- Two additional courses numbered CS F8xx or from the following list: ECE 6890 (An Algorithmic and Information-Theoretic Toolbox for Massive Data), ORIE 6330 (Graph Theory and Network Flow), ORIE 6335 (Scheduling Theory), ORIE 6334 (Combinatorial Optimization). (Recall that CS 4820 does not satisfy this requirement, since the "F" notation indicates a 4000-6000 non-CS-major-required 3+ credit course.)
- An additional 3+ credit course numbered MATH THxx, where the thousands digit T is between 3 and 6 inclusive and where the hundredths digit is between 1 and 9 inclusive, or MATH 4010 (Honors seminar: Topics in Modern Mathematics) or CS 4860 (Applied Logic).

Also recommended are CS 4210 or 4220 (Scientific computation, numerical analysis); MATH 4320 or 4340 (Abstract algebra); MATH 4810 (Logic).