Computer Science (CSCI-UA)

CSCI-UA 2  Introduction to Computer Programming (No Prior Experience)  (4 Credits)  
Typically offered Fall, Spring, and Summer terms  
Prerequisite: Three years of high school mathematics or equivalent. No prior computer experience assumed. Students with any programming experience should consult with the computer science department before registering. Students who have taken or are taking CSCI-UA 101 will not receive credit for this course. Note: This course is not intended for computer science majors, although it is a prerequisite for students with no previous programming experience who want to continue in CSCI-UA 101. Offered every semester. 4 points. An introduction to the fundamentals of computer programming, which is the foundation of Computer Science. Students design, write and debug computer programs. No knowledge of programming is assumed.
Grading: CAS Graded  
Repeatable for additional credit: No  
CSCI-UA 3  Introduction to Computer Programming (Limited Prior Experience)  (4 Credits)  
This course introduces object-oriented programming, recursion, and other important programming concepts to students who already have had some exposure to programming in the context of building applications using Python. Students will design and implement Python programs in a variety of applied areas.
Grading: CAS Graded  
Repeatable for additional credit: No  
CSCI-UA 4  Introduction to Web Design and Computer Principles  (4 Credits)  
Typically offered Fall, Spring, and Summer terms  
Prerequisite: Three years of high school mathematics or equivalent. No prior computing experience is assumed. Students with computing experience should consult with the computer science department before registering. Offered every semester. 4 points. This course introduces students to both the practice of web design and the basic principles of computer science. The practice component of the course covers not only web design but also current graphics and software tools. The principles section includes an overview of hardware and software, the history of computers, and a discussion of the impact of computers and the internet.
Grading: CAS Graded  
Repeatable for additional credit: No  
CSCI-UA 60  Database Design and Implementation  (4 Credits)  
Typically offered Fall and Spring  
Students that have successfully completed CSCI-UA 479 Data Management and Analysis are not eligible to take CSCI-UA 60 Database Design and Implementation. Introduces principles and applications of database design and working with data. Students use python as they prepare, analyze and work with data; SQL to study the principles and implementations of relational databases; and are introduced to other database paradigms such as NoSQL. Students apply these principles to computer systems in general and in their respective fields of interest.
Grading: CAS Graded  
Repeatable for additional credit: No  
CSCI-UA 61  Web Development and Programming  (4 Credits)  
Typically offered Fall and Spring  
Students that have successfully completed CSCI-UA 467 Applied Internet Technology are not eligible to take CSCI-UA 61 Web Development and Programming. This course will provide a practical approach to web technologies and programming. Students will build interactive, secure and powerful web programs. This course will cover client and server side technologies for the web.
Grading: CAS Graded  
Repeatable for additional credit: No  
CSCI-UA 74  Big Ideas: Artificial Intelligence  (2 Credits)  
This course provides a high-level overview of the key ideas and technologies that lead to revolutionary changes in Artificial Intelligence and to the explosive growth in practical applications of AI. Taught by a team of NYU's top experts in artificial intelligence lead by the Turing award winner Yann LeCun, the course will introduce students to a range of topics in fundamentals of AI and its key sub-areas including machine learning, natural language processing, computer vision as well as its applications in different domains.
Grading: CAS Pass/Fail  
Repeatable for additional credit: No  
CSCI-UA 101  Intro to Computer Science  (4 Credits)  
Typically offered Fall and Spring  
Students learn how to design algorithms to solve problems and how to translate these algorithms into working computer programs. Experience is acquired through programming projects in a high level programming language. CSCI-UA 101 is intended as a first course for computer science majors, and for students of other scientific disciplines. Programming assignments.
Grading: CAS Graded  
Repeatable for additional credit: No  
CSCI-UA 102  Data Structures  (4 Credits)  
Typically offered Fall and Spring  
The use and design of data structures, which organize information in computer memory. Stacks, queues, linked lists, binary trees: how to implement them in a high level language, how to analyze their effect on algorithm efficiency, and how to modify them. Programming assignments.
Grading: CAS Graded  
Repeatable for additional credit: No  
CSCI-UA 201  Computer Systems Org  (4 Credits)  
Typically offered Fall and Spring  
This course covers the internal structure of computers, machine (assembly) language programming, and the use of pointers in high-level languages. Topics include the logical design of computers, computer architecture, the internal representation of data, instruction sets, and addressing logic, as well as pointers, structures, and other features of high-level languages that relate to assembly language. Programming assignments will be both in assembly language and other languages.
Grading: CAS Graded  
Repeatable for additional credit: No  
CSCI-UA 202  Operating Systems  (4 Credits)  
Typically offered Fall and Spring  
This course covers the principles and design of operating systems. Topics include process scheduling and synchronization, deadlocks, memory management including virtual memory, input-output and file systems. Programming assignments.
Grading: CAS Graded  
Repeatable for additional credit: No  
Prerequisites: (CSCI-UA 201 with a Minimum Grade of C OR CENG-SHU 202 OR CS-UH 2010 OR ENGR-UH 3511).  
CSCI-UA 310  Basic Algorithms  (4 Credits)  
Typically offered Fall and Spring  
Prerequisites: Data Structures (CSCI-UA 102); Discrete Mathematics (MATH-UA 120); and either Calculus I (MATH-UA 121) OR Math for Economics I (MATH-UA 211). An introduction to the study of algorithms. Two main themes are presented: designing appropriate data structures, and analyzing the efficiency of the algorithms which use them. Algorithms for basic problems are studied. These include sorting, searching, graph algorithms and maintaining dynamic data structures. Homework assignments, not necessarily involving programming.
Grading: CAS Graded  
Repeatable for additional credit: No  
CSCI-UA 380  Topics of General Interest:  (4 Credits)  
Typically offered Fall, Spring, and Summer terms  
Detailed descriptions will be available when topics are announced. Typical offerings are Introduction to Multimedia; Database and Web Programming; Interface Design for the World Wide Web. Note: These courses cannot be used as credit towards the major sequence.
Grading: CAS Graded  
Repeatable for additional credit: Yes  
CSCI-UA 381  Programming Tools for the Data Scientist  (4 Credits)  
This course focuses on building applications in Python using a project-based learning approach. Students will design projects using important Python packages in a variety of applied areas such as textual analysis, data visualization, and others.
Grading: CAS Graded  
Repeatable for additional credit: No  
CSCI-UA 421  Numerical Computing  (4 Credits)  
Typically offered Spring  
Introduction to numerical computation: the need for floating-point arithmetic, the IEEE floating-point standard. Importance of numerical computing in a wide variety of scientific applications. Fundamental types of numerical algorithms: direct methods (e.g., for systems of linear equations), iterative methods (e.g., for a nonlinear equation), and discretization methods (e.g., for a differential equation). Numerical errors: How can you tell if you can trust your answers? The use of graphics and software packages such as Matlab. Programming assignments.
Grading: CAS Graded  
Repeatable for additional credit: No  
CSCI-UA 453  Theory of Computation  (4 Credits)  
Typically offered Fall  
This course takes a mathematical approach in studying topics in computer science, such as: regular languages and some of their representations (deterministic finite automata, non-deterministic finite automata, regular expressions); proof of non-regularity. Context free languages and pushdown automata; proofs that languages are not context free. Elements of computability theory. Brief introduction to NP-completeness.
Grading: CAS Graded  
Repeatable for additional credit: No  
CSCI-UA 467  Applied Internet Technology  (4 Credits)  
Students that successfully complete CSCI-UA 467 Applied Internet Technology are not eligible to take CSCI-UA 61 Web Development and Programming. Applied Internet Technology is a practical introduction to creating modern web applications. It covers full-stack (that is, every aspect of building a database driven web application: server programming, database implementation, frontend markup, styling and interactivity) web development. It includes topics such as database and data model design, web application architecture, separation of logic and presentation, handling user input and processing form data, managing asynchronous processes, strategies for creating real-time web applications, and handling client-side interactivity. Students will use current server and client-side web frameworks and libraries to build dynamic, data-driven sites. Various applications to support development will also be introduced, such as version control, static analysis tools, and build systems.
Grading: CAS Graded  
Repeatable for additional credit: No  
Prerequisites: (CSCI-UA 201 with a Minimum Grade of C OR CS-UH 2010 OR ENGR-UH 3511 OR CENG-SHU 202).  
CSCI-UA 470  Object Oriented Programming  (4 Credits)  
Typically offered Fall  
Object-oriented programming has emerged as a significant software development methodology. This course introduces the important concepts of object-oriented design and languages, including code reuse, data abstraction, inheritance, and dynamic overloading. It covers in depth those features of Java and C++ that support object-oriented programming and gives an overview of other object-oriented languages of interest. Significant programming assignments, stressing object-oriented design.
Grading: CAS Graded  
Repeatable for additional credit: No  
Prerequisites: (CSCI-UA 201 with a Minimum Grade of C OR CS-UH 2010 OR ENGR-UH 3511 OR CENG-SHU 202).  
CSCI-UA 472  Artificial Intelligence  (4 Credits)  
Typically offered Fall and Spring  
Many cognitive tasks that people can do easily and almost unconsciously have proven extremely difficult to program on a computer. Artificial intelligence tackles the problem of developing computer systems that can carry out these tasks. Focus is on three central areas in AI: representation and reasoning, machine learning, and natural language processing.
Grading: CAS Graded  
Repeatable for additional credit: No  
Prerequisites: (CSCI-UA 201 with a Minimum Grade of C OR CS-UH 2010 OR CENG-SHU 202) AND (CSCI-UA 310 with a Minimum Grade of C OR CS-UH 1052 OR ENGR-UH 3510 OR CSCI-SHU 220).  
CSCI-UA 473  Fundamentals of Machine Learning  (4 Credits)  
This exciting and fast-evolving field of computer science has many recent consumer applications (e.g., Microsoft Kinect, Google Translate, IPhone's Siri, digital camera face detection, Netflix recommendations, Google news) and applications within the sciences and medicine (e.g., predicting protein-protein interactions, species modeling, detecting tumors, personalized medicine). Students learn the theoretical foundations and how to apply machine learning to solve new problems.
Grading: CAS Graded  
Repeatable for additional credit: No  
CSCI-UA 474  Software Engineering  (4 Credits)  
An intense hands-on study of practical techniques and methods of software engineering. Topics include advanced object-oriented design, design patterns, refactoring, code optimization, universal modeling language, threading, user interface design, enterprise application development, and development tools. All topics are integrated and applied during the semester-long group project. The aim of the project is to prepare students for dynamics in a real workplace. Members of the group meet on a regular basis to discuss the project and to assign individual tasks. Students are judged primarily on the final project presentations.
Grading: CAS Graded  
Repeatable for additional credit: No  
Prerequisites: (CSCI-UA 201 with a Minimum Grade of C OR CS-UH 2010 OR ENGR-UH 3511 OR CENG-SHU 202).  
CSCI-UA 475  Predictive Analytics  (4 Credits)  
Predictive analytics is the art and science of extracting useful information from historical data and present data for the purpose of predicting future trends. In this course, students will be introduced to the phases of the analytics life-cycle and will gain an understanding of a variety of tools and machine learning algorithms for analyzing data and discovering forward insights. Several techniques will be introduced including: data preprocessing techniques, data reduction algorithms, data clustering algorithms, data classification algorithms, uplifting algorithms, association rules, data mining algorithms, recommender systems, and more. This course aims to provide students with skills of the new generation of data scientists that will allow them to structure, analyze and derive useful insights from data that could help make better decisions.
Grading: CAS Graded  
Repeatable for additional credit: No  
CSCI-UA 476  Processing Big Data for Analytics Applications  (4 Credits)  
This course introduces platforms, tools, and the architectures that facilitate scalable management and processing of vast quantities of data. We will explore open source tools enabling the efficient acquisition, storage, and processing of Big Data. Students will learn about distributed storage solutions such as the Apache Hadoop Distributed File System (HDFS), which supports storage of Big Data. Students will gain hands-on experience with distributed processing Apache solutions such as Hadoop MapReduce, HBase, Hive, Impala, Pig, core Spark, Spark SQL, and Spark Streaming. Other Apache big data tools covered are Oozie, Zookeeper, Flume, and Kafka.
Grading: CAS Graded  
Repeatable for additional credit: No  
CSCI-UA 478  Intro to Cryptography  (4 Credits)  
Typically offered Fall and Spring  
An introduction to the principles and practice of cryptography and its application to network security. Topics include symmetric-key encryption (block ciphers, modes of operations, AES), message authentication (pseudorandom functions, CBC-MAC), public-key encryption (RSA, ElGamal), digital signatures (RSA, Fiat-Shamir), and authentication applications (identification, zero-knowledge).
Grading: CAS Graded  
Repeatable for additional credit: No  
Prerequisites: (CSCI-UA 310 with a Minimum Grade of C OR CS-UH 1052 OR ENGR-UH 3510 OR CSCI-SHU 220).  
CSCI-UA 479  Data Management and Analysis  (4 Credits)  
Typically offered Fall and Spring  
Students that successfully complete CSCI-UA 479 Data Management and Analysis are not eligible to take CSCI-UA 60 Database Design and Implementation. Extracting, transforming and analyzing data in myriad formats. Using traditional relational databases as well as non-relational databases to store, manipulate, and query data. Students will learn how to work with data by writing custom programs, creating queries, and using current data analysis tools and libraries… all on a wide array of data sets. Additional related topics will be covered, such as data modeling, cloud databases, and API programming.
Grading: CAS Graded  
Repeatable for additional credit: No  
Prerequisites: (CSCI-UA 102 with a Minimum Grade of C OR CS-UH 1050 OR ENGR-UH 3510 OR CSCI-SHU 210).  
CSCI-UA 480  Special Topics:  (4 Credits)  
Typically offered Fall and Spring  
Each semester, multiple special topics courses are offered, covering topics that may not be offered on a regular basis. Prerequisites vary and are determined by topic. Extracting, transforming and analyzing data in myriad formats with traditional relational databases as well as non-relational databases. Data modeling, cloud databases, and API programming. Garnering insights using Python and current data analysis tools and libraries.
Grading: CAS Graded  
Repeatable for additional credit: Yes  
Prerequisites: (CSCI-UA 201 with a Minimum Grade of C OR CSCI-UA 310 OR MATH-UA 140).  
CSCI-UA 490  Spec Tpcs in Prog Lang:  (4 Credits)  
Covers topics in programming languages at an advanced level. Detailed course descriptions are available when topics are announced.
Grading: CAS Graded  
Repeatable for additional credit: Yes  
Prerequisites: CSCI-UA 201 with a Minimum Grade of C.  
CSCI-UA 520  Undergraduate Research  (4 Credits)  
Typically offered Fall  
The student will perform computer science research that is supervised by a faculty member actively engaged in research and which may lead to results publishable in the computer science literature. A substantial commitment to this work will be expected of the student. The research project may be one or two semesters, to be determined in consultation with the faculty supervisor. Students taking this course for honors credit will be required to write an honors thesis. All other students will need to submit a write-up of the research results at the conclusion of the project.
Grading: CAS Graded  
Repeatable for additional credit: Yes  
Prerequisites: CSCI-UA 202 with a Minimum Grade of C.  
CSCI-UA 521  Undergraduate Research  (4 Credits)  
Typically offered Spring  
The student will perform computer science research that is supervised by a faculty member actively engaged in research and which may lead to results publishable in the computer science literature. A substantial commitment to this work will be expected of the student. The research project may be one or two semesters, to be determined in consultation with the faculty supervisor. Students taking this course for honors credit will be required to write an honors thesis. All other students will need to submit a write-up of the research results at the conclusion of the project.
Grading: CAS Graded  
Repeatable for additional credit: Yes  
Prerequisites: CSCI-UA 202 with a Minimum Grade of C.  
CSCI-UA 897  Internship in Computer Science  (1-4 Credits)  
Restricted to declared computer science majors. Does not count toward the major or minor, but does count toward the CAS degree. Offered every semester. 1 to 4 credits. An internship in computer science is an excellent complement to formal course work. We strongly recommend that students have some practical training along with their classroom experience, so they can explore different career options and gain hands-on experience. An internship is for majors only, and students must have maintained an overall GPA of 3.0 and a computer science GPA of 3.5. The internship will be graded.
Grading: CAS Pass/Fail  
Repeatable for additional credit: Yes  
CSCI-UA 898  Internship in Computer Science  (1-4 Credits)  
An internship in computer science is an excellent complement to formal > course work. We strongly recommend that students have some practical > training along with their classroom experience, so they can explore > different career options and gain hands-on experience. An internship is > for majors only, and students must have maintained an overall GPA of 3.0 > and a computer science GPA of 3.5. The internship will be graded. >
Grading: CAS Pass/Fail  
Repeatable for additional credit: Yes  
CSCI-UA 997  Independent Study  (1-4 Credits)  
Typically offered Fall and Summer terms  
Prerequisite: Permission of the department. Students majoring in the department who have maintained a general average of 3.00 and an average of 3.50 in computer science and who, in the opinion of the department, have the ability and the need for work in topics not included in the listed courses are permitted to work on an individual basis, under the supervision of a member of the department. The independent study must be approved by the department at registration. Students are expected to spend about 3 to 6 hours a week on assigned projects for their study. The project must be scheduled for completion within the semester.
Grading: CAS Graded  
Repeatable for additional credit: Yes  
CSCI-UA 998  Independent Study  (1-4 Credits)  
Typically offered Spring and Summer  
Prerequisite: Permission of the department. Students majoring in the department who have maintained a general average of 3.00 and an average of 3.50 in computer science and who, in the opinion of the department, have the ability and the need for work in topics not included in the listed courses are permitted to work on an individual basis, under the supervision of a member of the department. The independent study must be approved by the department at registration. Students are expected to spend about 3 to 6 hours a week on assigned projects for their study. The project must be scheduled for completion within the semester.
Grading: CAS Graded  
Repeatable for additional credit: Yes  
CSCI-UA 9002  Introduction to Computer Programming (No Prior Experience)  (4 Credits)  
Prerequisite: Three years of high school mathematics or equivalent. No prior computer experience assumed. Students with any programming experience should consult with the computer science department before registering. Students who have taken or are taking CSCI-UA 101 will not receive credit for this course. Note: This course is not intended for computer science majors, although it is a prerequisite for students with no previous programming experience who want to continue in CSCI-UA 101. An introduction to the fundamentals of computer programming, which is the foundation of Computer Science. Students design, write and debug computer programs. No knowledge of programming is assumed.
Grading: CAS Graded  
Repeatable for additional credit: No  
CSCI-UA 9102  Data Structures  (4 Credits)  
The use and design of data structures, which organize information in computer memory. Stacks, queues, linked lists, binary trees: how to implement them in a high level language, how to analyze their effect on algorithm efficiency, and how to modify them. Programming assignments.
Grading: CAS Graded  
Repeatable for additional credit: No  
Prerequisites: CSCI-UA 101.  
CSCI-UA 9201  Computer Systems Org  (4 Credits)  
Typically offered Fall  
This course covers the internal structure of computers, machine (assembly) language programming, and the use of pointers in high-level languages. Topics include the logical design of computers, computer architecture, the internal representation of data, instruction sets, and addressing logic, as well as pointers, structures, and other features of high-level languages that relate to assembly language. Programming assignments will be both in assembly language and other languages.
Grading: CAS Graded  
Repeatable for additional credit: No  
Prerequisites: (CSCI-UA 102 OR CSCI-SHU 210 OR CS-UH 1050 OR CS-UY 1134).  
CSCI-UA 9467  Applied Internet Technology  (4 Credits)  
Students that successfully complete CSCI-UA 467 Applied Internet Technology are not eligible to take CSCI-UA 61 Web Development and Programming. Applied Internet Technology is a practical introduction to creating modern web applications. It covers full-stack (that is, every aspect of building a database driven web application: server programming, database implementation, frontend markup, styling and interactivity) web development. It includes topics such as database and data model design, web application architecture, separation of logic and presentation, handling user input and processing form data, managing asynchronous processes, strategies for creating real-time web applications, and handling client-side interactivity. Students will use current server and client-side web frameworks and libraries to build dynamic, data-driven sites. Various applications to support development will also be introduced, such as version control, static analysis tools, and build systems.
Grading: CAS Graded  
Repeatable for additional credit: No  
CSCI-UA 9472  Artificial Intelligence  (4 Credits)  
There are many cognitive tasks that people can do easily and almost unconsciously but that have proven extremely difficult to program on a computer. Artificial intelligence is the problem of developing computer systems that can carry out these tasks. We will focus on three central areas in AI: representation and reasoning, machine learning, and natural language processing.
Grading: CAS Graded  
Repeatable for additional credit: No  
CSCI-UA 9473  Fundamentals of Machine Learning  (4 Credits)  
Machine learning is an exciting and fast-moving field of computer science with many recent consumer applications (e.g., Microsoft Kinect, Google Translate, Iphone's Siri, digital camera face detection, Netflix recommendations, Google news) and applications within the sciences and medicine (e.g., predicting protein-protein interactions, species modeling, detecting tumors, personalized medicine). This course introduces undergraduate computer science students to the field of machine learning. Students learn about the theoretical foundations of machine learning and how to apply machine learning to solve new problems. Assuming no prior knowledge in machine learning, the course focuses on two major paradigms in machine learning which are supervised and unsupervised learning. In supervised learning, we learn various methods for classification and regression. Dimensionality reduction and clustering are discussed in the case of unsupervised learning
Grading: CAS Graded  
Repeatable for additional credit: No  
CSCI-UA 9479  Data Management and Analysis  (4 Credits)  
Students that successfully complete CSCI-UA 479 Data Management and Analysis are not eligible to take CSCI-UA 60 Database Design and Implementation. Extracting, transforming and analyzing data in myriad formats. Using traditional relational databases as well as non-relational databases to store, manipulate, and query data. Students will learn how to work with data by writing custom programs, creating queries, and using current data analysis tools and libraries… all on a wide array of data sets. Additional related topics will be covered, such as data modeling, cloud databases, and API programming.
Grading: CAS Graded  
Repeatable for additional credit: No  
CSCI-UA 9480  Special Topics:  (4 Credits)  
Technology increasingly permeates every aspect of our lives, including communication, finance and health. The security of the computer systems that enable these services has become a critical issue. This course will cover basic principles of computer security and security engineering. It will introduce fundamental computer security concepts, principles, and techniques. It will also cover notions of real-world cryptography, the mathematical building blocks that underlie any digital security construction. This course will focus on security from an attacker’s perspective (threat modeling) and the defender’s perspective (building and deploying secure systems). Specific topics will include operating system security, network security, web security, applied cryptography, security economics and security psychology. Course projects will focus both on writing secure code and exploiting insecure code.
Grading: CAS Graded  
Repeatable for additional credit: No  
Prerequisites: (CSCI-UA 201 OR CSCI-SHU 311 OR CS-UH 2010 OR CS-UY 2214).