Computer Science
Chair: Zhigang Xiang
Deputy Chair and
Graduate Admissions Officer: Jennifer
Whitehead
Assistant Chair for Undergraduate
Studies: Kenneth J.
Lord
Assistant Chair for Graduate
Studies: Keitaro Yukawa
Department Office: Science Building A202, 997-3500
Department Website: http://www.cs.qc.cuny.edu
The dynamic and growing field
of computer science provides opportunities for intellectual activity,
research, and future employment. The aim of the master’s program is
to prepare students for professional careers in private industry, government,
and academe. For those who seek academic careers and opportunities for
more advanced research, the master’s program may constitute a significant
portion of the PhD program offered by the CUNY Graduate Center. For
information on the PhD program, consult the department.
The department’s faculty
members conduct a wide range of research in computer science, and receive
external funding from such federal agencies as the National Science
Foundation, National Institutes of Health, and Department of Defense,
as well as from corporate sources. Current areas of faculty research
include bioinformatics, computer vision, information retrieval, data
mining, instructional technology, medical and document imaging, networking,
and parallel processing, among others. Please examine our webpage for
the most up-to-date information: www.cs.qc.cuny.edu
We have about 230 computers
running various operating systems (Solaris, Linux, Mac OS, Microsoft
Windows, etc.) networked in the department, available for research and
instruction, and the college provides many additional PCs and servers.
Faculty
Xiang, Zhigang, Chair, Associate Professor, PhD 1988, State University of New
York at Buffalo: computer graphics, image processing, interactive techniques
Whitehead, Jennifer, Deputy
Chair, Graduate Admissions Officer,
Professor, PhD 1975,
University of Warwick, England: continuous computational complexity,
p-adic computing, real-time scheduling, file transfer scheduling
Lord, Kenneth J., Assistant
Chair for Undergraduate Studies,
Lecturer, PhD 1995,
City University of New York: web programming
Yukawa, Keitaro, Assistant
Chair for Graduate Studies, Assistant
Professor, PhD 1987,
University of Waterloo: database systems, database aspects of multimedia
documents, programming languages
Boklan, Kent D., Assistant Professor, PhD 1992, University of Michigan at
Ann Arbor: cryptography and computer security
Brown, Theodore D., Professor, PhD
1971, New York University: simulation methodology, analytic modeling,
parallel algorithms, analysis of algorithms
Chen, Jinlin, Assistant Professor,
PhD 1999, Tsinghua University: web information service, embedded systems,
software engineering
Fluture, Simina, Lecturer, MA
1999, Queens College, CUNY: medical applications of computer vision,
bio-informatics
Goldberg, Robert R., Professor, PhD
1989, Courant Institute of Mathematical Science, New York University:
biomedical image processing, computer vision, formal languages and automata,
genetic algorithms, graphics, scheduling theory
Goodman, Seymour, Professor Emeritus, PhD 1962, Columbia University: microprogramming,
computer architecture
Gross, Ari D., Associate Professor, PhD 1991, Columbia University: computer
vision, computer graphics, shape modeling, computational geometry
Huenerfauth, Matt, Assistant Professor, PhD 2006, University of Pennsylvania:
assistive technology for people with disabilities, natural language
processing, virtual human modeling and animation, computational linguistics
of sign language
Ji, Heng, Assistant Professor,
PhD 2007, New York University: statistical natural language processing,
data nining and machine learning, artificial intelligence
Kong, T. Yung, Professor, PhD
1986, Oxford University, England: geometrical and topological problems
related to computer vision graphics and image processing
Kwok, Kui-Lam, Professor, PhD
1965, University of Manchester, England: information retrieval (IR),
application of neural networks to IR, data structures
Obrenic´, Bojana, Associate Professor, PhD 1993, University of Massachusetts
at Amherst: algorithm design, especially for parallel and concurrent
systems, databases, computational combinatorics, graph theory
Phillips, Tsaiyun Ihsin, Professor,
PhD 1984, University of Maryland at College Park: computer vision, image
processing, performance evaluation, document image analysis
Reddy, Boojala V.B., Assistant Professor, PhD 1988, University of Hyderabad:
bioinformatics, computational biology, In
Silico drug design
Rosenberg, Andrew, Assistant
Professor, PhD 2009, Columbia University: prosodic event detection,
natural language processing, spoken language processing, prosodyl intonation,
machine learning
Ryba, Alexander, Professor, PhD
1985, Cambridge University, England: computational group theory, finite
group theory, combinatorial game theory
Sy, Bon K., Professor, PhD 1988, Northeastern University:
uncertain reasoning, use of AI augmentative communication, recognition
of impaired speech, data mining, data warehouse, wireless networking,
VoIP technology
Vickery, Christopher, Professor, PhD
1971, City University of New York: computer organization and architecture,
software design, logic design
Waxman, Jerry J., Professor, PhD
1973, New York University: voice/data systems, algorithms, computer science
education
Wee, Hoeteck, Assistant
Professor, PhD 2007, University of California, Berkeley: cryptography
and complexity theory
Program for the Master
of Arts Degree
The Master of Arts in computer science includes courses in four areas of study: software, theoretical
foundations, hardware, and mathematical applications and algorithms.
The software area is the
primary focus of the program, and includes courses in fundamental algorithms,
software design, database systems, distributed software systems, operating
systems, compiler design, graphics, information organization and retrieval,
and artificial intelligence. Theoretical foundations courses
include the mathematical treatment of such topics as formal language
theory, automata theory, and computability theory. Course offerings in the hardware area cover topics
including computer systems design, networking principles, and distributed
hardware systems. The mathematical applications and algorithms
area includes courses covering sequential and parallel numerical algorithms,
applications of probability and statistics to the study of hardware
and software systems, and principles of simulation and modeling.
All 700-level courses
in the department are applicable to the CUNY doctoral program in computer
science. Some graduate courses are open to students who are not matriculated
in the master’s program. Consult the department for details.
Requirements for Matriculation
These requirements are in
addition to the general requirements for admission.
Matriculation is based
on merit as judged by the graduate admissions committee of the department.
The committee will expect each candidate for matriculation to have an
adequate mathematics background, including integral calculus, probability
and statistics, and discrete mathematical structures.
Matriculation requirements
also include a working knowledge of at least one high-level, object-oriented
programming language (some courses, including core courses, require
knowledge of specific languages; consult the department for current
requirements), assembly language programming, data structures, principles
of programming languages, operating systems, computer organization,
and theory of computation. A candidate who is partially deficient in
the above requirements may, at the discretion of the admissions committee,
be admitted subject to the requirement that the deficiencies be rectified.
Appropriate means to fulfill this requirement are provided by the department.
Courses taken to meet admissions deficiencies do not count toward the
credit requirements for the degree; the average (mean) grade in these
courses must be at least B (3.0), and each one of these courses
must be completed with a grade of B– or better.
The Jacob Rootenberg
Fellowship Award
Each semester an award from
the Jacob Rootenberg Fellowship Fund will be made to a new matriculant
with an outstanding record of scholarship.
Program Requirements
These requirements are in
addition to the general requirements for the Master of Arts as
specified in this Bulletin.
Each student must complete
30 credits of 700-level courses, including the core courses (Algorithms
I, Distributed Computing Computability and Complexity, and Computer
Architecture and Networks). In addition, the student must choose one
course in each of the three semi-core categories: software, hardware,
and mathematical applications and algorithms. After completion of 21
credits, each student must satisfy a capstone requirement by completing
a software development practicum, a hardware design practicum, a research practicum, an approved research project, or a master’s thesis. The
remaining courses may be freely chosen from a variety of other 700-level
courses, including special topics and seminar courses.
Courses in Computer Science
The second digit of each course
number represents a particular area.
0 or 1 Software
2 Foundations
4 Hardware
6 Mathematical Applications and Algorithms
Any course designated as “scs,”
“sch,” and “scm” (respectively: software, hardware, and mathematical
applications and algorithms) satisfies the semi-core requirement in
that particular area.
Core Courses (Students must take all four courses):
CSCI 700. Algorithms I
CSCI 715. Distributed Computing
CSCI 722. Computability and
Complexity
CSCI 744. Computer Architecture
and Networks
Note:
Students who passed CSCI 323 or 344 with a grade of B+ or better may apply for a waiver
from CSCI 700 or 715, respectively. Students who receive this waiver
will still be required to complete 30 credits of 700-level courses.
Software Semi-core Courses (students must take at least one):
CSCI 701. Software Design
CSCI 707. Compiler Construction
CSCI 718. Computer Graphics
Hardware Semi-core Courses (students must take at least one):
CSCI 745. Switching Theory
CSCI 746. Computer Systems
CSCI 748. Computer Networks
Mathematical Applications
and Algorithms Semi-core Courses (students
must take at least one):
CSCI 762. Algorithms II
CSCI 764. Topics in Systems
Simulation
CSCI 766. Probabilistic Models
in Computer Systems
Elective Courses
CSCI 711. Database Systems
CSCI 780, 782, 784, 786, or
783. Special Topics in Computer Science
CSCI 790, 792, 794, 796, or
793. Seminars in Computer Science
CSCI 799.1–3. Research
Note: In the seminar and special topic courses
the third digit represents the subject area. (The numbers 783 and 793
will be given to courses that resist categorization with respect to
subject area.)
Capstone Courses (Students must take one, after completing
21 credits)
CSCI 731. Software Development
Practicum
CSCI 732. Research Practicum
CSCI 733. Master’s
Thesis
CSCI 799.3. Research
Note:
The programming project reports, research reports, and master’s theses
submitted by the students shall be placed in the departmental files.
Other Courses
CSCI 788.1–3. Computer Science:
Cooperative Education Placement.
MA Courses
CSCI 688. Advanced Productivity
Tools for Business.
. 2 hr. lec. 2 hr. lab.; 3 cr. Prereq.: CSCI 012 or equivalent. Computing
technology for students in business and finance-related disciplines.
Advanced analytic techniques with an emphasis on spreadsheet topics
such as financial functions and formulas, pivot tables, charting, and
macro programming. Integration of spreadsheets, databases, and presentation
tools for analysis and report generation. (5-08)
CSCI 700. Algorithms
I. 3 hr.; 3 cr. Fundamental
algorithms, their use, analysis, and the data structures used in their
formulation. Programming paradigms such as dynamic programming, divide
and conquer, greedy algorithms, branch and bound, backtracking, and
their applications. Parallel algorithms.
CSCI 701. Software Design. 3 hr.; 3 cr. Prereq.: CSCI 700. Techniques
and principles of systematic software development. Review of current
software development tools. Top-down design and structured programming.
History and concepts of modular design. Graphical user interfaces. Object-oriented
design including data abstraction by classes and type polymorphism.
Significant programming projects will be assigned.
CSCI 707. Compiler Construction. 3 hr.; 3 cr. Prereq.: CSCI 700. Theory
and practice of compiler construction. Topics include theoretical and
practical studies of lexical analysis, syntax analysis, type checking,
semantic analysis, object code generation and optimization.
CSCI 711. Database Systems. 3 hr.; 3 cr. Prereq.: CSCI 700. In-depth
review of database systems and extensive survey of the current literature
on the topic.
CSCI 715. Distributed
Computing. 3 hr.;
3 cr. Distributed systems design and implementation. Concurrency and
modularity. Operating system considerations. Transport-level communication
protocols. RPCs. Examples of distributed systems.
CSCI 718. Computer Graphics. 3 hr.; 3 cr. Prereq.: CSCI 700. Digital
image fundamentals, scan-conversion algorithms, organization of graphics
systems, 2D/3D primitives and their attributes, curve and surface representations,
transformations, projections, hidden line/surface removal and clipping
algorithms, color and illumination models, shading methods, interactive
devices and techniques, graphics API. Significant programming projects
to illustrate the rendering process as well as the design of user interfaces
will be assigned.
CSCI 722. Computability
and Complexity. 3
hr.; 3 cr. Prereq.: CSCI 320. Models of computation such as Turing machines,
random access machines, and circuits. Time complexity classes, including
P and NP, space complexity classes, including L and NL, and the interrelationships
among them. Mapping reducibility and its specializations, including
polynomial-time and log-space reducibility. Establishing a first NP-complete
problem, such as circuit satisfiability or Boolean-formula satisfiability.
P-complete decision problems; NP-complete decision problems; and related
approximation algorithms.
CSCI 731. Software Development
Practicum. Hours to
be arranged; 3 cr. Prereq.: Completion of 21 credits, including any
software semi-core course. Each student will complete a significant
software development project, either of his/her own choosing or one
selected by the instructor. In general, projects will incorporate the
following features in their design: A graphical user interface, concurrent
processing, and persistent state across invocations. All projects will
include complete and separate documentation for end-users, for installation,
and for software maintenance. Project management tools for version and
module management, and a complete record of the development stages are
required.
CSCI 732. Research Practicum. 3 hr.; 3 cr. Prereq.: Completion
of 21 credits. Critical review of research in computer science. Students
will conduct research on one of the topics given by the instructor,
and gain experience in writing research proposals, actual research process
(including the use of libraries and the reading of papers), and in writing
research reports. The instructor will give lectures on the selected
topics as well as on general research methods, and closely monitor the
students’ research process.
CSCI 733. Master’s
Thesis. 3 cr. Prereq.:
Completion of 21 credits. A master’s thesis must be accepted by a
sponsoring member of the department and by a thesis committee chosen
by the department. (For college requirements regarding theses, see page
XX of this Bulletin.)
CSCI 734. Hardware Design
Practicum. Hours to
be arranged; 3 cr. Prereq.: Completion of 21 credits, including a hardware
semi-core course. Each student will complete a significant hardware
development project approved by the instructor. Projects may be based
on existing development platforms, or may involve construction of a
hardware platform specific to the project. Designs may involve various
areas of digital design, such as signal processing, robotics, networking,
or peripheral interfacing.
CSCI 744. Computer Architecture
and Networks. 3 hr.;
3 cr. The design of CPU, memory, and I/O systems. Performance evaluation.
Pipeline processor design. SIMD architecture. Communication issues in
a distributed computing system. Design of interconnection networks and
their applications. Fault-tolerant computer systems.
CSCI
745. Switching Theory.
3 hr.; 3 cr. Boolean algebra. Symmetric and iterative circuits. Fault
detection and location. State equivalence and reduction of completely
and incompletely specified machines. State identification and experiments.
Linear sequential circuits. Current research topics.
CSCI 746. Computer Systems. 3 hr.; 3 cr. Prereq.: CSCI 744. Parallel
computer models. Program and network properties. Performance metrics
and measures. Advanced processor technology, RISC and CISC processors.
Software for parallel programming. Current research topics.
CSCI 748. Computer Networks. 3 hr.; 3 cr. Prereq.: CSCI 744. Basic
communication concepts, connectivity analysis, delay analysis, and the
International Standards Organization Reference Model of Open Systems
Interconnection (ISO-OSI).
CSCI 762. Algorithms
II. 3 hr.; 3 cr. Prereq.:
CSCI 700. A continuation of the material of CSCI 700, including algorithms
for numerical computation, algorithms for parallel or distributed computers,
and probabilistic analysis of algorithms.
CSCI 764. Topics in Systems
Simulation. 3 hr.;
3 cr. Prereq.: CSCI 700. Introduction to simulation and comparison with
other techniques. Discrete simulation models and introduction to, or
review of, queuing theory and stochastic processes. Comparisons of discrete
change simulation languages. Simulation methodology including generation
of random numbers and variates, design of simulation experiments for
optimization, analysis of data generated by simulation experiments and
validation of simulation models and results. Selected applications of
simulation.
CSCI 766. Probabilistic
Models in Computer Systems.
3 hr.; 3 cr. Prereq.: CSCI 700. This course deals with analytical modeling
as a means of analyzing computer hardware and software through the application
of fundamental concepts of probability theory, statistics, random processes
such as queuing theory and Markov chains to problems encountered in
queuing models of time-sharing systems, multiprocessor interference,
statistical evaluation of sorting techniques, and reliability of computer
systems and networks.
CSCI 780, 782, 783, 784,
786. Special Topics in Computer Science.
3 hr.; 3 cr. May be repeated for credit for differing titles.
CSCI 788.1–3. Computer
Science: Cooperative Education Placement.
1–3 hr.; 1–3 cr. Prereq.: Completion of at least three 700-level
computer science courses and approval by the department’s Graduate
Curriculum and Advisement Committee of a detailed project description
submitted by the student. Experiential learning through job placements
developed by the Queens College Cooperative Education program. Opportunities
are provided to test, demonstrate, and expand on academic learning in
an organizational setting. This course does not count toward the 30
credits required for the Master of Arts in computer science.
The grade for this course will be given on a pass/fail basis.
CSCI 790, 792, 793, 794,
796. Seminars in Computer Science.
3 hr.; 3 cr. May be repeated for credit if the topic changes.
CSCI 799.1–3. Research. 1–3 hr.; 1–3 cr. Prereq.: permission
of the department. May be repeated for credit for different topics,
to a maximum of 3 credits. Student research reports shall be written;
they will be placed on file with departmental technical reports. CSCI
799.3 can be used to satisfy the capstone requirement if the proposal
is approved for such by the department. Students may take such a course
only after they have completed at least 21 credits of 700-level courses
with a cumulative GPA of 3.3 or better, and the research involved must
be an individual work.