Robert Schiaffino
Department Chair
Email: rschiaffino@iona.edu
Phone: (914) 633-2338
Schedule Codes
At the end of each course description, information is provided to indicate when the course will be scheduled. The schedule codes are the following:
F =Scheduled Fall
FS = Scheduled Fall and Spring
S =Scheduled Spring
SU = Scheduled Summer
WI = Scheduled Winter Intersession
AY = Scheduled alternate years
N =Offered when needed
Please Note: Schedules are subject to change; consult the Office of the Dean prior to registration
CS 500. Introduction to Computer Science I
This course provides an introduction to problem
solving, data representation, algorithm design,
programming and applications. Programs of increasing
complexity, requiring a variety of control and data
structures are assigned to give students experience
with problem analysis and solution design. Weekly
laboratory. (4 credits)
FS
CS 510. Foundations of Computer Science
An intensive introduction to the mathematical tools and
techniques fundamental to computer science. Topics
include number systems, formal logic, induction,
recursion, digital design and analysis of combinational
and sequential circuits, finite state machines, trees,
graphs. Same as MTH 704. (3 credits)
FS
CS 520. Computer Science II
An introduction to advanced programming, data
structuring and encapsulation techniques. Emphasis
is placed on problem solving and solution design
incorporating modern design principles. The use
of these principles to achieve clarity and ease of
debugging is required in the programming assignments.
Prerequisite: CS 500 or equivalent. ( 3 credits)
FS
CS 530 Introduction to Computer Architecture
and Operating Systems
An introduction to the architecture and organization
of a modern computer system with emphasis on
the interaction and interdependence between the
computer hardware and the operating system. Topics
include basic CPU design, memory systems, the inputoutput
system, interrupts, process/thread scheduling
and execution, memory and IO management, the file
system, command interpreters.
FS
CS 600. Data Structures
A study of abstract data types such as stacks, queues,
lists, trees, heaps and graphs and the design of data
structures, algorithms and their complexity. The use
of these data structures in designing solutions to
problems is emphasized. Prerequisite: CS 505 and
CS 510 or equivalents. (3 credits)
F
CS 610. Computer Architecture
An introduction to the architecture, organization
and logic design of digital computers. Topics
include a review of number systems, analysis and
design of digital circuits, computer architecture,
CPU organization and operation, advanced CPU
implementation techniques, hierarchical memory
system design, topics in input-output design,
and assembly language programming. The
interdependence between computer hardware,
operating systems, and programming language
compilers is emphasized throughout the course.
Prerequisite: CS 500 or equivalent. (3 credits)
S
CS 620. Database Systems
A study of database management systems including
entity-relationship, relational, object-relational, object
oriented and semi-structured models, logical and
physical representation, normalization, data languages
including relational algebra and SQL, data management
structures, and ethical and social issues in database
systems. Prerequisites: CS 600. (3 credits)
F
CS 630. Programming Languages
A study of the design and organization of higher level
programming languages: processing, data types and
data flow, control structures, program units, storage
management, binding strategies, language design
criteria, formal language definition. Prerequisite: CS
600. (3 credits)
S
CS 650. Design of Operating Systems
The course presents the fundamental concepts in
the design and implementation of modern operating
systems. The structure of a typical operating system
is considered and the efficient design of its various
components is studied. The impact of hardware and
compiler technology on operating system design
is examined throughout the course. Assignments
include the design and implementation of a small
simulated operating system. Prerequisites: CS 600,
CS 610. (3 credits)
F
CS 700. Analysis of Algorithms
A study of the design and analysis of computer
algorithms and their complexity, including searching,
sorting, selecting and graph algorithms. Topics
include algorithm design methods such as greedy
algorithms, divide-and-conquer and dynamic
programming. The concepts of lower bounds, NPcompleteness
and unsolvability are also addressed.
Prerequisite: CS 600. (3 credits)
N
CS 701. Algorithms for Computational Science
This course provides an introduction to algorithms
and their application in Computational Science. The
main objective of the course is to develop students'
algorithmic thinking and problem solving skills by
exploring solutions to a variety of problems of modern
significance in Bioinformatics, Molecular Biology,
Computational Chemistry and Physics, Astronomy and
other areas of Computational Science. (3 credits)
N
CS 708. Computability and Unsolvability
This course presents a theoretical study of the
limits of computability. A number of approaches
to computability are presented such as Turing
machine computability, recursive function theory and
lambda calculus. The relation of computability and
unsolvability to formal logic is considered, leading
to a discussion of major results such as Godel's
incompleteness theorem, Tarski's definability of
truth, and the arithmetic and analytic hierarchies.
Prerequisites: CS 510 and CS 600. (3 credits)
N
CS 710. Advanced Computer Architecture
A detailed study of efficient processor design and
the integration of a processor into a computer
system so that performance and cost are optimized.
Topics include cost/performance analysis, advanced
processor implementation techniques, optimal
memory hierarchy design, efficient input-output
devices and control. The mutual impact of processor,
operating system, and programming language
compiler designs is emphasized throughout the
course. Prerequisite: CS 610. (3 credits)
N
CS 720. Advanced Topics in Database
A study of problems and techniques in the design and
implementation of database systems. Topics include
logical and physical design considerations, query
optimization, post-relational systems, security, integrity,
concurrency control, backup and recovery techniques,
reorganization problems, data warehousing, data
mining, issues in the design of distributed systems,
and ethical and social issues in database systems.
Prerequisite: CS 620. (3 credits)
AYS
CS 730. Compiler Design
A study of the principles and techniques of language
translation: finite automata and lexical analysis,
parsing of context free languages, symbol tables,
storage administration, error diagnosis and
introductory discussion of optimization and code
generation techniques. A major project is assigned.
Prerequisite: CS 630. (3 credits)
AYF
CS 740. Modeling and Simulation
An introduction to the mathematical modeling and
simulation of discrete and continuous phenomena.
Topics include deterministic and probabilistic modeling
and simulation techniques, discretization of continuous
processes and systems, computational complexity
and efficiency considerations. Application of these
techniques to real-world systems and processes will
be studied and assigned as programming projects
throughout the course. Prerequisite: CS 600 and CS
510 or equivalents. (3 credits)
N
CS 742. Computer Graphics
A study of the theory, applications, and current
hardware/software trends in computer graphics. Topics
include mathematical techniques for representation
of 3-D objects, geometric transformation, projection,
hidden surface removal, texture mapping, and ray
tracing. Prerequisite: CS 600. (3 credits)
N
CS 744. Design and Programming of User
Interfaces
Theory and practice of creating event-driven
graphical user interfaces. Students will design and
implement user interfaces in an object-oriented
setting. Prerequisite: CS 600. (3 credits)
N
CS 750. Advanced Operating Systems
This course examines the internal structure and
implementation of one or more real operating
systems. Algorithms and data structures involved in
scheduling, memory management, input-output and
secondary storage management are discussed, and
their interdependence and interaction is emphasized.
The implementation of system calls for use in system
programming and administration is also considered.
Prerequisite: CS 650. (3 credits)
S
CS 760. Artificial Intelligence
Using computer algorithms and programs as tools,
and focusing on the notion of an intelligent agent,
the course explores such topics as problem-solving
using uninformed and heuristic search, stochastic
methods, knowledge representation, reasoning
processes, perception, machine learning, robotic,
and philosophical foundations of artificial intelligence.
Prerequisite: CS 600. (3 credits)
N
CS 770. Web Applications Development
This course focuses on the techniques needed for
interactive Web-based application development.
A variety of tools for application development are
investigated both for client-side and server-side
programming, such as XHTML, CSS, and object
oriented scripting languages. Issues such as clientserver
communication, database access, security,
user and server-authentication are discussed. Webbased
programming assignments are an integral
component of this course. Prerequisite: CS 505 or
equivalent. (3 credits)
N
CS 772. Parallel and Scientific Computing
The course is an introduction to Parallel and Scientific
Computing. Topics include advantages, limitations,
theory, and applications of parallel and distributed
computing, modern trends in parallel hardware and
software design, and parallel programming with
scientific application. Several parallel programming
projects will be assigned. Prerequisites: CS 600,
CS 610. (3 credits)
N
CS 774. Client-Server Systems and
Technologies
An introduction to the theory, hardware and software
aspects of client-server systems. Distributed hardware
and operating systems. Implementing client-server
software using sockets, streams, threads, messagepassing,
RPC and other communication mechanisms.
Prerequisites: CS 600, CS 610. Same as TEL 774.
(3 credits)
N
CS 776. Networking Fundamentals
A basic introduction to the principles and practice of
networking and data communications. The course
covers the theoretical foundations of networking
and the infrastructure required to implement a data
communication network. Topics include the principles
of digital communication for voice, data and video,
protocol architecture, media types, multiplexing and
spread spectrum, flow and error control, media access
control and network security principles. (3 credits)
F
CS 778. Local Area Networks
A study of the fundamentals and theory of modern
local area networking. The course covers both the
basic theory of communication across local area
networks, as well as the major LAN Standards. Basic
switching and routing theory as it applies to a LAN will
also be covered. Prerequisite: CS 776. (3 credits)
S
CS 780. Introduction to Software Engineering
A study of the steps and techniques in creation
of large software systems in object-oriented and
classical frameworks. Topics include techniques for
systems analysis, design, implementation, testing,
project management and evaluations, and ethical and
social issues in software engineering. Prerequisite:
CS 600. (3 credits)
F
CS 784. Software Design and Development
Project
This course presents a formal approach to techniques
in software design and development and provides
means for students to apply these techniques. As
part of the course, students work in teams on the
organization, management and development of a
large software project. Prerequisite: Completion of
the core and matriculated status. (3 credits)
S
CS 790 Numerical Methods
A survey of computer solutions of numerical problems
including topics of approximation, optimization,
computation of eigenvalues and eigenvectors,
Fourier analysis and solution of simultaneous and
differential equations, numerical evaluation of
derivatives and integrals. Prerequisites: CS 505 and
CS 510 or equivalents. (3 credits)
N
CS 980. Thesis Preparation Seminar
This course provides students with the opportunity
to work with adepartmental advisor in developing
a proposal for a thesis on an approved topic.
Required of students who choose the thesis option.
Prerequisite: Completion of the core and permission
of the program coordinator. (3 credits)
N
CS 981. Thesis
This course provides students with the opportunity
to complete and defend the thesis approved by
an advisor in CS 980. Required of students who
choose the thesis option. Prerequisites: CS 980 and
permission of the program coordinator. (3 credits)
N
CS 990-998. Special Topics in Computer
Science
This course studies topics of current interest in
computer science, which are not covered in a
course offered by the department. The course is
offered periodically as the needs and interests of
students and faculty dictate. Lab fee may be required.
Prerequisites: Completion of core and permission of
the program director. (3 credits)
N
CS 999. Independent Study
This course provides students with an opportunity
to engage in direct research or analysis in a chosen
area. The student must select an advisor from the
department and submit, in writing, an outline of the
proposed study prior to registration. An interim report
will be followed by the submission of the final research
project. Prerequisite: Completion of the core and
permission of the program coordinator. (3 credits)
N