- About
- Events
- People
- Courses
- Research
- Undergraduate
- M Eng
- MS
- PhD
**NOTE: CS Majors that matriculated to Cornell before fall 2016 can follow the rules of their entering class or any year up until their graduation date.**
Choosing a Coherent Set of Electives
The grade point average is but one way to measure the quality of an undergraduate record. An equally important attribute concerns depth-of-education, something that is best measured by the choice of elective courses. While required core CS courses ensure breadth-of-education and set the stage for more specialized work, it is through the choice of electives that you can communicate an appealing level of curiosity and a readiness for the future.
The CS major has a streamlined set of core courses to allow for more choices in electives, and a collection of vectors that promote coherent, in-depth study. A vector has a magnitude (typically four to five courses, which may be internal or external to CS, and which are allowed to “double-count” towards other requirements of the major or College), and a direction representing a "line of inquiry" within CS.
- Renaissance (Basis)
- Artificial Intelligence (2 optional tracks)
- Computational Science and Engineering
- Graphics
- Network Science
- Programming Languages
- Software Engineering
- Systems / Databases (3 optional tracks)
- Theory
The faculty may introduce or modify vectors as they see new directions for the department and the field; however, changes will be introduced no more frequently than once a semester.
Completion of a vector is optional and not a requirement for graduation. You should begin thinking about possible vectors of study when you affiliate, and, since your interests or perspectives may change, we recommend you start out following at least two vectors and consult regularly with your advisor about your choices. This makes it easier to change vectors (or launch another) along the way.
While the completion of a vector is required, you do not necessarily have to follow any of the tracks that we have compiled for some of the broader vectors. Furthermore, you do not have to declare a track.
Your choice of vector(s) (and possibly track(s)) should be driven by academic interest alone. It should not be based on risky predictions of where the field is going. The best way to ensure a successful career after you graduate as a CS major is to practice now the art of being intellectually nimble. Tumultuous times call for mobility. Cultivate a broad knowledge of the field and show the world through your transcript that it empowers you to go deep and to learn new areas. Choose your electives as if your life depended on it. It does.
Important deadline for verifying vectors:
- Verifying completion of vector - During senior year, CS majors must complete the 'Vector Verification Form' which indicates the vector(s) that will be completed by their graduation date. The deadline for submission of the 'Vector Verification Form' is October 15th of senior year for January candidates, and March 15th of senior year for May and August candidates.
This form is available online (see 'Useful Forms').
Vector Descriptions from past years:
Fall 2014 (for students entering AY 2014/2015 or before) (pending upload)
Vector Descriptions Current
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 4700, 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 4700 (doesn't match the pattern!).
Cross-lists of courses allowable for satisfying vector requirements unless otherwise noted. Courses used toward satisfying the CS 4000+ electives should be taken as CS.
Vector name: RENAISSANCE (BASIS)
Encourages breadth of study across computer science, including education in fundamentals beyond the core that support multiple pursuits.
Explanation of requirements: Four upper-level CS electives among which at least two areas must be represented, and at least one of scientific computing and theory is represented among the areas (note that an additional course in each of these areas was required of all CS majors before Spring 2009).
Required courses: Four total (4 full and 0 half)
Four elective courses drawn from the following list: CS Fxxx or cross-list of any of these courses, where
- at least two different hundredths digits (1-8) are represented, and
- at least one of the "hundredths digits" is either 2 or 8 (representing scientific computing and theory, respectively) in the CS listing of the course.
Recall by the definition of the "Fxxx" notation that the following courses (and others) do not count: CS 4820 (CS core course), CS 4090 (teaching experience in CS), CS 4999 (independent study), to pick a few examples.
Vector name: ARTIFICIAL INTELLIGENCE (2 Optional Tracks)
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 4700, Foundations of Artificial Intelligence
- CS 4701, Practicum in Artificial Intelligence
- An additional course numbered CS F78x or CS F75x (Robotics);
- An additional course numbered CS F7xx or CS 4300 (Information Retrieval) or CS F67x (Computer Vision) or CS 5846 (Decision Theory);
- An additional course chosen from the following list: COGST, PSYCH or LING Fxxx, CS F2xx. (Recall that independent studies such as LING 4493 or courses below 3 credits are disallowed according to the Fxxx naming convention.)
Also recommended are coursed on scientific computing (e.g., CS 4210 or 4220), game theory or related economics topics.
Track: Human-Language Technology (optional)
Focuses on creating natural-language processing and information retrieval systems that can analyze and generate information in unstructured, natural-language format (e.g., English). Applications include search engines, automatic translations between languages, and human-computer interaction, among others.
In addition to core AI and machine learning, the track focuses on courses covering the fundamentals of computational linguistics, natural language processing and/or information retrieval, and linguistics. The track also adds another course from those areas or from programming languages. In addition to the vector requirements:
- the course taken under (4) is either CS F74x or CS 4300
- the course taken under (5) is LING Fxxx (e.g. LING 4485)
- students take one additional course LING Fxxx (includes CS 3470) or CS F74x or CS F110
Also recommended are CS 2043 (UNIX Tools and Scripting), statistics, scientific computing (courses number x2xx), a foreign language.
Track: Machine Learning (optional)
Focuses on machine learning methods and theory, with their numerous applications to large-scale data analysis problems in areas like search engines, natural language processing, data mining, robotics, and computational biology.
In addition to the core AI course and the first machine learning course, the track includes a second course in machine learning or statistics. It also includes a course in an application area of machine learning or in an area that machine learning draws upon. In addition to the vector requirements (1)-(3), students take the following two courses which might count under (4) and (5), only if permitted by the AI vector:
- another course from CS F78x or CS 4758 (Robotic Learning) or CS 4850 (Math Found for the Info Age) or STSCI Fxxx (excluding STSCI 4080).
- one course from CS 4300 (Information Retrieval) or CS F74x (Natural Language Processing) or CS F75x (Robotics) or CS F67x (Computer Vision) or CS F2xx (Scientific Computing).
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
Focuses on computing with visual images
Explanation of requirements: The introductory graphics 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
- CS 4621, computer graphics practicum
- CS F2xx
- A course drawn from the following list: CS 5625, CS 5643, CS 6620, CS 6630, CS 6640, CS 6650. Note that the 5000-level courses have a comparable level of difficulty with 4000-level CS courses.
- An additional course drawn from the following list: CS F6xx (graphics and vision courses) or CS 3152 or CS 4152 or CS 4154 [game design courses]
Also recommended are courses in visual art or photography, 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 course numbered CS F78x (machine learning courses) or CS 4758 (Robot Learning)
- One course chosen from the following list: ORIE x350 (Game Theory), ECON 4010 (Game Theoretic Methods; formerly ECON 3670), ECON 4020 (Game Theory; formerly, ECON 3680), SOC 3040 (Social Networks and Social Processes), SOC 4250/5270 (Artificial Societies), 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 6110 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 4152 (Advanced Topics in Computer Game Architecture), CS 4154 (Analytics-Driven Game Design), CS F45x (computer networks), CS 5300 (Architecture of Large-scale Information Systems), CS 5412 (Cloud Computing), 5414 (Distributed Computing Systems), or the following implementation-heavy computer graphics courses: CS 5625, 5643, 6620, 6630, 6650.
Also recommended are exposure to C++, either through 2024 (C++ programming) or practica taught in C++; CS 2022 (introduction to C) if 2024 not taken, 2043 (UNIX tools and Scripting); CS 2300 (intermediate design and programming for the web), CS 3300 (data-driven web applications).
Vector name: SYSTEMS / DATABASES (3 Optional Tracks)
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. 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 edge computing). 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), CS 5300 (the architecture of large-scale information systems), 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.
Recall: Give the definition of "Fxxx" from above, CS F4xx includes CS 4450, CS 5430, CS 5412, and CS 5414, but not CS4410 or CS 4411; similarly, CS 4321 is not included under F32x, and CS 4121 is not included under CS F12x.
Track: Operating Systems (optional)
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 (optional)
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 (optional)
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).
- two of the three courses under (2) are CS 4320 (Database Systems) and CS 5300 (Architecture of Large-scale Information Systems).
- students take one additional course from CS F78x (Machine Learning) or CS 4758 (Robot Learning) or ORIE 4740 or CS 4300 (Information Retrieval) or CS 6740 (Advanced Language Technologies)
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 ORIE 6330 (Graph Theory and Network Flow) or ORIE 6335 (Scheduling Theory). (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); ORIE 6334 (Combinatorial Optimization).