Computer Science (CS-UY)

CS-UY 394X  SPECIAL TOPICS IN COMPUTER SCIENCE  (1-4 Credits)  
Typically offered occasionally  
This variable-credit special topics course is for juniors and seniors. | Prerequisite: Department’s permission.
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: Yes  
CS-UY 410X  UNDERGRADUATE GUIDED STUDIES IN COMPUTER SCIENCE  (1-4 Credits)  
Typically offered Fall, Spring, and Summer terms  
Students work on an individual basis under the supervision of a full-time faculty member in the department. With permission of the department, such students may substitute two semesters of this course for Software Engineering and Design Project requirements.| Prerequisite: Permission of the instructor and the department.
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: Yes  
CS-UY 420X  UNDERGRADUATE RESEARCH IN COMPUTER SCIENCE  (2-4 Credits)  
Typically offered Fall, Spring, and Summer terms  
The student conducts research under the supervision of a faculty member, possibly leading to results publishable in the computer science literature. A substantial commitment to this work is expected. The research project may be one or two semesters, to be determined in consultation with the faculty supervisor. Students must submit written and/or oral reports at the conclusion of the project. Students who are interested in taking this course should speak to faculty members well in advance about research opportunities and background needed. | Prerequisite: permission of instructor
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: Yes  
CS-UY 1113  PROBLEM SOLVING AND PROGRAMMING I  (3 Credits)  
Typically offered Fall, Spring, and Summer terms  
This course introduces problem solving and computer programming and is for undergraduate engineering students who do not have 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 engineering and other disciplines. | Co-requisite: EX-UY 1; Anti-requisite: CS-UY 1114
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
Prerequisites: Co-requisite: EX-UY 1; Anti-requisite: CS-UY 1114.  
CS-UY 1114  INTRO TO PROGRAMMING & PROBLEM SOLVING  (4 Credits)  
Typically offered occasionally  
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
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
Corequisites: EX-UY 1; Anti-requisite: CS-UY 1113.  
CS-UY 1121  Problem Solving via Programming  (1 Credit)  
Typically offered Fall, Spring, and Summer terms  
This course continues to introduce problem solving and computer programming and is for undergraduate engineering students who have some prior experience in programming in any language. The course reviews fundamentals of computer programming as embodied in the Python programming language (variables, expressions, conditional statements, iteration, functions, and basic data types, including strings and lists), introduces object-oriented programming, the dictionary data structure and exception handling. Concepts and methods introduced in the course are illustrated by examples from various disciplines. | Prerequisites: CS-UY 1113 (C- or better). Co-requisite: EX-UY 1. Anti-requisite: CS-UY 1114 or CS-UY 1123
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
CS-UY 1122  Introduction to Computer Science  (2 Credits)  
Typically offered occasionally  
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
Grading: Ugrd Tandon Pass/Fail  
Repeatable for additional credit: No  
Prerequisites: CS-UY 1114 and and limited to First-Year Students.  
CS-UY 1123  PROBLEM SOLVING AND PROGRAMMING II  (3 Credits)  
Typically offered Fall, Spring, and Summer terms  
This course continues to introduce problem solving and computer programming and is for undergraduate engineering students who have some prior experience in programming in any language. The course reviews fundamentals of computer programming as embodied in the Python programming language (variables, expressions, conditional statements, iteration, functions, and basic data types, including strings and lists), introduces object-oriented programming, the dictionary data structure and exception handling. Concepts and methods introduced in the course are illustrated by examples from various disciplines. | Prerequisite: CS-UY 1113 | Co-requisite: EX-UY 1
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
Prerequisites: Prerequeiste: CS-UY 1113 | Co-requisite: EX-UY 1.  
CS-UY 1133  Engineering Problem Solving and Programming  (3 Credits)  
Typically offered occasionally  
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.
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
Corequisites: EX-UY 1.  
CS-UY 1134  Data Structures and Algorithms  (4 Credits)  
Typically offered occasionally  
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
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
Prerequisites: Prereq 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.  
CS-UY 1134G  Data Structures and Algorithms  (4 Credits)  
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
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
CS-UY 2124  Object Oriented Programming  (4 Credits)  
Typically offered Fall and Spring  
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
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
Prerequisites: CS-UY 1134 with C- or better; Corequisite: EX-UY 1.  
CS-UY 2163  INTRODUCTION TO PROGRAMMING IN C  (3 Credits)  
Typically offered Fall and Spring  
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.
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
CS-UY 2204  DIGITAL LOGIC AND STATE MACHINE DESIGN  (4 Credits)  
Typically offered occasionally  
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)
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
CS-UY 2214  COMPUTER ARCHITECTURE AND ORGANIZATION  (4 Credits)  
Typically offered occasionally  
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.
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
CS-UY 2413  DESIGN & ANALYSIS OF ALGORITHMS  (3 Credits)  
Typically offered occasionally  
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
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
CS-UY 3083  Introduction to Databases  (3 Credits)  
Typically offered occasionally  
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-UY 3113  INTRO TO GAME PROGRAMMING  (3 Credits)  
Typically offered occasionally  
A programming intensive introduction to the creation of computer games. Using mostly two-dimensional sprite-based programming, we examine and experiment with animation, physics, artificial intelligence and audio. In addition, the course explores the mathematics of transformations (both 2D and 3D) and the ways they may be represented. | Prerequisite: (CS-UY 2134 or CS-UY 1134) and (CS-UY 2124 or CS-UY 1124) (C- or better).
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
Prerequisites: (CS-UY 2134 or CS-UY 1134) and (CS-UY 2124 or CS-UY 1124) (C- or better).  
CS-UY 3224  INTRO TO OPERATING SYSTM  (4 Credits)  
Typically offered occasionally  
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
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
CS-UY 3224G  INTRO TO OPERATING SYSTM  (4 Credits)  
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
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
CS-UY 3233  Game Development Studio I  (3 Credits)  
Typically offered occasionally  
This class introduces the principles of 2D and 3D computer game design. Students learn about the range of game types and understand their conceptual building blocks. Students complete a structured sequence of assignments towards the design for a new game.
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
CS-UY 3254  Introduction to Parallel and Distributed Systems  (4 Credits)  
Typically offered occasionally  
This course offers a solid grounding in the basic issues and techniques of parallel and distributed computing. The material covers the spectrum from theoretical models of parallel and distributed systems to actual programming assignments. | Prerequisite: (CS-UY 2134 or CS-UY 1134) and (CS-UY 2124 or CS-UY 1124) (C- or better) and CS-UY 3224.
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
Prerequisites: (CS-UY 2134 or CS-UY 1134) and (CS-UY 2124 or CS-UY 1124) (C- or better) and CS-UY 3224.  
CS-UY 3314  Design and Implementation of Programming Languages  (4 Credits)  
Typically offered occasionally  
This course covers issues underlying the design of high-level programming languages, along with elements of the compiler technology used to translate those languages into executable code. Topics covered include formal description of language syntax, parsing, memory management, attributes of variables and their binding times, control and data-abstraction mechanisms and object-oriented language features. The focus is on imperative and object-oriented languages, with brief introduction to functional and logic-programming paradigms. Substantial programming projects are required. | Prerequisites: CS-UY 2134 (C- or better) or CS-UY 1134 (C- or better).
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
CS-UY 3393  UNIX System Programming  (3 Credits)  
Typically offered occasionally  
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.
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
Prerequisites: (CS 3224 OR CS-UH 3010 OR ENGR-UH 3520 OR CSCI-SHU 215).  
CS-UY 3913  JAVA AND WEB DESIGN  (3 Credits)  
Typically offered occasionally  
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).
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
Prerequisites: (CS-UY 2134 or CS-UY 1134) and (CS-UY 2124 or CS-UY 1124) (C- or better).  
CS-UY 3923  COMPUTER SECURITY  (3 Credits)  
Typically offered occasionally  
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-UY 3933  NETWORK SECURITY  (3 Credits)  
Typically offered occasionally  
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
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
CS-UY 3943  SPECIAL TOPICS IN COMPUTER SCIENCE  (3 Credits)  
Typically offered occasionally  
This three-credit special topics course is for juniors and seniors. | Prerequisite: Department’s permission.
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: Yes  
CS-UY 4513  Software Engineering  (3 Credits)  
Typically offered occasionally  
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
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
CS-UY 4523  Design Project  (3 Credits)  
Typically offered occasionally  
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.
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
Prerequisites: (CS-UY 4513 OR CS-UY 4513).  
CS-UY 4533  Interactive Computer Graphics  (3 Credits)  
Typically offered occasionally  
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)
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
CS-UY 4543  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.
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
CS-UY 4553  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. | 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.
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
CS-UY 4563  Introduction to Machine Learning  (3 Credits)  
Typically offered Fall  
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
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
CS-UY 4613  Artificial Intelligence  (3 Credits)  
Typically offered occasionally  
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)
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
CS-UY 4753  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. | Prerequisite: CS-UY 3923
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
Prerequisites: CS-UY 3923.  
CS-UY 4773  Penetration Testing and Vulnerability Analysis  (3 Credits)  
Typically offered occasionally  
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
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
CS-UY 4783  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: (CS-UY 2134 or CS-UY 1134) and (CS-UY 2124 or CS-UY 1124) (C- or better) and MA-UY 2314.
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
Prerequisites: (CS-UY 2134 or CS-UY 1134) and (CS-UY 2124 or CS-UY 1124) (C- or better) and MA-UY 2314.  
CS-UY 4793  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 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)
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No  
CS-UY 4793G  Computer Networking  (3 Credits)  
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)
Grading: Ugrd Tandon Graded  
Repeatable for additional credit: No