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 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 50  The Design Sprint: Modern Aging and the Future of Health in China  (4 Credits)  
Typically offered occasionally  
This course investigates the wicked problem of Shanghai's aging population using the research sprint and design sprint methodology developed at Google Ventures. This course is done in partnership with AccessHealth and taps into leading university research and technologies from around the world. This highly focused initiative offers students the opportunity to have a global impact on aging populations. Simultaneously, immerse themselves in the history and culture of Shanghai and Mainland China. This course culminates in a presentation to a panel of experts who will award funding to those proposals they believe are most likely to succeed. Students of all disciplines and interests should take this course to learn to materialize equilibrium-shifting ideas better and faster. Prerequisites: None Fulfillment: IMA/IMB elective
Grading: Ugrd Shanghai Graded  
Repeatable for additional credit: No  
  • SB Crse Attr: NYU Shanghai: IMA Elective
  • SB Crse Attr: NYU Shanghai: IMB Interactive Media Arts/Business Elective
  
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 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 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 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 370  Object-Oriented Programming  (4 Credits)  
Typically offered occasionally  
Object-oriented programming has emerged as a significant software development methodology. This course introduces the important concepts of object-oriented design and languages, including code reuse, data abstraction, inheritance, and dynamic overloading. Covers in depth those features of Java and C++ that support object-oriented programming and gives an overview of other object-oriented languages of interest. Significant programming assignments stressing object-oriented design. Prerequisite: CSCI-SHU 210. Fulfillment: CS elective.
Grading: Ugrd Shanghai Graded  
Repeatable for additional credit: No  
  • SB Crse Attr: NYU Shanghai: Computer Science 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
  
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: (1) Machine learning; (2) Probability and Statistics or 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
  
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
  
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