Computer Science (CS-GY)

CS-GY 608  Introduction to Databases  (3 Credits)  
This course introduces database systems and their approach as a mechanism to model the real world. The course covers data models (relational, object-oriented), physical database design, query languages, query processing and optimization, as well as transaction management techniques. Implementation issues, object oriented and distributed databases also are introduced. | Prerequisites for Brooklyn Students: (CS-UY 2134 or CS-UY 1134) and (CS-UY 2124 or CS-UY 1124) (C- or better) and MA-UY 2314 | Prerequisites for Abu Dhabi Students: (ENGR-UH 3510 or CS-UH 1050) (C- or better) and CS-UH 1002 | Prerequisites for Shanghai Students: CSCI-SHU 210 (C- or better) and CSCI-SHU 2314
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
CS-GY 902  COMPUTER SECURITY  (3 Credits)  
This course covers cryptographic systems. Topics: Capability and access control mechanisms, authentication models, protection models. Database and operating system security issues, mobile code, security kernels. Malicious code, Trojan horses and computer viruses. Security policy formation and enforcement enforcement, legal aspects and ethical aspects. | Prerequisite for Brooklyn Students: CS-UY 2214 | Prerequisite for CAS Students: CSCI-UA 201 | Prerequisite for Abu Dhabi Students: CS-UH 2010 or ENGR-AD 3511 | Prerequisite for Shanghai Students: CENG-SHU 202 | Co-requisite for ALL Students: CS-UY 3224
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
CS-GY 997X  MS THESIS IN COMPUTER SCIENCE  (3-6 Credits)  
Typically offered occasionally  
Exceptional students may elect to write a master’s thesis for which no more than 6 credits may be earned toward the degree. Such research should demonstrate adequately the student’s proficiency in the subject material. Also required: oral thesis defense before at least three professors, plus a formal, bound thesis volume. Thesis registration must be continuous. | Prerequisites: Graduate status and satisfactory grades in prescribed courses.
Grading: Satisfactory/Unsatisfactory  
Repeatable for additional credit: Yes  
CS-GY 999X  PHD DISSERTATION IN COMPUTER SCIENCE  (3-12 Credits)  
Typically offered occasionally  
The dissertation is an original investigation of a computer-science problem. The dissertation must demonstrate creativity and include features of originality and utility worthy of publication in a recognized journal. Candidates must orally defend their dissertations successfully. Registration of 21 credits and continuous dissertation registration are required. | Prerequisites: Graduate standing, and Passing of a qualifying examination and approval of the Department of Computer Science and Engineering.
Grading: Satisfactory/Unsatisfactory  
Repeatable for additional credit: Yes  
CS-GY 5303  INTRODUCTION TO PROGRAMMING AND PROBLEM SOLVING  (3 Credits)  
Typically offered occasionally  
This course introduces discrete mathematics, computers and programming; Running C/C++ programs under Unix; algorithmic language; pseudo code; problem solving and program structure. Topics include constants, variable, data types, assignments, arithmetic expressions, input and output; object-oriented and top-down design and procedures, selection and loops; functions; enumerated; arrays, structs and searching and sorting. | Prerequisite: Graduate status: *Online version available.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 5403  Data Structures and Algorithms  (3 Credits)  
Typically offered occasionally  
This course introduces data structures. Topics include program specifications and design; abstract data types; stacks, queues; dynamic storage allocation; sequential and linked implementation of stacks and queues; searching methods, sequential and binary; binary trees and general trees; hashing; computational complexity; sorting algorithms: selection sort, heap sort, mergesort and quicksort; comparison of sorting techniques and analysis. | Prerequisite: Graduate Standing, CS-GY 5303 *Online version available.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6003  Foundations of Computer Science  (3 Credits)  
Typically offered occasionally  
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.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6033  Design and Analysis of Algorithms I  (3 Credits)  
Typically offered occasionally  
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. | Knowledge of Discrete Math equivalent to CS-GY 6003, and knowledge of Fundamental Data Structures. Prerequisites: Graduate Standing
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6043  Design and Analysis of Algorithms II  (3 Credits)  
Typically offered occasionally  
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. | Knowledge of algorithms and data structures equivalent to CS-GY 6033. Prerequisite: Graduate standing.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6053  Foundation of Data Science  (3 Credits)  
Typically offered Fall  
This course offers students a practical, hands-on introduction to the growing field of "Data Science," and will equip them with the fundamental quantitative and computational analytics used to derive meaningful insight from large, real-world data. The focus of the course is problem-based and brings together skills across statistics, data mining and machine learning alongside effective visualization and communication. The course will equip students to solve data-driven problems from diverse domain applications, and with real-world data. Students are assumed to have an understanding of basic statistics and have experience in programming. | Prerequisite: Graduate Standing.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6063  Software Engineering I  (3 Credits)  
Typically offered occasionally  
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. | Solid ability to program in Python. Some familiarity with Django is helpful. Please note: The course will not teach how to program in Python. The students are required to be able to do so already. Experience using version control systems (git in particular) is important. Prerequisite: Graduate standing.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6073  Software Engineering II  (3 Credits)  
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.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6083  Principles of Database Systems  (3 Credits)  
Typically offered occasionally  
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. | Knowledge of basic data structures and algorithms (search trees, hash tables, sorting and searching). Knowledge of principles of operating systems and of the client-server architecture. Basic familiarity with the UNIX operating systems. Programming proficiency. Prerequisites: Graduate standing.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6093  Advanced Database Systems  (3 Credits)  
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. | Knowledge of Database Systems equivalent to CS-GY 6083 and experience with a relational database system. Prerequisites: Graduate standing.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6133  Computer Architecture I  (3 Credits)  
Typically offered occasionally  
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: Graduate standing and Knowledge of Computer Architecture and Organization equivalent to CS-UY 2214.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6143  Computer Architecture II  (3 Credits)  
Typically offered occasionally  
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.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6183  FAULT-TOLERANT COMPUETRS  (3 Credits)  
This course introduces a variety of hardware and software techniques to design and model fault-tolerant computers. Topics include coding techniques (Hamming, SECSED, SECDED, etc.); majority voting schemes (TMR); software redundancy (Nversion programming); software-recovery schemes; network reliability design and estimation. The course introduces probabilistic methods for reliability modeling. Other topics: Examples from space fault tolerant systems, networks, commercial nonstop systems (TANDEM and STRATUS). RAID memory systems. Fault-tolerant modeling tools such as HARP, SHURE and SHARPE. | Prerequisites CS-GY 6133 and Graduate Standing.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6233  Introduction to Operating Systems  (3 Credits)  
Typically offered occasionally  
This course introduces basic issues in operating systems. Topics: Threads, processes, concurrency, memory management, I/O Control and case studies. | Prerequisite: Graduate standing.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6243  Operating Systems II  (3 Credits)  
Typically offered occasionally  
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.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6253  Distributed Operating Systems  (3 Credits)  
Typically offered occasionally  
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.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6273  Performance Evaluation of Computer Systems  (3 Credits)  
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.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6313  INFORMATION VISUALIZATION  (3 Credits)  
Typically offered occasionally  
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. | Prerequisite: Graduate Standing.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6323  LARGE-SCALE VISUAL ANALYTICS  (3 Credits)  
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. | Knowledge of Information Visualization equivalent to CS-GY 6313. Prerequisite: Graduate Standing.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6333  MASSIVE DATA ANALYSIS  (3 Credits)  
Big Data requires the storage, organization, and processing of data at a scale and efficiency that go well beyond the capabilities of conventional information technologies. In this course, we will review the state of the art in Big Data analytics. In addition to covering the specifics of different platforms, models, and languages, we will also look at real applications that perform massive data analysis and how they can be implemented on Big Data platforms. Topics we will discuss include: Map reduce/Hadoop, NoSQL stores, languages such as Pig Latin and JAQL, large-scale data mining and visualization. The course will primarily consist of technical readings and discussions. It will also include programming projects where the participants will prototype data-intensive applications using existing Big Data tools and platforms. | Prerequisite: CS-GY 6083
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6373  Programming Languages  (3 Credits)  
Typically offered occasionally  
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. | Knowledge of C, Python, Linux. Prerequisites: Graduate standing.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6413  Compiler Design and Construction  (3 Credits)  
Typically offered occasionally  
This course covers compiler organization. Topics: Lexical analysis, syntax analysis, abstract syntax trees, symbol table organization, code generation. Introduction to code optimization techniques. | Knowledge of discrete math equivalent to CS-GY 6003, and knowledge of fundamental data structures. Prerequisites: Graduate Standing.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6513  Big Data  (3 Credits)  
Typically offered Spring  
Big Data requires the storage, organization, and processing of data at a scale and efficiency that go well beyond the capabilities of conventional information technologies. In this course, we will study the state of art in big data management: we will learn about algorithms, techniques and tools needed to support big data processing. In addition, we will examine real applications that require massive data analysis and how they can be implemented on Big Data platforms. The course will consist of lectures based both on textbook material and scientific papers. It will include programming assignments that will provide students with hands-on experience on building data-intensive applications using existing Big Data platforms, including Amazon AWS. Besides lectures given by the instructor, we will also have guest lectures by experts in some of the topics we will cover. Students should have experience in programming: Java, C, C++, Python, or similar languages, equivalent to two introductory courses in programming, such as “Introduction to Programming” and “Data Structures and Algorithms. | Knowledge of Python. Prerequisite: Graduate Standing.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6533  Interactive Computer Graphics  (3 Credits)  
Typically offered occasionally  
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. | Knowledge of Data Structures and Algorithms, and be comfortable with C/C++ programming.. Prerequisites: Graduate standing.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6543  Human Computer Interaction  (3 Credits)  
Typically offered occasionally  
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. | Knowledge of the design of user experiences and interfaces is desirable but not required. Prerequisite: Graduate Standing.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6553  Game Design  (3 Credits)  
Typically offered occasionally  
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: (Graduate Standing AND CS-GY 6533) for SoE students OR (OART-UT 1600 and OART-UT 1605) for Game Center MFA students OR instructor permission.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
Prerequisites: Prerequisite: (Graduate Standing AND CS-GY 6533) for SoE students OR (OART-UT 1600 and OART-UT 1605) for Game Center MFA students OR instructor permission.  
CS-GY 6573  Penetration Testing and Vulnerability Analysis  (3 Credits)  
Typically offered occasionally  
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. | Knowledge of Network Security equivalent to CS-GY 6823. Prerequisites: Graduate standing.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6613  Artificial Intelligence I  (3 Credits)  
Typically offered occasionally  
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. | Knowledge of Data Structures and Algorithms. Prerequisite: Graduate standing.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6643  COMPUTER VISION  (3 Credits)  
Typically offered occasionally  
An important goal of artificial intelligence (AI) is to equip computers with the capability of interpreting visual inputs. Computer vision is an area in AI that deals with the construction of explicit, meaningful descriptions of physical objects from images. It includes as parts many techniques from image processing, pattern recognition, geometric modeling, and cognitive processing. This course introduces students to the fundamental concepts and techniques in computer vision. | Knowledge of Data Structures and Algorithms, proficiency in programming, and familiarity with matrix arithmetic. Prerequisites: Graduate standing.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6673  Neural Network Computing  (3 Credits)  
Typically offered occasionally  
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.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6703  Computational Geometry  (3 Credits)  
Typically offered occasionally  
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. | Knowledge of algorithms and data structures equivalent to CS-GY 6033. Prerequisite: Graduate Standing.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6713  INTEGRATED DEVELOPMENT ENVIRONMENTS  (3 Credits)  
This course includes methodologies for systematically developing distributed and centralized information systems. Two- and three-tier systems are discussed. Relevant standards, such as J2EE, CORBA, Active X, OpenDoc, AJAX and web-based tools may be covered. The relationship of the standards and tools to the design and to the software architecture are conceded. Extended discussion and use of the Open Source Web based technologies are expanded in examples. HTML, CSS Tools discussed include HTML, CSS (Cascading Style Sheet) and JavaScript as well as Asynchronous JavaScript and XML (AJAX) are introduced and applied in the client tier; PHP (Hypertext PreProcessor) is applied in the server tier and MySQL for data base based applications are discussed. Issues of which tool to use as well how to partition applications into tiers is discussed. | Prerequisite: Graduate standing
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6723  WEB SERVICES AND SERVICE ORIENTED ARCHITECTURE  (3 Credits)  
The service oriented architecture (SOA) is the latest application integration paradigm in the industry, developed to address the challenge of software development which anticipates the internal friction of interacting with incompatible architectures and programming models. SOA is a model of distributed software components which encapsulates business function in a reusable, composable way. SOA components, or services, are accessible using standardized protocols and are composed (or choreographed) into new applications using standard composition languages. The term "Web Services" stands for realization of the SOA paradigm as a set of XML based standards for component communication, description and composition. The SOA architectural model and Web services provide a highly interoperable application integration framework which has quickly become the gold standard for enterprise application architecture. This course will introduce the basic concepts of SOA, and will examine how SOA is supported by Web services standards such as SOAP, WSDL, WS-Addressing, WS-Policy, BPEL4WS, and WS-Transactions.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6753  Theory of Computation  (3 Credits)  
Typically offered occasionally  
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). | Knowledge of discrete math (equivalent to CS-GY 6003). Prerequisite: Graduate Standing.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
Prerequisites: Graduate standing.  
CS-GY 6763  ALGORITHMIC MACHINE LEARNING AND DATA SCIENCE  (3 Credits)  
Typically offered Fall  
This course gives a behind-the-scenes look into the algorithms and computational methods that make machine learning and data science work at large scale. How does a service like Shazam match a sound clip to a library of 10 million songs in under a second? How do scientists find patterns in terabytes of genetic data? How can we efficiently train neural networks with millions of parameters on millions of labeled images? We will address these questions and others by studying advanced algorithmic techniques like randomization, approximation, sketching, continuous optimization, spectral methods, and Fourier methods. Students will learn how to theoretically analyze and apply these techniques to problems in machine learning and data science. They will also have the opportunity to explore recent research in algorithms for data through a final project and optional reading group. This course is mathematically rigorous and is intended for graduate students or strong, advanced undergraduates. | Knowledge of machine learning (equivalent to CS-UY 4563, CS-GY 6923, or ECE-GY 6143), algorithms (equivalent to CS-UY 2413, CS-GY 6033, or CS-GY 6043), and linear algebra (equivalent to MA-UY 2034, 3044, or 3054). Prerequisite: Graduate Standing.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6803  Information Systems Security Engineering and Management  (3 Credits)  
Typically offered occasionally  
This course presents a system and management view of information security: what it is, what drives the requirements for information security, how to integrate it into the systems-design process and life-cycle security management of information systems. A second goal is to cover basic federal policies on government information security and methodologies. Topics include information-security risk management, security policies, security in the systems-engineering process, laws related to information security and management of operational systems. | Prerequisite: Graduate standing. *Online version available.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6813  Information, Security and Privacy  (3 Credits)  
Typically offered occasionally  
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: Graduate standing. *Online version available.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6823  Network Security  (3 Credits)  
Typically offered occasionally  
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. * Online version available.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6833  INTRODUCTION TO INFORMATION SECURITY MANAGEMENT  (3 Credits)  
Typically offered occasionally  
This course provides the basic background on the basic business aspects of information security management. All examples will be in the context of Information Systems, and the focus of the course will be on particular needs of information systems with regard to security and privacy. | Prerequisite: Strong Technical Background
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6843  Computer Networking  (3 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 linklayer switches. The course includes simple quantitative delay and throughput modeling, socket programming and network application development and Ethereal labs. | Knowledge of Python and/or C. Prerequisite: Graduate standing.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6863  FUNDAMENTALS OF SECURITY INFORMATION MANAGEMENT  (3 Credits)  
Typically offered occasionally  
The objective of this course is for a student with a basic understanding of security threats and defensive technology to learn to design an appropriate approach to security of a system given real world consideration of risk and cost. The approach includes such aspects as security architecture, selection of hardware and software components, approaches to secure development, outsourcing options and cloud computing options. | Prerequisite: CS-GY 6813 or equivalent.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6873  Project in Telecommunication Networks  (3 Credits)  
In this course, students design, develop and test communication software. Students work in small groups under faculty direction. Students have access to network resources for their work. | Prerequisites: Graduate standing and CS-GY 6843
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6883  PRACTICES IN INFORMATION SECURITY MANAGEMENT  (3 Credits)  
Typically offered occasionally  
The objective of this course is to learn the operational aspects of information security. This includes developing and deploying processes for security monitoring, incident response, disaster recover, etc.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6903  Applied Cryptography  (3 Credits)  
Typically offered occasionally  
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.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6913  Web Search Engines  (3 Credits)  
Typically offered occasionally  
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
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6923  Machine Learning  (3 Credits)  
Typically offered occasionally  
This course is an introduction to the field of machine learning, covering fundamental techniques for classification, regression, dimensionality reduction, clustering, and model selection. A broad range of algorithms will be covered, such as linear and logistic regression, neural networks, deep learning, support vector machines, tree-based methods, expectation maximization, and principal components analysis. The course will include hands-on exercises with real data from different application areas (e.g. text, audio, images). Students will learn to train and validate machine learning models and analyze their performance. | Knowledge of undergraduate level probability and statistics, linear algebra, and multi-variable calculus. Prerequisite: Graduate standing.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6943  Artificial Intelligence for Games  (3 Credits)  
Typically offered Spring  
This course covers artificial intelligence techniques used with games. The course is an advanced course that presupposes a good understanding of standard AI techniques, and much of the course material will consists of recent research papers. While the course will cover recent methods for playing games, in particular for general game playing, it will also go beyond that application domain to cover methods for generating games and game content and for modeling players. Many of these methods are based on evolutionary computation, others on stochastic tree search, cellular automata or grammar expansion. Approximately the first half of the course will consist of lectures, and the second half of the group projects. | Prerequisites: Graduate Standing and CS-GY 6613 or similar introductory Artificial Intelligence courses.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6953  DEEP LEARNING  (3 Credits)  
Typically offered Fall  
This course provides an overview of deep neural network learning (covering mathematical foundations as well as example applications in NLP, computer vision, and reinforcement learning). Upon successful completion, students will be able to grasp the mathematical basics of deep learning, solve practical machine learning problems in applications, and implement software prototypes of deep learning solutions to these problems. | Prerequisites: (CS-GY 6923 or ECE-GY 6143 or equivalent graduate course) AND graduate Standing.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 6963  Digital Forensics  (3 Credits)  
Typically offered occasionally  
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.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 9013  Selected Topics in Computer Science  (3 Credits)  
Typically offered occasionally  
This course covers topics of current interest in computer science. Recent offerings include software specification and validation, parallel algorithms and architectures, client-server systems and advanced object-oriented design (Java). Advanced topics: Databases, performance analysis, computer simulation, Java programming, Unix programming, human and computer interaction, cryptography with financial applications and biometric identification. | Prerequisites: Graduate Standing, and specified when course is offered.
Grading: Grad Poly Graded  
Repeatable for additional credit: Yes  
CS-GY 9093  Biometrics  (3 Credits)  
Typically offered occasionally  
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.
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 9163  Application Security  (3 Credits)  
Typically offered occasionally  
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. | Knowledge of Information, Security and Privacy equivalent to CS-GY 6813. Prerequisite: Graduate standing
Grading: Grad Poly Graded  
Repeatable for additional credit: No  
CS-GY 9413  Readings in Computer Science I  (3 Credits)  
Typically offered occasionally  
This course is primarily for advanced graduate students who wish to study in a specialized area under faculty supervision. Permission of the graduate director is required, as are regular meetings with the adviser. An examination or term report is required. | Prerequisite: Graduate status.
Grading: Grad Poly Graded  
Repeatable for additional credit: Yes  
CS-GY 9423  Readings in Computer Science II  (3 Credits)  
This course is primarily for advanced graduate students who wish to study in a specialized area under faculty supervision. Permission of the graduate director is required, as are regular meetings with the adviser. An examination or term report is required. | Prerequisite: Graduate status.
Grading: Grad Poly Graded  
Repeatable for additional credit: Yes  
CS-GY 9963  ADVANCED PROJECT IN COMPUTER SCIENCE  (3 Credits)  
Typically offered occasionally  
This course permits the student to perform research in computer science with a narrower scope than a master’s thesis. Acceptance of a student by a faculty adviser is required before registration. A project report and an oral examination on it are required. | Prerequisite: Graduate status.
Grading: Grad Poly Graded  
Repeatable for additional credit: Yes