Computer Science, MS

On Campus


We offer a highly adaptive MS in Computer Science program that lets you shape the degree around your interests. Besides our core curriculum in the fundamentals of computer science, you have a wealth of electives to choose from. You can focus on such topics as computer and network security, distributed systems and networking, computer graphics, and web search technology, along with subjects outside the department.

Job opportunities in computer science are challenging and diverse, and we expect to see steady demand for highly qualified graduates at all levels. As a graduate, you can explore a number of possible occupations, including applications programmer, database manager, systems administrator, or IT analyst.

With our MS program in Computer Science, you will have maximum curriculum flexibility, allowing you to adapt your program to your ambitions and goals as well as to your educational and professional backgrounds. Not only will you gain a solid grounding in the fundamentals of computer science, but professional-level courses, and an opportunity to specialize in selected technology areas of your choice.

Admissions Requirements

Admission to this program requires you to have an undergraduate degree in computer sciencemathematicsscience, or engineering, with a superior undergraduate record from an accredited institution. Applicants with degrees in other fields are considered individually for admission. 


  • At least 1 year of university-level science.
  • A working knowledge of a high-level, general-purpose programming language (preferably C++).
  • A basic understanding of computer fundamentals such as computer organization and operation, data structures, and computer architecture.
  • Demonstrated ability to communicate in written and spoken English is required for regular status (see below). Foreign students and others for whom English is a second language may be required to undertake preparatory work to improve their language skills.

Students entering with a bachelor’s in computer science or with a bachelor’s in a technical area and a strong minor in computer science should be able to satisfy entrance requirements for the master’s degree program. Generally, entering students are expected to know mathematics through calculus.

Students who are lacking the computer science skills needed for the Computer Science Master's Degree are encouraged to enroll into the preparatory Bridge to NYU Tandon program. Pending satisfactory completion, students would be considered for admission towards the master's degree program. 

Admission with advanced standing is accepted in accordance with the School of Engineering regulations. A maximum of 9 credits may be applied to the MS degree from previous graduate work at an acceptable institution.


Applicants who satisfy one of the following conditions are not required but encouraged to submit a GRE score:

  1. Applicant has successfully completed the Bridge to Tandon program with a B+ or better.
  2. Applicant completes 9 credits under Visiting Student Registration from an approved list of CSE courses and maintains an average grade of B+ or better.
  3. Applicant has a BA or BS degree in computer science or computer engineering from NYU, with a GPA of 3.0 or higher.

Students who are lacking the computer science skills needed for the Computer Science Master's Degree are encouraged to enroll into the preparatory Bridge to NYU Tandon program. Pending satisfactory completion, students would be considered for admission towards the master's degree program.


Curriculum

To satisfy the requirements for the master’s degree, the student must complete 30 credits, as described below, with an overall average of B. In addition, a B average is required across the required algorithms course and the four core courses, and a grade of B or better is required for the capstone course, as indicated below. The master’s curriculum has four components: 3 credits of algorithms, 12 credits of core elective courses (one of which may also count as the capstone course), one 3 credit capstone course, and 12 credits of general elective courses. 


Students are required to take CS-GY 6033 Design & Analysis of Algorithms I or CS-GY 6043 Design & Analysis of Algorithms II.  Most students will take the Algorithms I course to satisfy the algorithms course requirement. Advanced students who have taken an equivalent Algorithms I course before with a grade of B or better will have the option of taking the Algorithms II course to satisfy the requirement.


Students must take at least four courses from the list of core courses below. The list will be periodically updated by the CSE Department and certain courses may be substituted with departmental consent.

3 Credits Software Engineering I CS-GY6063
The course emphasizes the full software-engineering approach with alternative approaches. Technical emphasis is on requirements, design, development and modeling. Management issues include software cost estimating and project management. Understanding the processes applicable to the software development/integration cycle and maintenance along with technology changes on quality and development activities is highlighted.
Prerequisite: Graduate standing.
3 Credits Principles of Database Systems CS-GY6083
This course broadly introduces database systems, including the relational data model, query languages, database design, index and file structures, query processing and optimization, concurrency and recovery, transaction management and database design. Students acquire hands-on experience in working with database systems and in building web-accessible database applications.
Prerequisites: Graduate standing, CS-GY 6003 or equivalent, familiarity with basic data structures and operating system principles.
3 Credits Computer Architecture I CS-GY6133
Computer architecture design: Instruction set design techniques, performance and cost; Extensions to traditional instruction sets. An instruction set studied in detail. Processor implementations: Unpipelined execution and its improvement by means of pipelining. Advanced pipelining, including branch prediction, out-of-order execution and superscalar execution, is introduced. Alternatives to traditional computing, such as VLIW and vector computation are described. Improving computer capacity, by improving the memory hierarchy is studied, including advanced cache memory, main memory and virtual memory implementations. An introduction to high-performance computing, including multi-core processors.
Prerequisite: CS-UY 2214 and Graduate standing.
3 Credits Introduction to Operating Systems CS-GY6233
This course introduces basic issues in operating systems. Topics: Threads, processes, concurrency, memory management, I/O Control and case studies.
Prerequisite: Graduate standing.
3 Credits Information Visualization CS-GY6313
An introductory course on Information Visualization based on a modern and cohesive view of the area. Topics include visualization design, data principles, visual encoding principles, interaction principles, single/multiple view methods, item/attribute, attribute reduction methods, toolkits, and evaluation. Overviews and examples from state-of-the-art research will be provided. The course is designed as a first course in information visualization for students both intending to specialize in visualization as well as students who are interested in understanding and applying visualization principles and existing techniques.
3 Credits Programming Languages CS-GY6373
This course covers the structures, notations and semantics of programming languages. Topics: Issues of scope, type structure and parameter passing. Control structures, including support for exception handling and concurrency. Abstract data types and object oriented languages. Programming in the large. Implementation issues. Functional, logic programming languages. Examples from a variety of languages.
Prerequisites: Graduate standing and CS-GY 5403.
3 Credits Interactive Computer Graphics CS-GY6533
This course introduces the fundamentals of computer graphics with hands-on graphics programming experiences. Topics include graphics software and hardware, 2D line segment-scan conversion, 2D and 3D transformations, viewing, clipping, polygon-scan conversion, hidden surface removal, illumination and shading, compositing, texture mapping, ray tracing, radiosity and scientific visualization.
Prerequisites: Graduate standing, CS-GY 5403 (Data Structures) or equivalents and knowledge of C or C++ programming.
3 Credits Artificial Intelligence I CS-GY6613
Artificial Intelligence (AI) is an important topic in computer science and offers many diversified applications. It addresses one of the ultimate puzzles humans are trying to solve: How is it possible for a slow, tiny brain, whether biological or electronic, to perceive, understand, predict and manipulate a world far larger and more complicated than itself? And how do people create a machine (or computer) with those properties? To that end, AI researchers try to understand how seeing, learning, remembering and reasoning can, or should, be done. This course introduces students to the many AI concepts and techniques.
Prerequisite: Graduate standing and CS-GY 5403.
3 Credits Computer Vision and Scene Analysis CS-GY6643
An important goal of artificial intelligence is to equip computers with the capability to interpret visual inputs. Computer vision and scene analysis is an AI area that deals with constructing explicit, meaningful descriptions of physical objects from images. It includes many techniques from image processing, pattern recognition, geometric modeling and cognitive processing. This course introduces the many techniques and applications of computer vision and scene analysis.
Prerequisites: Graduate standing, CS-GY 5403 and MA-UY 2012, or equivalents, or instructor’s permission.
3 Credits Information, Security and Privacy CS-GY6813
This course introduces Information Systems Security and covers cryptography, capability and access control mechanisms, authentication models, security models, operating systems security, malicious code, security-policy formation and enforcement, vulnerability analysis, evaluating secure systems.
Prerequisite: Competency in Application Development in UNIX and Windows Environments, Graduate status. *Online version available.
3 Credits Computer Networking CS-GY6843
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 linklayer switches. The course includes simple quantitative delay and throughput modeling, socket programming and network application development and Ethereal labs.
Prerequisite: Graduate standing and CS-UY 2134.
3 Credits Machine Learning CS-GY6923
This course introduces the field of machine learning and covers standard machine-learning techniques, such as decision trees, nearest neighbor, Bayesian methods, support vector machines and logistic regression. Topics: Basic concepts in computational learning theory including the PAC model and VC dimension. Methods for evaluating and comparing machine learning techniques.
3 Credits Selected Topics in CS CS-GY9223

*The CS-GY 9223 core course is: Big Data Management & Analysis.


Certain courses in our department will be designated as capstone courses. Capstone courses are drawn from key technical areas in the MS program and they involve a substantial amount of programming effort. Students are required to take at least one capstone course with a grade of B or better. The list of capstone courses will be posted by the department and will be updated from time to time. If a course is listed both as a capstone course and as a core course, the course can be used to satisfy both the capstone and core course requirements. An MS thesis can also be used to satisfy the capstone course requirement. 

3 Credits Software Engineering I CS-GY6063
The course emphasizes the full software-engineering approach with alternative approaches. Technical emphasis is on requirements, design, development and modeling. Management issues include software cost estimating and project management. Understanding the processes applicable to the software development/integration cycle and maintenance along with technology changes on quality and development activities is highlighted.
Prerequisite: Graduate standing.
3 Credits Software Engineering II CS-GY6073
The course covers modern, advanced software-engineering approaches with theory and practice orientations. Important design and management issues are analyzed and evaluated. Technical and management tradeoffs in distributed software systems are emphasized. An extensive number of real world case studies are assessed. A class project is required.
Prerequisite: CS-GY 6063 and graduate standing.
3 Credits Operating Systems II CS-GY6243
This course surveys recent important commercial and research trends in operating systems. Topics may include virtualization, network server design and characterization, scheduling and resource optimization, file systems, memory management, advanced debugging techniques, data-center design and energy utilization.
Prerequisite: Graduate standing and CS-GY 6233.
3 Credits Distributed Operating Systems CS-GY6253
This course introduces distributed-networked computer systems. Topics: Distributed control and consensus. Notions of time in distributed systems. Client/Server communications protocols. Middleware. Distributed File Systems and Services. Fault tolerance, replication and transparency. Peer-to-peer systems. Case studies of modern commercial systems and research efforts.
3 Credits Compiler Design and Construction CS-GY6413
This course covers compiler organization. Topics: Lexical analysis, syntax analysis, abstract syntax trees, symbol table organization, code generation. Introduction to code optimization techniques.
Prerequisites: CS-GY 5403, CS-GY 6133 and CS-GY 6003.
3 Credits Interactive Computer Graphics CS-GY6533
This course introduces the fundamentals of computer graphics with hands-on graphics programming experiences. Topics include graphics software and hardware, 2D line segment-scan conversion, 2D and 3D transformations, viewing, clipping, polygon-scan conversion, hidden surface removal, illumination and shading, compositing, texture mapping, ray tracing, radiosity and scientific visualization.
Prerequisites: Graduate standing, CS-GY 5403 (Data Structures) or equivalents and knowledge of C or C++ programming.
3 Credits Penetration Testing and Vulnerability Analysis CS-GY6573
This advanced course in computer and network security focuses on penetration testing and vulnerability analysis. It introduces methodologies, techniques and tools to analyze and identify vulnerabilities in stand-alone and networked applications.
Prerequisites: Graduate standing and CS-GY 6823
3 Credits Artificial Intelligence I CS-GY6613
Artificial Intelligence (AI) is an important topic in computer science and offers many diversified applications. It addresses one of the ultimate puzzles humans are trying to solve: How is it possible for a slow, tiny brain, whether biological or electronic, to perceive, understand, predict and manipulate a world far larger and more complicated than itself? And how do people create a machine (or computer) with those properties? To that end, AI researchers try to understand how seeing, learning, remembering and reasoning can, or should, be done. This course introduces students to the many AI concepts and techniques.
Prerequisite: Graduate standing and CS-GY 5403.
3 Credits Computer Vision and Scene Analysis CS-GY6643
An important goal of artificial intelligence is to equip computers with the capability to interpret visual inputs. Computer vision and scene analysis is an AI area that deals with constructing explicit, meaningful descriptions of physical objects from images. It includes many techniques from image processing, pattern recognition, geometric modeling and cognitive processing. This course introduces the many techniques and applications of computer vision and scene analysis.
Prerequisites: Graduate standing, CS-GY 5403 and MA-UY 2012, or equivalents, or instructor’s permission.
3 Credits Neural Network Computing CS-GY6673
This course introduces neural network models and their applications. Topics: Discussion of organization and learning in neural network models including perceptrons, adalines, back-propagation networks, recurrent networks, adaptive resonance theory and the neocognitron. Implementations in general and special purpose hardware, both analog and digital. Application in various areas with comparisons to nonneural approaches. Decision systems, nonlinear control, speech processing and vision.
Prerequisite: Graduate standing and CS-GY 5403. Some familiarity with matrix notation and partial derivatives is recommended.
3 Credits Network Security CS-GY6823
This course begins by covering attacks and threats in computer networks, including network mapping, port scanning, sniffing, DoS, DDoS, reflection attacks, attacks on DNS and leveraging P2P deployments for attacks. The course continues with cryptography topics most relevant to secure networking protocols. Topics covered are block ciphers, stream ciphers, public key cryptography, RSA, Diffie Hellman, certification authorities, digital signatures and message integrity. After surveying basic cryptographic techniques, the course examines several secure networking protocols, including PGP, SSL, IPsec and wireless security protocols. The course examines operational security, including firewalls and intrusion-detection systems. Students read recent research papers on network security and participate in an important lab component that includes packet sniffing, network mapping, firewalls, SSL and IPsec.
Prerequisite: Graduate standing and EL-GY 5363:* Online version available.
3 Credits Web Search Engines CS-GY6913
This course covers the basic technology underlying Web search engines and related tools. The main focus is on large-scale Web search engines (such as Google, Yahoo and MSN Search) and their underlying architectures and techniques. Students learn how search engines work and get hands-on experience in how to build search engines from the ground up. Topics are based on a reading list of recent research papers. Students must work on a course project and may have to present in class.
Prerequisite: Graduate standing
3 Credits Application Security CS-GY9163
This course addresses the design and implementation of secure applications. Concentration is on writing software programs that make it difficult for intruders to exploit security holes. The course emphasizes writing secure distributed programs in Java. The security ramifications of class, field and method visibility are emphasized.
Prerequisite: Gradute standing
3 Credits Selected Topics in CS CS-GY9223

Selected topics (CS-GY 9223) include Big Data Management & Analysis, Foundation of Data Science, and Artificial Intelligence for Games.


In addition to the core electives, students are required to take four general elective courses with considerable flexibility; the only restriction is that no more than two of the courses may be taken from outside the Department of Computer Science and Engineering. In particular:

  • Master’s thesis (6 credits) and/or independent study courses may be part of a student’s general elective courses. 
  • Any of the 13 core courses may be chosen as general electives.
  • Graduate­level courses from outside of the department (at most two) may be chosen as general electives.
  • Any CS graduate course not included in the core areas may be chosen as general electives. 

These courses include (among others):

3 Credits Foundations of Computer Science CS-GY6003
This course covers logic, sets, functions, relations, asymptotic notation, proof techniques, induction, combinatorics, discrete probability, recurrences, graphs, trees, mathematical models of computation and undecidability.
Corequisite: Graduate Standing.
3 Credits Design and Analysis of Algorithms I CS-GY6033
This course reviews basic data structures and mathematical tools. Topics: Data structures, priority queues, binary search trees, balanced search trees. Btrees. Algorithm design and analysis techniques illustrated in searching and sorting: heapsort, quicksort, sorting in linear time, medians and order statistics. Design and analysis techniques: dynamic programming, greedy algorithms. Graph algorithms: elementary graph algorithms (breadth first search, depth first search, topological sort, connected components, strongly connected components), minimum spanning tree, shortest path. String algorithms. Geometric algorithms. Linear programming. Brief introduction to NP completeness.
Prerequisites: Graduate Standing, CS-GY 5403 and CS-GY 6003.
3 Credits Design and Analysis of Algorithms II CS-GY6043
This course covers techniques in advanced design and analysis. Topics: Amortized analysis of algorithms. Advanced data structures: binomial heaps, Fibonacci heaps, data structures for disjoint sets, analysis of union by rank with path compression. Graph algorithms: elementary graph algorithms, maximum flow, matching algorithms. Randomized algorithms. Theory of NPcompleteness and approach to finding (approximate) solutions to NPcomplete problems. Selected additional topics that may vary.
Prerequisite: Graduate standing and CS-GY 6033.
3 Credits Software Engineering I CS-GY6063
The course emphasizes the full software-engineering approach with alternative approaches. Technical emphasis is on requirements, design, development and modeling. Management issues include software cost estimating and project management. Understanding the processes applicable to the software development/integration cycle and maintenance along with technology changes on quality and development activities is highlighted.
Prerequisite: Graduate standing.
3 Credits Software Engineering II CS-GY6073
The course covers modern, advanced software-engineering approaches with theory and practice orientations. Important design and management issues are analyzed and evaluated. Technical and management tradeoffs in distributed software systems are emphasized. An extensive number of real world case studies are assessed. A class project is required.
Prerequisite: CS-GY 6063 and graduate standing.
3 Credits Principles of Database Systems CS-GY6083
This course broadly introduces database systems, including the relational data model, query languages, database design, index and file structures, query processing and optimization, concurrency and recovery, transaction management and database design. Students acquire hands-on experience in working with database systems and in building web-accessible database applications.
Prerequisites: Graduate standing, CS-GY 6003 or equivalent, familiarity with basic data structures and operating system principles.
3 Credits Advanced Database Systems CS-GY6093
Students in this advanced course on database systems and data management are assumed to have a solid background in databases. The course typically covers a selection from the following topics: (1) advanced relational query processing and optimization, (2) OLAP and data warehousing, (3) data mining, (4) stream databases and other emerging database architectures and applications, (5) advanced transaction processing, (6) databases and the Web: text, search and semistructured data, or (7) geographic information systems. Topics are taught based on a reading list of selected research papers. Students work on a course project and may have to present in class.
Prerequisites: CS-GY 6083 or CS-UY 308 or equivalent, including experience with a relational database system and graduate standing.
3 Credits Computer Architecture I CS-GY6133
Computer architecture design: Instruction set design techniques, performance and cost; Extensions to traditional instruction sets. An instruction set studied in detail. Processor implementations: Unpipelined execution and its improvement by means of pipelining. Advanced pipelining, including branch prediction, out-of-order execution and superscalar execution, is introduced. Alternatives to traditional computing, such as VLIW and vector computation are described. Improving computer capacity, by improving the memory hierarchy is studied, including advanced cache memory, main memory and virtual memory implementations. An introduction to high-performance computing, including multi-core processors.
Prerequisite: CS-UY 2214 and Graduate standing.
3 Credits Computer Architecture II CS-GY6143
An overview of state-of-the-art single-core systems, including advanced pipelining, super-scalar, vector processors, VLIW and vector processing. High-performance computing systems: Computer systems that improve performance and capacity by exploiting parallelism. Selected topics in parallel computing are introduced, such as interconnection networks, parallel algorithms, GPUs, PRAMs, MIMD and SIMD machines. Alternatives to traditional computing are discussed, including GPUs, TPUs, systolic arrays, neural networks and experimental systems.
Prerequisite: Graduate standing and CS-GY 6133.
3 Credits Introduction to Operating Systems CS-GY6233
This course introduces basic issues in operating systems. Topics: Threads, processes, concurrency, memory management, I/O Control and case studies.
Prerequisite: Graduate standing.
3 Credits Operating Systems II CS-GY6243
This course surveys recent important commercial and research trends in operating systems. Topics may include virtualization, network server design and characterization, scheduling and resource optimization, file systems, memory management, advanced debugging techniques, data-center design and energy utilization.
Prerequisite: Graduate standing and CS-GY 6233.
3 Credits Distributed Operating Systems CS-GY6253
This course introduces distributed-networked computer systems. Topics: Distributed control and consensus. Notions of time in distributed systems. Client/Server communications protocols. Middleware. Distributed File Systems and Services. Fault tolerance, replication and transparency. Peer-to-peer systems. Case studies of modern commercial systems and research efforts.
3 Credits Performance Evaluation of Computer Systems CS-GY6273
This course focuses on modeling and performance analysis of computer systems. It concentrates on testing and evaluation of three-tiered distributed client/server and WEB-based systems and generally on distributed networking systems. The course presents and evaluates various systems architectures from a macro and micro viewpoint.
Prerequisites: Graduate Standing, EL-GY 5363 and instructor’s permission.
3 Credits Information Visualization CS-GY6313
An introductory course on Information Visualization based on a modern and cohesive view of the area. Topics include visualization design, data principles, visual encoding principles, interaction principles, single/multiple view methods, item/attribute, attribute reduction methods, toolkits, and evaluation. Overviews and examples from state-of-the-art research will be provided. The course is designed as a first course in information visualization for students both intending to specialize in visualization as well as students who are interested in understanding and applying visualization principles and existing techniques.
3 Credits Large-scale Visual Analytics CS-GY6323
Visual analytics combines interactive visual interfaces and information visualization techniques with automatic algorithms to support analytical reasoning through human-computer interaction. People use visual analytics tools and techniques to synthesize information and derive insight from massive, dynamic, ambiguous, and often conflicting data, and to communicate their findings effectively for decision-making. This course will serve as an introduction to the science and technology of visual analytics and will include lectures on both theoretical foundations and application methodologies. The goals of this course are for students to develop a comprehensive understanding of this emerging, multidisciplinary field, and apply that understanding toward a focused research problem in a real-world application or a domain of personal interest.
3 Credits Programming Languages CS-GY6373
This course covers the structures, notations and semantics of programming languages. Topics: Issues of scope, type structure and parameter passing. Control structures, including support for exception handling and concurrency. Abstract data types and object oriented languages. Programming in the large. Implementation issues. Functional, logic programming languages. Examples from a variety of languages.
Prerequisites: Graduate standing and CS-GY 5403.
3 Credits Compiler Design and Construction CS-GY6413
This course covers compiler organization. Topics: Lexical analysis, syntax analysis, abstract syntax trees, symbol table organization, code generation. Introduction to code optimization techniques.
Prerequisites: CS-GY 5403, CS-GY 6133 and CS-GY 6003.
3 Credits Interactive Computer Graphics CS-GY6533
This course introduces the fundamentals of computer graphics with hands-on graphics programming experiences. Topics include graphics software and hardware, 2D line segment-scan conversion, 2D and 3D transformations, viewing, clipping, polygon-scan conversion, hidden surface removal, illumination and shading, compositing, texture mapping, ray tracing, radiosity and scientific visualization.
Prerequisites: Graduate standing, CS-GY 5403 (Data Structures) or equivalents and knowledge of C or C++ programming.
3 Credits Human Computer Interaction CS-GY6543
Designing a successful interactive experience or software system takes more than technical savvy and vision--it also requires a deep understanding of how to serve people's needs and desires through the experience of the system, and knowledge about how to weave this understanding into the development process. This course introduces key topics and methods for creating and evaluating human-computer interfaces/digital user experiences. Students apply these practices to a system of their choosing (I encourage application to prototype systems that students are currently working on in other contexts, at any stage of development). The course builds toward a final write-up and presentation in which students detail how they tackled HCI/user experience design and evaluation of their system, and results from their investigations. Some experience creating/participating in the production of interactive experiences/software is recommended.
3 Credits Game Design CS-GY6553
This course is about experimental game design. Design in this context pertains to every aspect of the game, and these can be broadly characterized as the game system, control, visuals, audio, and resulting theme. We will explore these aspects through the creation of a few very focused game prototypes using a variety of contemporary game engines and frameworks, high-level programming languages, and physical materials. This will allow us to obtain a better understanding of what makes games appealing, and how game mechanics, systems, and a variety of player experiences can be designed and iteratively improved by means of rapid prototyping and play-testing. The course combines the technology, design, and philosophy in support of game creation, as well as the real-world implementation and design challenges faced by practicing game designers. Students will learn design guidelines and principles by which games can be conceived, prototyped, and fully developed within a one-semester course, and will create a game from start to finish. The course is a lot of (team)work, but it’s also a lot of fun. Programming skills are helpful, but not a hard requirement. Artistic skills, or a willingness to learn them are a plus.
Prerequisite: CS-GY 6533 or OART-UT 1600 and OART-UT 1605 or instructor permission.
3 Credits Penetration Testing and Vulnerability Analysis CS-GY6573
This advanced course in computer and network security focuses on penetration testing and vulnerability analysis. It introduces methodologies, techniques and tools to analyze and identify vulnerabilities in stand-alone and networked applications.
Prerequisites: Graduate standing and CS-GY 6823
3 Credits Artificial Intelligence I CS-GY6613
Artificial Intelligence (AI) is an important topic in computer science and offers many diversified applications. It addresses one of the ultimate puzzles humans are trying to solve: How is it possible for a slow, tiny brain, whether biological or electronic, to perceive, understand, predict and manipulate a world far larger and more complicated than itself? And how do people create a machine (or computer) with those properties? To that end, AI researchers try to understand how seeing, learning, remembering and reasoning can, or should, be done. This course introduces students to the many AI concepts and techniques.
Prerequisite: Graduate standing and CS-GY 5403.
3 Credits Computer Vision and Scene Analysis CS-GY6643
An important goal of artificial intelligence is to equip computers with the capability to interpret visual inputs. Computer vision and scene analysis is an AI area that deals with constructing explicit, meaningful descriptions of physical objects from images. It includes many techniques from image processing, pattern recognition, geometric modeling and cognitive processing. This course introduces the many techniques and applications of computer vision and scene analysis.
Prerequisites: Graduate standing, CS-GY 5403 and MA-UY 2012, or equivalents, or instructor’s permission.
3 Credits Neural Network Computing CS-GY6673
This course introduces neural network models and their applications. Topics: Discussion of organization and learning in neural network models including perceptrons, adalines, back-propagation networks, recurrent networks, adaptive resonance theory and the neocognitron. Implementations in general and special purpose hardware, both analog and digital. Application in various areas with comparisons to nonneural approaches. Decision systems, nonlinear control, speech processing and vision.
Prerequisite: Graduate standing and CS-GY 5403. Some familiarity with matrix notation and partial derivatives is recommended.
3 Credits Computational Geometry CS-GY6703
This course introduces data structures and algorithms for geometric data. Topics include intersection, polygon triangulation, linear programming, orthogonal range searching, point location, Voronoi diagrams, Delaunay triangulations, arrangements and duality, geometric data structures, convex hulls, binary space partitions, robot motion planning, quadtrees, visibility graphs, simplex range searching.
3 Credits Theory of Computation CS-GY6753
This course introduces the theory of computation. Topics: Formal languages and automata theory. Deterministic and non-deterministic finite automata, regular expressions, regular languages, context-free languages. Pumping theorems for regular and context-free languages. Turing machines, recognizable and decidable languages. Limits of computability: the Halting Problem, undecidable and unrecognizable languages, reductions to prove undecidability. Time complexity, P and NP, Cook-Levin theorem, NP completeness.
Prerequisites: Graduate standing and CS-GY 6003 (or instructor’s permission).
3 Credits Information, Security and Privacy CS-GY6813
This course introduces Information Systems Security and covers cryptography, capability and access control mechanisms, authentication models, security models, operating systems security, malicious code, security-policy formation and enforcement, vulnerability analysis, evaluating secure systems.
Prerequisite: Competency in Application Development in UNIX and Windows Environments, Graduate status. *Online version available.
3 Credits Network Security CS-GY6823
This course begins by covering attacks and threats in computer networks, including network mapping, port scanning, sniffing, DoS, DDoS, reflection attacks, attacks on DNS and leveraging P2P deployments for attacks. The course continues with cryptography topics most relevant to secure networking protocols. Topics covered are block ciphers, stream ciphers, public key cryptography, RSA, Diffie Hellman, certification authorities, digital signatures and message integrity. After surveying basic cryptographic techniques, the course examines several secure networking protocols, including PGP, SSL, IPsec and wireless security protocols. The course examines operational security, including firewalls and intrusion-detection systems. Students read recent research papers on network security and participate in an important lab component that includes packet sniffing, network mapping, firewalls, SSL and IPsec.
Prerequisite: Graduate standing and EL-GY 5363:* Online version available.
3 Credits Computer Networking CS-GY6843
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 linklayer switches. The course includes simple quantitative delay and throughput modeling, socket programming and network application development and Ethereal labs.
Prerequisite: Graduate standing and CS-UY 2134.
3 Credits Applied Cryptography CS-GY6903
This course examines Modern Cryptography from a both theoretical and applied perspective, with emphasis on “provable security” and “application case studies”. The course looks particularly at cryptographic primitives that are building blocks of various cryptographic applications. The course studies notions of security for a given cryptographic primitive, its various constructions and respective security analysis based on the security notion. The cryptographic primitives covered include pseudorandom functions, symmetric encryption (block ciphers), hash functions and random oracles, message authentication codes, asymmetric encryption, digital signatures and authenticated key exchange. The course covers how to build provably secure cryptographic protocols (e.g., secure message transmission, identification schemes, secure function evaluation, etc.), and various number-theoretic assumptions upon which cryptography is based. Also covered: implementation issues (e.g., key lengths, key management, standards, etc.) and, as application case studies, a number of real-life scenarios currently using solutions from modern cryptography.
Prerequisite: Graduate standing.
3 Credits Web Search Engines CS-GY6913
This course covers the basic technology underlying Web search engines and related tools. The main focus is on large-scale Web search engines (such as Google, Yahoo and MSN Search) and their underlying architectures and techniques. Students learn how search engines work and get hands-on experience in how to build search engines from the ground up. Topics are based on a reading list of recent research papers. Students must work on a course project and may have to present in class.
Prerequisite: Graduate standing
3 Credits Machine Learning CS-GY6923
This course introduces the field of machine learning and covers standard machine-learning techniques, such as decision trees, nearest neighbor, Bayesian methods, support vector machines and logistic regression. Topics: Basic concepts in computational learning theory including the PAC model and VC dimension. Methods for evaluating and comparing machine learning techniques.
3 Credits Digital Forensics CS-GY6963
This course introduces information-technology professionals to the application of forensic science principles and practices for collecting, preserving, examining, analyzing and presenting digital evidence. The course includes selected topics from the legal, forensic and information-technology domains and uses lecture, laboratory and written projects to illustrate these topics.
Prerequisite: Graduate standing. *Online version available.
3 Credits Selected Topics in CS CS-GY9033
3 Credits Special Topics in Computer Science CS-GY9053
3 Credits Biometrics CS-GY9093
The course concentrates on the unique advantages that biometrics brings to computer security. The course also addresses such challenging issues as security strength, recognition rates and privacy, as well as alternatives of passwords and smart cards. Students gain knowledge in the building blocks of this field: image and signal processing, pattern recognition, security and privacy and secure system design. By the end of the course students are able to evaluate and design security systems that include biometrics.
Prerequisite: Graduate standing. *Online version available.
3 Credits Selected Topics in CS CS-GY9103
3 Credits Special Topics in CS CS-GY9133
3 Credits Application Security CS-GY9163
This course addresses the design and implementation of secure applications. Concentration is on writing software programs that make it difficult for intruders to exploit security holes. The course emphasizes writing secure distributed programs in Java. The security ramifications of class, field and method visibility are emphasized.
Prerequisite: Gradute standing
3 Credits Selected Topics in CS CS-GY9223

*The CS-GY 9223 general elective courses include: Programming for Big Data, Cloud Computing, and Artificial Intelligence for Games.


Preparatory Course

The Bridge to NYU Tandon Program is a prerequisite course recommended to those interested in applying for the C​omputer Science Master's Degree who are lacking a background in computer science, mathematics, science, or engineering.

If you have a degree in liberal arts or similar, our one-course online program will provide you the tools needed to upgrade your computer science knowledge for consideration to a qualifying master’s degree at the School of Engineering. Should you complete this intensive bridge course with a grade of B+ or better,  you are eligible to be admitted without any course deficiencies, should you meet all other School of Engineering admission requirements."

Learn more: Computer Science Bridge Program