Spring 2020 Course Listing with Syllabi | NYU Tandon School of Engineering

Spring 2020 Course Listing with Syllabi


Undergraduate Course Listing

*Syllabi in future semesters may vary somewhat from the current and past syllabi shown here.

4 Credits Introduction to Programming & Problem Solving CS-UY1114
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

     Download the CS-UY 1114 syllabus

2 Credits Introduction to Computer Science CS-UY1122
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

     Download the CS-UY 1122 syllabus

3 Credits Engineering Problem Solving and Programming CS-UY1133
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.

     Download the CS-UY 1133 syllabus

4 Credits Data Structures and Algorithms CS-UY1134
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 1123 (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

     Download the CS-UY 1134 syllabus

4 Credits Object Oriented Programming CS-UY2124
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

     Download the CS-UY 2124 syllabus

3 Credits Introduction to Programming in C CS-UY2163
This course covers programming in C. Topics: The syntax, variables, expressions, working environment, printf and scanf. Function calls and returns. Branching and looping. Relational operators. Bit-wise operators. Boolean expressions. Recursion. Pointers. Data structures: Arrays, structs, lists, stacks, trees, queues. String processing. Low level memory management, dynamic memory allocation. The preprocessor. File processing : fprintf, fscanf, fseek, sscanf. Concurrency, fork, pipe, signal.
Prerequisites: (CS-UY 1114 or CS-UY 1133) and ECE majors or department permission. For CS majors and CS minors, this course does not count as a CS elective.

     Download the CS-UY 2163 syllabus

4 Credits Digital Logic and State Machine Design CS-UY2204
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)

     Download the CS-UY 2204 syllabus

3 Credits Design & Analysis of Algorithms CS-UY2413
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
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

     Download the CS-UY 2413 syllabus

3 Credits Introduction to Databases CS-UY3083
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

     Download the CS-UY 3083 syllabus

3 Credits Introduction to Game Programming CS-UY3113
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).

     Download the CS-UY 3113 syllabus

4 Credits Introduction to Operating Systm CS-UY3224
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

     Download the CS-UY 3224 syllabus

3 Credits Unix System Programming CS-UY3393
This course covers programming and system administration of UNIX systems. Also covered: Shell programming, special purpose languages, UNIX utilities, UNIX programming tools, systems programming and system administration.
Prerequisites: CS 3224 and junior status.

     Download the CS-UY 3393 syllabus

3 Credits Java and Web Design CS-UY3913
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).

     Download the CS-UY 3913 syllabus

CS-UY3939 Please refer to the bulletin for more information

     Download the CS-UY 3939 syllabus

3 Credits Special Topics in Computer Science CS-UY3943
This three-credit special topics course is for juniors and seniors.
Prerequisite: Department’s permission.

     Download the CS-UY 3943 syllabus

3 Credits Game Design CS-UY4553
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.

     Download the CS-UY 4553 syllabus

3 Credits Computer Networking CS-UY4793
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)

     Download the CS-UY 4793 syllabus

 


Graduate Course Listings

*Syllabi in future semesters may vary somewhat from the current and past syllabi shown here.

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.

Download the CS-GY 6033 syllabus (Yi-Jen Chiang)

Download the CS-GY 6033 syllabus (Linda Sellie)

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.

Download the CS-GY 6083 syllabus

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.

Download the CS-GY 6233 syllabus

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.

Download the CS-GY 6313 syllabus

Download the CS-GY 6313 syllabus (online course)

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.
Prerequisite: CS-GY 6313

Download the CS-GY 6323 syllabus 

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.

Download the CS-GY 6373 syllabus

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.

Download the CS-GY 6553 syllabus

3 Credits Information Systems Security Engineering and Management CS-GY6803
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 and CS-UY 392 or equivalent: *Online version available.

Download the CS-GY 6803 syllabus

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.

Download the CS-GY 6823 syllabus 

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.

Download the CS-GY 6843 syllabus

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.

Download the CS-GY 6903 syllabus

3 Credits Machine Learning CS-GY6923
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.
Prerequisite: Graduate status with undergraduate level probability theory

Download the CS-GY 6923 syllabus (Machine Learning)

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.

Download the CS-GY 6963 syllabus 

3 Credits Selected Topics in CS CS-GY9223

Download the CS-GY 9223 syllabus (Mobile and Embedded Systems)

Download the CS-GY 9223 syllabus (Privacy in Electronic Safety)

Download the CS-GY 9223 syllabus (Distributed Systems)