Spring 2019 Course Listing | NYU Tandon School of Engineering

Spring 2019 Course Listing


Undergraduate Course Listing

4 Credits Introduction to Programming & Problem Solving CS-UY 1114
This course introduces problem solving and computer programming and is for undergraduate Computer Science and Computer Engineering majors who have limited prior experience in programming in any language. The course covers fundamentals of computer programming and its underlying principles using the Python programming language. Concepts and methods introduced in the course are illustrated by examples from various disciplines. ABET competencies: a,b,c, e, f, g, k
Corequisite: EX-UY 1; Anti-requisite: CS-UY 1113
2 Credits Introduction to Computer Science CS-UY 1122
This is a breadth-first course that introduces computer-science majors to several subdisciplines in the computer-science field. The course is built around the theme that computer science is the study of algorithms and includes much more than programming. The course introduces hardware, virtual machines, software, applications and social issues in computing.
Prerequisite: CS-UY 1114 and only first-year Computer Science students are permitted to enroll in this introductory level course
3 Credits Engineering Problem Solving and Programming CS-UY 1133
This introductory course in engineering problem solving and computer programming is for all undergraduate engineering students without prior programming experience in any language. The course covers the fundamentals of computer programming and its underlying principles using the MATLAB programming language. Concepts and methods are illustrated by examples from various engineering disciplines. Useful numerical techniques and their applications to real-world problems in science and engineering are also discussed. ABET competencies: a, e, k.
Corequisite: EX-UY 1.
4 Credits Data Structures and Algorithms CS-UY 1134
This course covers abstract data types and the implementation and use of standard data structures along with fundamental algorithms and the basics of algorithm analysis. Not open to students who have taken CS-UY 2134.
Prerequisite for Brooklyn Students: CS-UY 1114 or CS-UY 1121 (C- or better)
Prerequisite for Abu Dhabi Students: CS-UH 1001 or ENGR-UH 1000
Prerequisite for Shanghai Students: CSCI-SHU 101
Corequisite for all Students: EX-UY 1
4 Credits Object Oriented Programming CS-UY 2124
This intermediate-level programming course teaches object-oriented programming in C++. Topics: Pointers, dynamic memory allocation and recursion. Classes and objects including constructors, destructors, methods (member functions) and data members. Access and the interface to relationships of classes including composition, association and inheritance. Polymorphism through function overloading operators. Inheritance and templates. Use of the standard template library containers and algorithms.
Prerequisite: CS-UY 1134 (C- or better); Corequisite: EX-UY 1
CS-UY 2164 Please refer to the bulletin for more information
4 Credits Digital Logic and State Machine Design CS-UY 2204
This course covers combinational and sequential digital circuits. Topics: Introduction to digital systems. Number systems and binary arithmetic. Switching algebra and logic design. Error detection and correction. Combinational integrated circuits, including adders. Timing hazards. Sequential circuits, flipflops, state diagrams and synchronous machine synthesis. Programmable Logic Devices, PLA, PAL and FPGA. Finite-state machine design. Memory elements. A grade of C or better is required of undergraduate computer-engineering majors.
Prerequisite for Brooklyn Students: CS-UY 1114 (C- or better) or CS-UY 1133 (C- or better)
Prerequisite for Abu Dhabi Students: CS-UH 1001 (C- or better) or ENGR-UH 1000 (C- or better)
Prerequisite for Shanghai Students: CSCI-SHU 101 (C- or better)
4 Credits Computer Architecture and Organization CS-UY 2214
This course covers a top-down approach to computer design. Topics: Computer architecture, introduction to assembly language programming and machine language set design. Computer organization, logical modules; CPU, memory and I/O units. Instruction cycles, the datapath and control unit. Hardwiring and microprogramming. The memory subsystem and timing. I/O interface, interrupts, programmed I/O and DMA. Introduction to pipelining and memory hierarchies. Fundamentals of computer networks.
Prerequisite for Brooklyn Engineering Students: CS-UY 2204 (C- or better) for computer engineering majors; (CS-UY 2134 or CS-UY 1134) and (CS-UY 2124 or CS-UY 1124) (C- or better) and MA-UY 2314 for computer science majors. Students who are neither computer engineering majors nor computer science majors must take either CS-UY 2204 (C- or better) OR (CS-UY 2134 or CS-UY 1134) and (CS-UY 2124 or CS-UY 1124) (C- or better) and MA-UY 2314.
Prerequisite for Abu Dhabi Students: ENGR-AD 121.
Prerequisites for Shanghai Students: CSCI-SHU 2314 and CSCI-SHU 210 (C- or better) or CENG-SHU 201. ABET competencies: a, c, e.
3 Credits Design & Analysis of Algorithms CS-UY 2413
This course covers fundamental principles of the design and analysis of algorithms. Topics include asymptotic notation, recurrences, randomized algorithms, sorting and selection, balanced binary search trees, augmented data structures, advanced data structures, algorithms on strings, graph algorithms, geometric algorithms, greedy algorithms, dynamic programming and NP completeness.
Prerequisites for Brooklyn Engineering Students: (CS-UY 2134 or CS-UY 1134) and (CS-UY 2124 or CS-UY 1124) (C- or better) and MA-UY 2314; Corequisite: EX-UY 1
Prerequisites for Abu Dhabi Students: (ENGR-UH 3510 or CS-UH 1050) (C- or better) and CS-UH 1002
Prerequisite for Shanghai Students: CSCI-SHU 210 (C- or better) and CSCI-SHU 2314
3 Credits Introduction to Databases CS-UY 3083
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
3 Credits Introduction to Game Programming CS-UY 3113
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: (CS-UY 2134 or CS-UY 1134) and (CS-UY 2124 or CS-UY 1124) (C- or better).
4 Credits Introduction to Operating Systm CS-UY 3224
This course studies the fundamental concepts and principles of operating systems. Batch, spooling and multiprogramming systems are introduced. The parts of an operating system are described in terms of their functions, structure and implementation. Basic policies for allocating resources are discussed.
Prerequisites for Brooklyn Students: CS-UY 2214 AND (CS-UY 2134 or CS-UY 1134) AND (CS-UY 2124 or CS-UY 1124) (C- or better).
Prerequisite for Abu Dhabi Students: (ENGR-UH 3510 or CS-UH 1050) (C- or better) AND (CS-UH 2010 or ENGR-UH 3511)
Prerequisites for Shanghai Students: CSCI-SHU 210 (C- or better) AND CENG-SHU 202
3 Credits Java and Web Design CS-UY 3913
Programmers familiar with C or C++ learn to develop Java applications and applets. This course teaches the syntax of the Java language, object-oriented programming in Java, creating graphical user interfaces (GIU) using the Java 2 Platform technology event model, Java exceptions, file input/output (I/O) using Java Foundation Class threads and networking.
Prerequisite: (CS-UY 2134 or CS-UY 1134) and (CS-UY 2124 or CS-UY 1124) (C- or better).
3 Credits Computer Security CS-UY 3923
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
3 Credits Network Security CS-UY 3933
This course covers reviews networking. Topics: Basic notations of confidentiality, integrity, availability; cryptographic systems, coding and decoding messages. Cryptographic protocols for privacy, integrity, key exchange and access control. TCP/IP security; Firewalls, IPSec; secure ecommerce. Intrusion detection, prevention, response. Advanced topics are included.
Prerequisite for Brooklyn Students: CS-UY 4793 or ECE-UY 3613 or ECE-GY 5373
Prerequisite for Abu Dhabi Students: CS-UH 3012 or ENGR-UH 3512
Prerequisite for Shanghai Students: CSCI-SHU 308
3 Credits Special Topics in Computer Science CS-UY 3943
This three-credit special topics course is for juniors and seniors.
Prerequisite: Department's permission.
CS-UY 3993 Please refer to the bulletin for more information
3 Credits Software Engineering CS-UY 4513
Focusing on software engineering, the course introduces techniques to specify, design, test and document medium and large software systems. Design techniques include information engineering, object orientation and complexity measures. Also covered are testing methods, such as path testing, exhaustive test models and construction of test data. An introduction to software tools and project management techniques is presented. Student projects involve team software development and tracking.
Prerequisites: Juniors or higher majoring in Computer Science, Computer Engineering or Electrical and Computer Engineering. Co-requisite: CS-UY 3224
3 Credits Design Project CS-UY 4523
Students or several students work with a faculty member and/or graduate students on a current topic in computer science. Each term, a project course with a particular theme is offered by the Department of Computer and Information Science. A faculty member assigns individual or group projects. The project course is highly structured and supervised closely by faculty. Students are expected to use the design and project-management skills they learned in CS-UY 4513 Software Engineering. Alternatively, students may work with a faculty member on an individual project of mutual interest. A written report and oral presentation are required.
Prerequisite: CS-UY 4513 or CS-UY 3513.
3 Credits Interactive Computer Graphics CS-UY 4533
An introduction to the field of computer graphics: displays, image formation, visual perception, images, transformations (viewing and projection), programmable pipelines (vertex and fragment programs), modeling (primitives, polygon meshes, smooth curves and surfaces), animation (keyframing, procedural), rendering and realism (visibility, lighting, shading, shadows, texturing, ray tracing).
Prerequisite for Brooklyn Students: (CS-UY 2134 or CS-UY 1134) and (CS-UY 2124 or CS-UY 1124) (C- or better) and (MA-UY 2034 or MA-UY 3044 or MA-UY 3054)
Prerequisites for CAS Students: CSCI-UA 201 (C- or better) and (MATH-UA 140 or MATH-UA 148)
Prerequisite for Abu Dhabi Students: (ENGR-UH 3510 or CS-UH 1050) (C- or better) and (MATH-UH 1022 or MATH-UH 1023)
Prerequisite for Shanghai Students: CSCI-SHU 210 (C- or better) AND (MATH-SHU 140 or MATH-SHU 141)
3 Credits Game Design CS-UY 4553
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.
Prerequisites: CS-UY 3113, CS-UY 4533, or CS-UY 4613 (C- or better) for CS students; OART-UT 1600 and OART-UT 1605 for Game Center MFA students. Instructor permission required otherwise.
3 Credits Introduction to Machine Learning CS-UY 4563
This course provides a hands on approach to machine learning and statistical pattern recognition. The course describes fundamental algorithms for linear regression, classification, model selection, support vector machines, neural networks, dimensionality reduction and clustering. The course includes computer exercises on real and synthetic data using current software tools. A number of applications are demonstrated on audio and image processing, text classification, and more. Students should have competency in computer programming.
Prerequisite for Brooklyn Students: CS-UY 1134 AND (MA-UY 2034, MA-UY 2034G, MA-UY 3044 or MA-UY 3054) AND (MA-UY 2224, MA-UY 2222, MA-UY 2233, ECE-UY 2233, MA-UY 3012, MA-UY 3014, or MA-UY 3514)
Prerequisite for Abu Dhabi Students: (ENGR-UH 3510 or CS-UH 1050) (C- or better) AND (MATH-UH 1022 or MATH-UH 1023) AND (MATH-UH 2011Q or ENGR-UH 2010Q)
Prerequisite for Shanghai Students: CSCI-SHU 210 (C- or better) AND (MATH-SHU 140 or MATH-SHU 141) AND MATH-SHU 235
3 Credits Artificial Intelligence CS-UY 4613
Artificial Intelligence (AI) is an important topic in computer science that has many diversified applications. It addresses one of the ultimate puzzles human 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 we go about creating a machine (or computer) with those properties? To this end, researchers in the AI field have been trying to understand how seeing, learning, remembering, and reasoning could, or should be done. This course introduces students to the many concepts and techniques in artificial intelligence.
Prerequisite for Brooklyn Students: (CS-UY 2134 or CS-UY 1134) and (CS-UY 2124 or CS-UY 1124) (C- or better)
Prerequisite for Abu Dhabi Students: ENGR-UH 3510 or CS-UH 1050 (C- or better)
Prerequisite for Shanghai Students: CSCI-SHU 210 (C- or better)
3 Credits Application Security CS-UY 4753
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: CS-UY 3923
3 Credits Penetration Testing and Vulnerability Analysis CS-UY 4773
The course will start off with an in-depth review of the exploitation mitigations introduced in modern operating systems. The instructors will demonstrate their limitations through simple examples and gradually develop the basic exploitation techniques into more complicated methods applicable to real-world exploitation. Unlike most other exploitation courses, we will focus on approaching exploitation as a creative problem-solving process rather than an exercise of applying cookbook techniques to common types of vulnerabilities. Most of the course will focus on the hands-on application of the material through exercises and leading the students through the development of reliable exploits for recently patched vulnerabilities in widely used software.
Prerequisites for Brooklyn Engineering Students: CS-UY 3933 and (CS-UY 2134 or CS-UY 1134) and (CS-UY 2124 or CS-UY 1124) (C- or better).
Prerequisites for CAS Students: CS-UY 3933 and CSCI-UA 201.
Prerequisites for Abu Dhabi Students: CS-UY 3933 and CS-AD 103
3 Credits Applied Cryptography CS-UY 4783
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: (CS-UY 2134 or CS-UY 1134) and (CS-UY 2124 or CS-UY 1124) (C- or better) and MA-UY 2314.
3 Credits Computer Networking CS-UY 4793
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 for Brooklyn Students: (CS-UY 2134 or CS-UY 1134) and (CS-UY 2124 or CS-UY 1124) (C- or better)
Prerequisite for Abu Dhabi Students: ENGR-UH 3510 or CS-UH 1050 (C- or better)
Prerequisite for Shanghai Students: CSCI-SHU 210 (C- or better)


Graduate Course Listing

3 Credits Foundations of Computer Science CS-GY 6003
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.
1.5 Credits Guided Studies in Computer Science CS-GY 6015
3 Credits Design and Analysis of Algorithms I CS-GY 6033
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
3 Credits Principles of Database Systems CS-GY 6083
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.
3 Credits Computer Architecture I CS-GY 6133
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.
3 Credits Introduction to Operating Systems CS-GY 6233
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-GY 6313
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.
3 Credits Large-scale Visual Analytics CS-GY 6323
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.
3 Credits Programming Languages CS-GY 6373
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.
3 Credits Compiler Design and Construction CS-GY 6413
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.
3 Credits Big Data CS-GY 6513
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.
3 Credits Interactive Computer Graphics CS-GY 6533
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.
3 Credits Game Design CS-GY 6553
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.
3 Credits Penetration Testing and Vulnerability Analysis CS-GY 6573
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.
3 Credits Artificial Intelligence I CS-GY 6613
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.
3 Credits Computer Vision CS-GY 6643
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.
3 Credits Theory of Computation CS-GY 6753
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.
3 Credits Information Systems Security Engineering and Management CS-GY 6803
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.
3 Credits Information, Security and Privacy CS-GY 6813
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.
3 Credits Network Security CS-GY 6823
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.
3 Credits Computer Networking CS-GY 6843
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.
3 Credits Applied Cryptography CS-GY 6903
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 Machine Learning CS-GY 6923
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.
3 Credits Artificial Intelligence for Games CS-GY 6943
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.
3 Credits Digital Forensics CS-GY 6963
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 Special Topics in Computer Science CS-GY 9053
This course will explore various topics in Computer Science
3 Credits Application Security CS-GY 9163
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
3 Credits Selected Topics in CS CS-GY 9223
This course will explore various topics in Computer Science.