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
|