# Computer Science (2020 - 2022)

## Policy on Declaration of Major or Minor

Students must complete either CSCI-UA 101 or 102 (depending on placement) with a grade of C or better before they can declare the major or minor in computer science; the joint majors with economics and mathematics; and the joint minor with mathematics. To declare the joint major in computer and data science, students must first meet this prerequisite and also complete either DS-UA 111 or 112 (depending on placement) with a grade of C or better. To declare the minor in web programming and applications, students must first complete their choice of either (1) CSCI-UA 2 or 3 (depending on placement) or (2) CSCI-UA 4 with a grade of C or better. These policies apply to all NYU students, not just to those matriculated in CAS.

## Major in Computer Science

The major requires twelve 4-point courses (48 points). Requirements include the following five courses (20 points) in the Department of Computer Science:

- Introduction to Computer Science (CSCI-UA 101)
- Data Structures (CSCI-UA 102)
- Computer Systems Organization (CSCI-UA 201)
- Operating Systems (CSCI-UA 202)
- Basic Algorithms (CSCI-UA 310)

The major also requires two courses (8 points) in mathematics:

- Discrete Mathematics (MATH-UA 120)
- Calculus I (MATH-UA 121) or Mathematics for Economics I (MATH-UA 211)

Students must also take five elective courses (20 points) to complete the major, selected from courses numbered CSCI-UA 4XX (400 level electives).

Students may replace a 400-level elective with one of the following mathematics classes:

- Calculus II (MATH-UA 122) or Mathematics for Economics II (MATH-UA 212). Students must choose one calculus track or the other and cannot mix courses from the two tracks.
- Linear Algebra (MATH-UA 140)
- Probability and Statistics (MATH-UA 235)

A maximum of two MATH-UA classes can be substituted for 400 level electives.

## Policies Applying to the Major

- A grade of C or better is necessary in all courses used to fulfill major requirements; courses graded Pass/Fail do not count toward the major.
- To enroll in Introduction to Computer Science (CSCI-UA 101) students must first fulfill the prerequisite Introduction to Computer Programming (No Prior Experience) (CSCI-UA 2) or Introduction to Computer Programming (Limited Prior Experience) (CSCI-UA 3). Alternatively, they must first present a score of 3 on the AP Computer Science exam; students with a score of 4 or 5 may also register for CSCI-UA 101 (they are encouraged but not obliged to start with CSCI-UA 102), but they will forfeit the AP credit. Finally, students may take a placement test given by the department to enter CSCI-UA 101.
- Advanced Placement (AP) credit for Computer Science A is the equivalent of CSCI-UA 101 and counts toward the major. However, the AP exam in Computer Science Principles cannot count toward any major or minor in this department.
- Students who score a 4 or 5 on the AP Computer Science exam are encouraged to register for Data Structures (CSCI-UA 102) but are not obliged to; they may choose to take CSCI-UA 101 before CSCI-UA 102 (and forfeit the AP credit).
- Students will also lose AP credit if they take certain other courses in the department; this is noted in the relevant course descriptions.

- Students are required to take CSCI-UA 101 through CSCI-UA 201 in sequence.
- Note that Albert will automatically block: students who complete CSCI-UA 2 with a C or better from registering for CSCI-UA 3; students who complete CSCI-UA 467 with a C or better from registering for CSCI-UA 61; and students who complete CSCI-UA 479 with a C or better from registering for CSCI-UA 60.

- CAS students (in any major or minor) are not permitted to take computer science courses in the Tandon School of Engineering.
- Those interested in the honors program should start the major early enough to take major electives starting in the first semester of junior year.
- Those interested in spending a semester away should work out their schedule with an adviser as early as possible.

## Recommended Program of Study for the Major in Computer Science

**First Year of Major:**

Fall term: CSCI-UA 101, MATH-UA 121 or 211

Spring term: CSCI-UA 102, MATH-UA 120

**Second Year of Major:**

Fall term: CSCI-UA 201, CSCI-UA 310

Spring term: CSCI-UA 202, one computer science elective (not requiring CSCI-UA 202 as a prerequisite)

**Third Year of Major:**

Fall term: Two computer science electives

Spring term: Two computer science electives

## Joint Major in Computer and Data Science

The prerequisite for declaring this major is completion of (1) either CSCI-UA 101 or 102 (depending on placement) and also (2) either DS-UA 111 or 112 (depending on placement) with a C or better. The joint major in computer and data science is designed for students who seek comprehensive training in two bodies of knowledge: (1) computer science, an established field that advances computing, programming, and building large-scale and intelligent systems; and (2) data science, an emerging field that leverages computer science, mathematics, and domain-specific knowledge to analyze large data collections using data mining, predictive statistics, visualization, and efficient data management. The joint major in computer and data science trains students to use data science systems, the automated systems that effectively predict outcomes of interest and that extract insights from increasingly large data sets. This training enables students to participate in harnessing the power of data and in influencing policies that will govern the rollout of data science technologies. In addition, students gain the ability to build such systems.

This is an interdisciplinary major (eighteen courses/72 points) offered by the Department of Computer Science and the Center for Data Science. A grade of C or better is necessary in all courses used to fulfill joint major requirements. Interested students should consult with the directors of undergraduate studies in the department and the center for additional information. Please note that the CAS minor requirement associated with the major in data science is waived for the computer and data science joint major, just as it is waived for a data science major pursuing a double major.

The computer science requirements (eight courses/32 points) are as follows:

- Introduction to Computer Science (CSCI-UA 101)
- Data Structures (CSCI-UA 102)
- Computer Systems Organization (CSCI-UA 201)
- Basic Algorithms (CSCI-UA 310)
- Introduction to Machine Learning (CSCI-UA 473)
- Data Management and Analysis (CSCI-UA 479)
- Big data elective: choose one of the following:
- Predictive Analytics (CSCI-UA 475)
- Processing Big Data for Analytics Applications (CSCI-UA 476)

- Computer science elective: choose one of the following:
- Operating Systems (CSCI-UA 202)
- Predictive Analytics (CSCI-UA 475)
- Processing Big Data for Analytics Applications (CSCI-UA 476)
- Special Topics: Computer Networks (CSCI-UA 480)
- Special Topics: Introduction to Numerical Optimization (CSCI-UA 480)
- Special Topics: Introduction to Social Networking (CSCI-UA 480)
- Special Topics: Natural Language Processing (CSCI-UA 480)
- Special Topics: Parallel Computing (CSCI-UA 480)

The data science requirements (five courses/20 points) are as follows:

- Data Science for Everyone (DS-UA 111)
- Introduction to Data Science (DS-UA 112)
- Causal Inference (DS-UA 201)
- Responsible Data Science (DS-UA 202)
- Advanced Topics in Data Science (DS-UA 301)

The mathematics requirements (five courses/20 points) are as follows:

- Discrete Mathematics (MATH-UA 120)
- Calculus I (MATH-UA 121) or Mathematics for Economics I (MATH-UA 211)
- Calculus II (MATH-UA 122) or Mathematics for Economics II (MATH-UA 212)
- Linear Algebra (MATH-UA 140) or Honors Linear Algebra (MATH-UA 148)
- Probability and Statistics (MATH-UA 235)

## Joint Major in Computer Science and Mathematics

The prerequisite for declaring this major is completion of either CSCI-UA 101 or 102 (depending on placement) with a C or better. This is an interdisciplinary major (eighteen courses/72 points) offered by the Department of Computer Science with the Department of Mathematics. A grade of C or better is necessary in all courses used to fulfill joint major requirements. Interested students should consult with the director of undergraduate studies in both departments for additional information.

The mathematics requirements (ten courses/40 points) are as follows (students must choose one calculus track or the other and cannot mix courses from the two tracks):

- Discrete Mathematics (MATH-UA 120)
- Calculus I (MATH-UA 121) or Mathematics for Economics I (MATH-UA 211)
- Calculus II (MATH-UA 122) or Mathematics for Economics II (MATH-UA 212)
- Calculus III (MATH-UA 123) or Honors Calculus III (MATH-UA 129) or Mathematics for Economics III (MATH-UA 213)
- Linear Algebra (MATH-UA 140) or Honors Linear Algebra (MATH-UA 148)
- Analysis (MATH-UA 325) or Honors Analysis I (MATH-UA 328)
- Algebra (MATH-UA 343) or Honors Algebra I (MATH-UA 348)

The remaining three mathematics courses must include two of the following: Theory of Probability (MATH-UA 233) or Honors Theory of Probability (MATH-UA 238); Mathematical Statistics (MATH-UA 234), Combinatorics (MATH-UA 240), Theory Of Numbers (MATH-UA 248), Mathematical Modeling (MATH-UA 251), Numerical Analysis (MATH-UA 252), Ordinary Differential Equations (MATH-UA 262), Partial Differential Equations (MATH-UA 263), Chaos And Dynamical Systems (MATH-UA 264), Functions of a Complex Variable (MATH-UA 282), Honors Analysis II (MATH-UA 329), Honors Algebra II (MATH-UA 349), Topology (MATH-UA 375), Differential Geometry (MATH-UA 377), Honors I (MATH-UA 393), Honors II (MATH-UA 394), Honors III (MATH-UA 397) or Honors IV (MATH-UA 398). Note that if MATH-UA 235 is taken, then MATH-UA 233 or MATH-UA 238 and/or MATH-UA 234 may not be counted toward the major requirements; also note that if MATH-UA 233 or MATH-UA 238 and/or 234 is taken, then MATH-UA 235 may not be counted toward the major requirements.

All mathematics electives for the joint major must be numbered above MATH-UA 120 or higher.

The computer science requirements (eight courses/32 points) are as follows:

- Introduction to Computer Science (CSCI-UA 101)
- Data Structures (CSCI-UA 102)
- Computer Systems Organization (CSCI-UA 201)
- Operating Systems (CSCI-UA 202)
- Basic Algorithms (CSCI-UA 310)
- Numerical Computing (CSCI-UA 421)
- Two computer science electives at the 400 level

Students who have taken Numerical Analysis (MATH-UA 252) as one of their math electives for this major must contact the director of undergraduate studies before registering for Numerical Computing (CSCI-UA 421).

## Joint Major in Economics and Computer Science

The prerequisite for declaring this major is completion of either CSCI-UA 101 or 102 (depending on placement) with a C or better. This is an interdisciplinary major (twenty-two courses/88 points) offered by the Department of Computer Science with the Department of Economics. Only those students that are following the theory track in economics are eligible to pursue this joint major. The major has requirements in three departments, including mathematics. A grade of C or better is necessary in all courses used to fulfill joint major requirements. Interested students should consult with the director of undergraduate studies in both departments for additional information.

The economics requirements (nine courses/36 points) are as follows:

- Introduction to Macroeconomics (ECON-UA 1)
- Introduction to Microeconomics (ECON-UA 2)
- Microeconomics (ECON-UA 11)
- Macroeconomics (ECON-UA 13)
- Analytical Statistics (ECON-UA 20) or Mathematical Statistics (MATH-UA 234); students taking the MATH-UA 234 option must complete one additional ECON-UA elective (two total).
- Introduction to Econometrics (ECON-UA 266)
- Two ECON-UA theory electives at the 300 level
- One additional ECON-UA elective

The computer science requirements (nine courses/36 points) are as follows:

- Introduction to Computer Science (CSCI-UA 101)
- Data Structures (CSCI-UA 102)
- Computer Systems Organization (CSCI-UA 201)
- Operating Systems (CSCI-UA 202)
- Basic Algorithms (CSCI-UA 310)
- Plus four computer science electives at the 400 level. One of these electives may be replaced by Linear Algebra (MATH-UA 140), or by Strategic Decision Theory (ECON-UA 310), Advanced Micro Theory (ECON-UA 365), or Topics in Economic Theory (ECON-UA 375).

The mathematics requirements (four courses/16 points) are as follows:

- Discrete Mathematics (MATH-UA 120)
- Mathematics for Economics I (MATH-UA 211)
- Mathematics for Economics II (MATH-UA 212)
- Mathematics for Economics III (MATH-UA 213)

## Minor in Computer Science

The prerequisite for declaring this minor is completion of either CSCI-UA 101 or 102 (depending on placement) with a C or better. The requirements are these four courses (16 points) with a grade of C or better:

- Introduction to Computer Science (CSCI-UA 101)
- Data Structures (CSCI-UA 102)
- Computer Systems Organization (CSCI-UA 201)
- One CSCI-UA 400-level elective, or Operating Systems (CSCI-UA 202), or Basic Algorithms (CSCI-UA 310; requires Discrete Mathematics, MATH-UA 120).

## Minor in Web Programming and Applications

The prerequisite for declaring this minor is completion of either (1) CSCI-UA 2 or 3 (depending on placement) or (2) CSCI-UA 4 with a grade of C or better. The requirements are these four courses (16 points) with a grade of C or better:

- Introduction to Computer Programming (No Prior Experience) (CSCI-UA 2) or Introduction to Computer Programming (Limited Prior Experience) (CSCI-UA 3)
- Introduction to Web Design and Computer Principles (CSCI-UA 4)
- Web Development and Programming (CSCI-UA 61)
- Any more advanced course in this department for which a student meets the prerequisites. For example: Topics of General Computing Interest (CSCI-UA 380), Programming Tools for the Data Scientist (CSCI-UA 381), or Introduction to Computer Science (CSCI-UA 101).

## Joint Minor in Computer Science and Mathematics

The prerequisite for declaring this minor is completion of either CSCI-UA 101 or 102 (depending on placement) with a C or better. The requirements are these four courses (16 points) with a grade of C or better:

- Calculus I and II (MATH-UA 121, 122), or Mathematics for Economics I and II (MATH-UA 211, 212). Students must choose one calculus track or the other and cannot mix courses from the two tracks.
- Introduction to Computer Science (CSCI-UA 101)
- Data Structures (CSCI-UA 102)

A grade of C or better is required for courses to count toward the minor. Courses taken under the Pass/Fail option are not counted toward the minor.

Students who wish to double-count courses for the math portion of the minor and another requirement may count at most two such courses toward the minor. At least two of the courses in total and at least one of the math courses must be taken in residence at New York University.

## Joint B.S./B.S. Program with the NYU Tandon School of Engineering

The department offers CAS students a dual five-year B.S./B.S. program with the NYU Tandon School of Engineering. Students in the program receive the B.S. degree in computer science from CAS and the B.S. degree in computer engineering or electrical engineering from NYU Tandon. For further information visit *http://cas.nyu.edu/engineering.html* or visit the College Advising Center; Silver Center, Room 905; 212-998-8160.

## Honors Program

A degree in computer science is awarded with honors to selected majors who successfully complete the requirements of the honors program. The requirements (fifteen courses/60 points) include the following computer science courses: CSCI-UA 101, CSCI-UA 102, CSCI-UA 201, CSCI-UA 202, CSCI-UA 310, CSCI-UA 421, and CSCI-UA 453; two semesters of Independent Research (CSCI-UA 520 and 521); two advanced computer science electives at the 400 level; and the following mathematics courses: MATH-UA 120, MATH-UA 121 or 211, MATH-UA 122 or 212 (students must choose one calculus track or the other to follow and cannot mix courses from the two tracks), and MATH-UA 140. Note that students who have taken Numerical Analysis (MATH-UA 252) must contact the director of undergraduate studies before registering for Numerical Computing (CSCI-UA 421).

Research work must culminate in a thesis (typically 40 to 60 pages in length) to be presented at the College's Undergraduate Research Conference, held every April. An overall and major GPA of 3.65 is required.

## Joint Honors Programs in Computer Science/Mathematics and Economics/Computer Science

The prerequisite for declaring either major is completion of either CSCI-UA 101 or 102 (depending on placement) with a C or better. Information on honors programs in the joint computer science/mathematics and economics/computer science majors can be found on the department's website, as well as in the economics and mathematics sections of this Bulletin.

## Computer Facilities

The Department of Computer Science has access to a variety of computers for both research and instructional use. The primary platforms for instructional use are PC and Mac. Upper-level courses may also use Linux workstations and servers and High-Performance Computing resources. Most instructional facilities are operated by NYU Information Technology Services (ITS), and students should visit the ITS website for complete information on services, hours of operation, and conditions of access.

The Department of Computer Science also has its own network of Windows and Linux workstations, used primarily for research purposes. The department operates research laboratories for experimental computer science research in machine learning, natural language processing, systems and networks, theory and cryptography, formal networks and verification, and computer graphics; most are located at 60 Fifth Avenue. Selected undergraduates assist in work on these areas at this facility.