Course Descriptions

Course descriptions for the computer science major requirements and the department's general courses for non-majors are listed below. All other courses needed to complete degree requirements are described in the New York University Bulletin for the College of Arts & Science.

CSCI-UA.0001 COMPUTERS IN SOCIETY

Prerequisite: None. No prior computer experience assumed. Note: This course is not intended for computer science majors. Offered in the spring. 4 points.
This course will address the impact of the digital computer on individuals, organizations and modern society as a whole, and the social, political and ethical issues involved in the computer industry. Topics will change to reflect changes in technology and current events. Guest lecturers from various fields will be invited to speak in class.

CSCI-UA.0002, INTRODUCTION TO COMPUTER PROGRAMMING

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.
A gentle 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.

CSCI-UA.0002, Introduction to Computer Programming

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.

CSCI-UA.0004, INTRODUCTION TO WEB DESIGN & COMPUTER PRINCIPLES

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.

CSCI-UA.0005 COMPUTERS IN PRINCIPLE AND PRACTICE II

NOTE: This course is not currently being offered by the Department.
Prerequisite: CSCI-UA.0002 and CSCI-UA.0004. 4 points.

Students examine the latest Web techniques from creating graphics to writing programs using HTML, Photoshop, Macromind Director, JavaScript and others. Since the technology of the Web is constantly changing, new tools and techniques will be introduced as they evolve.

CSCI-UA.0060 DATABASE DESIGN AND WEB IMPLEMENTATION

Prerequisite: CSCI-UA.0002 and CSCI-UA.0004. Offered in the spring. 4 points.
This course introduces principles and applications of database design. Students will learn to use a relational database system; learn web implementations of database designs; and write programs in SQL. Students will explore principles of database design and apply those principles to computer systems in general and in their respective fields of interest.

CSCI-UA.0061 WEB DEVELOPMENT AND PROGRAMMING

Prerequisite: CSCI-UA.0002 and CSCI-UA.0004. Offered in the fall. 4 points.
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 World Wide Web. Additional topics will include foundations of the Web, such as JavaScript, PERL/CGI, SSI, Server Technologies, XML, DTD, and XSL.

CSCI-UA.0101 INTRODUCTION TO COMPUTER SCIENCE

Prerequisite: CSCI-UA.0002 or departmental permission. Offered every fall and spring. 4 points.
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.0101 is intended as a first course for computer science majors, and for students of other scientific disciplines. Programming assignments.

CSCI-UA.0102 DATA STRUCTURES

Prerequisite: CSCI-UA.0101. Offered every fall and spring. 4 points.
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.

CSCI-UA.0201 COMPUTER SYSTEMS ORGANIZATION

Prerequisite: CSCI-UA.0102. Offered every fall and spring. 4 points.
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.

CSCI-UA.0202 OPERATING SYSTEMS

Prerequisite: CSCI-UA.0201. Offered every fall and spring. 4 points.
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.

CSCI-UA.0310 BASIC ALGORITHMS

Prerequisites: CSCI-UA.0102 and MATH-UA.0120. Offered every fall and spring. 4 points.
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.

CSCI-UA.0380 TOPICS OF GENERAL COMPUTING INTEREST

Prerequisite: Determined by topic. Offered every fall and spring. 4 points.
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. Detailed descriptions per semester: General Topics Course List

CSCI-UA.0421 NUMERICAL COMPUTING

Prerequisite: CSCI-UA.0102 and MATH-UA.0140. Offered every spring. 4 points.
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 projects are assigned.

CSCI-UA.0436 COMPUTER ARCHITECTURE

Prerequisites: CSCI-UA.0201 and MATH-UA.0120. Offered every fall. 4 points.
A first course in the structure and design of computer systems. Basic logic modules: arithmetic circuits. Control unit design of computers and structure of a simple processor; speed-up techniques. Storage techniques and structure of memory hierarchies; error detection and correction. Input-output structures, busses, programmed data transfer, interrupts, DMA, Microprocessors. Discussion of various computer architectures; stack, pipeline, and parallel machines; multiple functional units.

CSCI-UA.0444 INTRODUCTION TO DATABASE SYSTEMS

Prerequisite: CSCI-UA.0201 and CSCI-UA.0310. Offered every spring. 4 points.
Modeling the information structure of an enterprise. Logical design and relational database implementation using a tool such as Visio. Relational algebra and SQL as implemented in representative systems, such as Microsoft Access and Oracle. Normalization and denormalization. Introduction to online analytical processing, physical design, query processing and optimizaton, recovery and concurrency.

CSCI-UA.0453 THEORY OF COMPUTATION

Prerequisite: CSCI-UA.0310. Offered every fall. 4 points.
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.

CSCI-UA.0468 UNIX TOOLS

Prerequisite: CSCI-UA.0201. 4 points.
This course examines UNIX as an operating system and covers the sophisticated UNIX programming tools available to users and programmers. Shell and Perl scripting are studied in detail. Other topics include networking, system administration, security, and UNIX internals.

CSCI-UA.0470 OBJECT ORIENTED PROGRAMMING

Prerequisite: CSCI-UA.0201. Offered every fall. 4 points.
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.

CSCI-UA.0472 ARTIFICIAL INTELLIGENCE

Prerequisite: CSCI-UA.0201 and CSCI-UA.0310. 4 points.
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.

CSCI-UA.0474 SOFTWARE ENGINEERING

Prerequisite: CSCI-UA.0202, CSCI-UA.0470 or permission of the department. Offered every spring. 4 points.
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 will meet on a regular basis to discuss the project and to assign individual tasks. Students will be judged primarily on the final project presentations.

CSCI-UA.0476 APPLIED INTERNET TECHNOLOGY

Prerequisite: CSCI-UA.0201. 4 points.
This course covers applied Internet technologies and programming for the World Wide Web. Students build secure, interactive and powerful Internet/Web applications. The course covers important topics such as: Java Servlets, Java Server Pages, Databases and JDBC, XML, Web Services and related standards, including SOAP, WSDL, and UDDI.

CSCI-UA.0477 DISTRIBUTED STORAGE SYSTEMS

Prerequisite: Honors CSCI-UA.0202 or permission of the department. Offered every other year. 4 points.
This class will examine file system implementation, low-level database storage techniques, and distributed programming. Lectures will cover basic file system structures, journaling and logging, I/O systems performance, RAID (redundant arrays of inexpensive disks), the remote procedure call abstraction, and numerous systems illustrating these concepts. Programming assignments will make the topics concrete. In a final project, students will build a real, functioning Unix file system. Topics: file systems, distributed computing, replication and consistency, fault-tolerance, crash recovery. Students will have access to dedicated equipment for the assignments and projects.

CSCI-UA.0478 INTRODUCTION TO CRYPTOGRAPHY

Prerequisite: CSCI-UA.0310. 4 points. Cross-listed with MATH-UA.0243
This course provides an introduction to both 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); authentication applications (identification, zero-knowledge) and others time permitting.

CSCI-UA.0480 SPECIAL TOPICS IN COMPUTER SCIENCE

Prerequisite: Determined by topic. Offered every fall and spring. 4 points.
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. Information is posted as it becomes available for each semester: Special Topics Course List.

Note: This course may be taken for credit in the major sequence more than once in different topics.

CSCI-UA.0490 SPECIAL TOPICS IN PROGRAMMING LANGUAGES

Prerequisite: CSCI-UA.0201, plus others determined by topic. Offered every other year. 4 points.
Covers topics in programming languages that are not offered regularly. Detailed course descriptions are available when topics are announced. Typical offerings involve in-depth coverage of specific programming languages such as LISP, SETL, PROLOG and Ada. Note: This course may be taken for credit in the major sequence more than once in different topics.

CSCI-UA.0520/0521 UNDERGRADUATE RESEARCH

Prerequisite: Permission of the department. 4 points per term.
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.

CSCI-UA.0997/0998 INDEPENDENT STUDY

Prerequisite: Permission of the department. 2-4 points per term. Does not satisfy major elective requirement.
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. For more information, visit: Independent Study and receiving credit for internships.

MATH-UA.0121 CALCULUS I

Prerequisite: Placement test, passing MATH-UA.0009 with a grade of C or better, or permission of the department. Offered every semester. 4 points.
Derivatives, antiderivatives, integrals of functions of one real variable, logarithmic and exponential functions. Applications, including graphing, maximizing and minimizing functions. Definite integrals and fundamental theorem.

MATH-UA.0122 CALCULUS II

Prerequisite: passing MATH-UA.0121 with a grade of C or better, or permission of the department. Offered every semester. 4 points.
Applications of definite integrals. The calculus of trigonometric, inverse trigonometric, logarithmic, and exponential functions. Techniques of integration. Plane analytic geometry. Polar coordinates. Infinite series.

MATH-UA.0120 DISCRETE MATHEMATICS

Prerequisite: passing MATH-UA.0121. Offered every semester. 4 points.
A first course in discrete mathematics. Sets, algorithms, induction, combinatorics. Graphs and trees. Combinatorial circuits. Logic and Boolean algebra.

MATH-UA.0140 LINEAR ALGEBRA

Prerequisite: MATH-UA.0121 (CSCI-UA.0122 Calculus II is strongly recommended as a prerequisite). Offered every semester. 4 points.
Systems of linear equations. Gaussian elimination, matrices, determinants, Cramer's rule. Vectors, vector spaces, basis and dimension, linear transformation. Eigenvalues, eigenvectors, and quadratic forms.

GRADUATE COURSES OPEN TO UNDERGRADUATES

A limited number of graduate courses are open to undergraduate students who have maintained an average of 3.5 or better in computer science, subject to permission of the director of undergraduate studies. These may be reserved for graduate credit if the student is pursuing the accelerated master's program or substituted for undergraduate elective credit. Consult the department Web site: CAS Graduate Course Guidelines.


top | contact webmaster@cs.nyu.edu