Computer Science (CSCI-SHU)
CSCI-SHU 11 Introduction to Computer Programming (4 Credits)
Typically offered Fall and Spring
An introduction to the fundamentals of computer programming. Students design, write, and debug computer programs. No prior knowledge of programming is assumed. Students will learn programming using Python, a general purpose, cross-platform programming language with a clear, readable syntax. Most class periods will be part lecture, part lab as you explore ideas and put them into practice. This course is suitable for students not intending in majoring in computer science as well as for students intending to major in computer science but having no programming experience. Students with previous programming experience should instead take Introduction to Computer Science.
Prerequisite: Either placed into Calculus or at least a C in Pre-Calculus (shanghai portal students only)
Fulfillment: Core Curriculum Requirement Algorithmic Thinking; EE Required Major Courses.
Note: Students who have taken ICS in NY, Abu Dhabi, and Shanghai cannot take ICP.
Grading: Ugrd Shanghai Graded
Repeatable for additional credit: No
- SB Crse Attr: NYU Shanghai: Algorithmic Thinking
- SB Crse Attr: NYU Shanghai: Electrical and Systems Engineering Required
CSCI-SHU 101 Introduction to Computer and Data Science (4 Credits)
Typically offered Fall and Spring
This course has three goals. First, the mastering of a modern object-oriented programming language, enough to allow students to tackle real-world problems of important significance. Second, gaining an appreciation of computational thinking, a process that provides the foundations for solving real-world problems. Finally, providing an overview of the very diverse and exciting field of computer science - a field which, arguably more than any other, impacts how we work, live, and play today.
Prerequisite: Introduction to Computer Programming or placement exam.
Equivalency: This course counts for CSCI-UA 101.
Fulfillment: Core Curriculum Requirement Algorithmic Thinking; Computer Science Major Required Courses; Computer Systems Engineering Major Required Courses; Data Science Major Foundational Courses; Electrical and Systems Engineering Major Required Major Courses.
Grading: Ugrd Shanghai Graded
Repeatable for additional credit: No
- SB Crse Attr: NYU Shanghai: Algorithmic Thinking
- SB Crse Attr: NYU Shanghai: Computer Science Required
- SB Crse Attr: NYU Shanghai: Computer Systems Engineering Required
- SB Crse Attr: NYU Shanghai: Data Science Foundational
- SB Crse Attr: NYU Shanghai: Electrical and Systems Engineering Required
CSCI-SHU 188 Introduction to Computer Music (4 Credits)
Typically offered occasionally
Computers are used to process signals, compose music, and perform with humans. Personal computers have replaced studios full of sound recording and processing equipment, completing a revolution that began with recording and electronics. In this course, students will learn the fundamentals of digital audio, basic sound synthesis algorithms, techniques for human-computer music interaction, and machine learning algorithms for media generation. In a final project, students will demonstrate their mastery of tools and techniques through a publicly performed music composition.
Prerequisites:ICP OR ICS (best to have some experience in Music, or check with the instructor before enrolling)
Fulfillment: Computer Science Major Electives.
Grading: Ugrd Shanghai Graded
Repeatable for additional credit: No
- SB Crse Attr: NYU Shanghai: Computer Science Elective
CSCI-SHU 200 Topics in Human-Computer Interaction (4 Credits)
Typically offered every year
Human-Computer Interaction (HCI) is a rapidly expanding area of
research and development that has transformed the way we use computers over the past forty years. Topics in Computer Science is an advanced-level course designed to provide students with an opportunity to explore specialized areas within the field of HCI. The course covers a range of topics, each focusing on advanced concepts, emerging technologies, or specialized subfields such as mobile interaction, augmented reality, multi-touch interaction, tangible interaction, ubiquitous computing, and more. The course content is adapted to the expertise and research interests of the current instructor, ensuring a relevant and up-to-date curriculum. Throughout the course, students will delve into a specific topic within HCI, addressing both practical and theoretical aspects. Learning will be facilitated through lectures, hands-on assignments, reading materials, and discussions.
Prerequisite: CSCI-SHU 101 Introduction to Computer Science
Grading: Ugrd Shanghai Graded
Repeatable for additional credit: No
CSCI-SHU 210 Data Structures (4 Credits)
Typically offered Fall and Spring
Data structures are fundamental programming constructs which organize information in computer memory to solve challenging real-world problems. Data structures such as stacks, queues, linked lists, and binary trees, therefore constitute building blocks that can be reused, extended, and combined in order to make powerful programs. This course teaches how to implement them in a high-level language, how to analyze their effect on algorithm efficiency, and how to modify them to write computer programs that solve complex problems in a most efficient way. Programming assignments.
Prerequisite: ICS or A- in ICP.
Equivalency: This course counts for CSCI-UA 102 Data Structures (NY).
Fulfillment: CS Required, Data Science Required, CE Required.
Grading: Ugrd Shanghai Graded
Repeatable for additional credit: No
- SB Crse Attr: NYU Shanghai: Computer Science Required
- SB Crse Attr: NYU Shanghai: Computer Systems Engineering Required
- SB Crse Attr: NYU Shanghai: Data Science Required Programming Comp Science
CSCI-SHU 213 Databases (4 Credits)
Typically offered occasionally
The course covers modeling an application and logical database design, the relational model and relational data definition and data manipulation languages, design of relational databases and normalization theory, physical database design, query processing and optimization, transaction processing focusing on concurrency and recovery. The labs emphasize experiential learning of database systems and applications and an insight into various database management systems and query languages.
Prerequisite: CSCI-SHU 210 Data Structures.
Fulfillment: Computer Science Major Electives; Data Science Major Required Data Management Courses; Computer Systems Engineering elective.
Grading: Ugrd Shanghai Graded
Repeatable for additional credit: No
- SB Crse Attr: NYU Shanghai: Computer Science Elective
- SB Crse Attr: NYU Shanghai: Computer Systems Engineering Elective
- SB Crse Attr: NYU Shanghai: Data Science Required Data Management
CSCI-SHU 215 Operating Systems (4 Credits)
Typically offered Fall
Covers the principles and design of operating systems. Topics include process scheduling and synchronization, deadlocks, memory management (including virtual memory), input-output, and file systems. Programming assignments.
Prerequisite: CENG-SHU 202 Computer Architecture or CSCI-UA 201 Computer Systems Organization.
Fulfillment: Computer Science Major Required Courses; Computer Systems Engineering Major Elective; Data Science Major Courses for Concentration in Computer Science.
Grading: Ugrd Shanghai Graded
Repeatable for additional credit: No
- SB Crse Attr: NYU Shanghai: Computer Science Required
- SB Crse Attr: NYU Shanghai: Computer Systems Engineering Elective
CSCI-SHU 220 Algorithms (4 Credits)
Typically offered Spring
Introduction to the study of algorithms. Presents two main themes: designing appropriate data structures and analyzing the efficiency of the algorithms that use them. Algorithms studied include sorting, searching, graph algorithms, and maintaining dynamic data structures. Homework assignments, not necessarily involving programming.
Prerequisites: Data Structures AND (Discrete Math OR Linear Algebra OR Honors Linear Algebra)
Fulfillment: CS Required, Data Science Data Analysis/Concentration in Computer Science/AI.
Grading: Ugrd Shanghai Graded
Repeatable for additional credit: No
- SB Crse Attr: NYU Shanghai: Computer Science Required
- SB Crse Attr: NYU Shanghai: Data Science Elective Concentration in AI
- SB Crse Attr: NYU Shanghai: Data Science Required Data Analysis
CSCI-SHU 222 Introduction to Game Programming (4 Credits)
Typically offered occasionally
A programming intensive introduction to the creation of computer games. Using mostly two-dimensional sprite-based programming, we examine and experiment with animation, physics, artificial intelligence and audio. In addition, the course explores the mathematics of transformations (both 2D and 3D) and the ways they may be represented.
Prerequisite: Data Structures OR CS-UY 2134 (Data Structures and Algorithms) OR ICS with Instructor Permission.
Fulfillment: CS Electives.
Grading: Ugrd Shanghai Graded
Repeatable for additional credit: No
- SB Crse Attr: NYU Shanghai: Computer Science Elective
CSCI-SHU 254 Distributed Systems (4 Credits)
Typically offered Spring
This course offers a solid grounding in the basic issues and techniques of parallel and distributed computing. The material covers the spectrum from theoretical models of parallel and distributed systems to actual programming assignments.
Pre-requisite: CSCI-SHU 215 Operating Systems
Fulfillment: CS elective; CE elective.
Grading: Ugrd Shanghai Graded
Repeatable for additional credit: No
- SB Crse Attr: NYU Shanghai: Computer Science Elective
- SB Crse Attr: NYU Shanghai: Computer Systems Engineering Elective
CSCI-SHU 308 Computer Networking (4 Credits)
Typically offered occasionally
This course takes a top-down approach to computer networking. After an overview of computer networks and the Internet, the course covers the application layer, transport layer, network layer and link layers. Topics at the application layer include client-server architectures, P2P architectures, DNS and HTTP and Web applications. Topics at the transport layer include multiplexing, connectionless transport and UDP, principles or reliable data transfer, connection-oriented transport and TCP and TCP congestion control. Topics at the network layer include forwarding, router architecture, the IP protocol and routing protocols including OSPF and BGP. Topics at the link layer include multiple-access protocols, ALOHA, CSMA/CD, Ethernet, CSMA/CA, wireless 802.11 networks and link layer switches. The course includes simple quantitative delay and throughput modeling, socket programming and network application development and Ethereal labs. Prerequisite: CSCI-SHU 101 or placement test.
Fulfillment: CS Electives, CE Electives, EE Additional Electives.
Grading: Ugrd Shanghai Graded
Repeatable for additional credit: No
- SB Crse Attr: NYU Shanghai: Computer Science Elective
- SB Crse Attr: NYU Shanghai: Computer Systems Engineering Elective
- SB Crse Attr: NYU Shanghai: Electrical and Systems Engineering Elective
CSCI-SHU 311 Functional Programming (4 Credits)
Functional Programming is a very powerful and expressive style of programming which has become extremely popular in the recent years, both in academia and in the software industry. There are good reasons for this success: functional programs are modular by design, and interact through expressive and cleanly specified interfaces, using static typing and pattern matching. As a result, functional programs are generally simpler to reason about, to maintain and to execute in parallel than imperative or object-oriented programs. The purpose of the course will be to provide an advanced introduction to Haskell, a purely functional language used today in the software industry for real-world applications. The language comes with a rigorous semantics and everything one could expect of a functional programming language: static type inference, lazy evaluation, type classes, explicit handling of effects using monads, and concurrency primitives and abstractions. We will take the opportunity of this course on Haskell to cover elements of formal language theory, with the implementation in Haskell of a parser, pretty-printer and interpreter for a small imperative language.
Prereq: CSCI-SHU 2314 Discrete Math and CSCI-SHU 210 Data Structures
Fulfillment: CS elective.
Grading: Ugrd Shanghai Graded
Repeatable for additional credit: No
- SB Crse Attr: NYU Shanghai: Computer Science Elective
CSCI-SHU 350 Embedded Computer Systems (4 Credits)
Typically offered occasionally
An embedded system is a computer system with a dedicated function within a larger mechanical or electrical system, often with real-time computing constraints. It is embedded as part of a complete device often including hardware and mechanical parts. Embedded systems control many devices in common use today. Topics covered include microcontroller architecture, assembler programming, interrupts, peripheral interfacing, embedded system design, higher-level languages on embedded Systems, as well as a brief introduction to real-time operating systems. Practical Lab Exercises complement the lectures. The students will further specialize and consolidate their knowledge through semester-long hands-on projects.
Prerequisite: ( CSCI-SHU 11 or CSCI-SHU 101 ) AND (CENG-SHU 202 or CENG-SHU 201).
Fulfillment: CS elective; CE Required, EE Additional Electives.
Grading: Ugrd Shanghai Graded
Repeatable for additional credit: No
- SB Crse Attr: NYU Shanghai: Computer Science Elective
- SB Crse Attr: NYU Shanghai: Computer Systems Engineering Required
- SB Crse Attr: NYU Shanghai: Electrical and Systems Engineering Elective
CSCI-SHU 360 Machine Learning (4 Credits)
Typically offered Spring
In this class, students will learn about the theoretical foundations of machine learning and how to apply these to solve real-world data-driven problems. We will apply machine learning to numerical, textual, and image data. Topics will be drawn from perceptron algorithm, regression, gradient descent and stochastic gradient descent, support vector machines, kernels for support vector machines, recommendation systems, decision trees and random forests, maximum likelihood, estimation, logistic regression, neural networks and the back propagation algorithm, convolutional neural networks, recurrent neural networks, Bayesian analysis and naive Bayes, clustering, latent Dirichlet allocation (LDA), sentiment analysis, dimensionality reduction and principle component analysis, reinforcement learning.
Prerequisites: Introduction to Computer Programming, Calculus, and (Probability and Statistics OR Theory of Probability OR Statistics for Business & Economics).
Fulfillment: Business Analytics Track; Computer Science Electives; Data Science Major Data Analysis Courses.
Grading: Ugrd Shanghai Graded
Repeatable for additional credit: No
- SB Crse Attr: NYU Shanghai: Computer Science Elective
- SB Crse Attr: NYU Shanghai: Data Science Required Data Analysis
CSCI-SHU 361 Computer Security (4 Credits)
Typically offered every year
This class provides a firm grounding in computer security concepts and basics. Students learn about threat modeling, principles of secure design, security policies, access control technologies, and similar topics.
Prerequisite: CSCI-SHU 215 Operating Systems OR
Prerequisite: CENG-SHU 202 Computer Architecture or CSCI-UA 201 Computer Systems Organization and Co-requisite: CSCI-SHU 215 Operating Systems
Fulfillment: CS, CE, EE elective.
Grading: Ugrd Shanghai Graded
Repeatable for additional credit: No
- SB Crse Attr: NYU Shanghai: Computer Science Elective
- SB Crse Attr: NYU Shanghai: Computer Systems Engineering Elective
- SB Crse Attr: NYU Shanghai: Electrical and Systems Engineering Elective
CSCI-SHU 375 Reinforcement Learning (4 Credits)
Typically offered occasionally
Prerequisite: Machine Learning AND (Probability and Statistics OR Theory of Probability).
Fulfillment: Computer Science Major Electives; Data Science Major Courses for Concentration in Artificial Intelligence.
Grading: Ugrd Shanghai Graded
Repeatable for additional credit: No
- SB Crse Attr: NYU Shanghai: Computer Science Elective
- SB Crse Attr: NYU Shanghai: Data Science Elective Concentration in AI
CSCI-SHU 376 Natural Language Processing (4 Credits)
Natural language processing (NLP), a form of artificial intelligence (AI) that gives computers the ability to read, understand and interpret human languages, is one of the most important technologies that have made significant progress recently. NLP has been applied to many areas such as spoken dialogue system, machine translation, question and answering, machine reading, document summarization, and even music generation. Traditional NLP approaches involve rules that are handcrafted by linguists. On the other hand, modern NLP approaches are data-driven, trying to learn a model to minimize a target loss function over labeled or unlabeled training text. The course will cover various NLP techniques such as text classification, sequence classification, parse trees, and sequence-to-sequence generation from statistical or deep learning perspectives. Students will be expected to derive mathematical formulas, and code and tune NLP algorithms on datasets in homework assignments.
Prerequisite: CSCI-SHU 101 Introduction to Computer Programming and (CSCI-SHU 360 Marchine Learning or MATH-SHU 235 Probability and Statistic or MATH-SHU 238 Theory of Probability)
Fulfillment: CS elective; DS AI concentration.
Grading: Ugrd Shanghai Graded
Repeatable for additional credit: No
- SB Crse Attr: NYU Shanghai: Computer Science Elective
- SB Crse Attr: NYU Shanghai: Data Science Elective Concentration in AI
CSCI-SHU 378 Introduction to Cryptography (4 Credits)
Typically offered occasionally
The study of modern cryptography investigates mathematical techniques for securing information, systems and distributed computations against adversarial attacks. We introduce fundamental concepts of this study. Emphasis will be placed on rigorous proofs of security based on precise definitions and assumptions. Topics include: one-way functions, encryption, signatures, pseudorandom number generators and zero-knowledge proofs.
Prerequisite: Algorithms, theory of probability, or permission of the instructor.
Fulfillment: Mathematics Additional Electives; Honors Mathematics Electives; CS Electives.
Grading: Ugrd Shanghai Graded
Repeatable for additional credit: No
- SB Crse Attr: NYU Shanghai: Computer Science Elective
- SB Crse Attr: NYU Shanghai: Honors Mathematics Math Elective
- SB Crse Attr: NYU Shanghai: Mathematics Additional Mathematics Elective
CSCI-SHU 381 Recommendation Systems (4 Credits)
Typically offered every year
This course aims to introduce to the students theoretical and practical knowledge of recommendation systems, including classic and state-of-the-art recommendation algorithms, evaluation metrics, as well as the importance of various user interaction data. During the course, we will discuss the emerging social and technical challenges that modern recommendation systems face. At the end of the semester, students are expected to conduct a final project using the knowledge gained from this course in the form of a written technical report and an in-class oral presentation.
Prerequisite: Machine Learning AND (Prob and Stats OR Stats for Bus and Econ OR Theory of Probability)
Fulfillment: CS elective; DS Concentration in AI.
Grading: Ugrd Shanghai Graded
Repeatable for additional credit: No
- SB Crse Attr: NYU Shanghai: Computer Science Elective
- SB Crse Attr: NYU Shanghai: Data Science Elective Concentration in AI
CSCI-SHU 410 Software Engineering (4 Credits)
Typically offered occasionally
An intense hands-on study of practical techniques and methods of software engineering. Topics include: advanced object-oriented design, design patterns, refactoring, code optimization, universal modeling language, threading, user interface design, enterprise application development and development tools. All topics are integrated and applied during the semester-long group project. The aim of the project is to prepare students for dynamics in a real workplace. Members of the group will meet on a regular basis to discuss the project and to assign individual tasks. Students will be judged primarily on the final project presentations.
Prerequisites: Intro to Computer Science.
Fulfillment: CS Electives.
Grading: Ugrd Shanghai Graded
Repeatable for additional credit: No
- SB Crse Attr: NYU Shanghai: Computer Science Elective
CSCI-SHU 420 Computer Science Senior Project (4 Credits)
Typically offered Fall
The purpose of the Senior Project is for the students to apply the theoretical knowledge they acquired during the Computer Science program to a concrete project in a realistic setting. During the semester, students engage in the entire process of solving a real-world computer science project. It requires students to pursue a long-term, mentored learning experience that culminates in a piece of original work. At the end of the semester, the proposed work comes to fruition in the form of a working software prototype, a written technical report, and an oral presentation at a capstone project symposium.
Prerequisite: senior standing.
Fulfillment: CS Required.
Grading: Ugrd Shanghai Graded
Repeatable for additional credit: No
- SB Crse Attr: NYU Shanghai: Computer Science Required
CSCI-SHU 997 Computer Science Independent Study (2-4 Credits)
Typically offered occasionally
Prerequisite: permission of the department. 2-4 credits Students majoring in computer science are permitted to work on an individual basis under the supervision of a full-time faculty member in the department if they have maintained an overall GPA of 3.0 and a GPA of 3.5 in computer science and have a study proposal that is approved by a computer science professor. Students are expected to spend about two to three hours a week per credit (a 4-credit IS would involve about ten to twelve hours a week) on their project.
Fulfillment: Computer Science Major Electives.
Grading: Ugrd Shanghai Graded
Repeatable for additional credit: Yes
- SB Crse Attr: NYU Shanghai: Computer Science Elective
CSCI-SHU 2314 Discrete Mathematics (4 Credits)
Typically offered Fall and Spring
This course is an introduction to discrete mathematics, emphasizing proof and abstraction, as well as applications to the computational sciences. Topics include sets, relations, and functions, graphs and trees, algorithms, proof techniques, and order of magnitude analysis, Boolean algebra and combinatorial circuits, formal logic and languages, automata, and combinatorics, probability, and statistics.
Co-requisite OR Pre-requisite: MATH-SHU 131 or MATH-SHU 201.
Equivalent to MATH-UA 120.
Fulfillment: MATH Additional Mathematics Electives, CS Required, Data Science Concentration in CS.
Grading: Ugrd Shanghai Graded
Repeatable for additional credit: No
- SB Crse Attr: NYU Shanghai: Computer Science Required
- SB Crse Attr: NYU Shanghai: Mathematics Additional Mathematics Elective