|

10000: Introduction to Programming and Computer Science
A breadth-first introduction to computer programming and computer
science.
Elementary programming in a modern object-oriented language such as
C++ or
Java; introduction to algorithms; brief overview of operating systems,
computer
networks, and databases; introduction to artificial intelligence.
May not be taken as
technical elective by CSc majors. For CSc majors, can count as Free
elective if taken prior to CSc
10200
4 hr./wk.; 3 cr.
10200: Introduction to Computing
The structure and operation of a computer; concepts and properties of
an algorithm
and a programming language. Introduction to procedural programming in
a modern
programming language, such as C. The main theme is that programs can
be
reliably designed, proven, and refined if one pays careful attention
to their
underlying logic, and the emphasis of the course is on the logical
evolution
of working programs from specifications. Students are introduced to
logic-based
programming methodologies which are at once powerful and practical.
Prereq.:
Math 20100 (or 20102) .
2 class, 2 rec. hr./wk.; 3 cr.
10400: Discrete Mathematical Structures
Introduction to the mathematics fundamental to all phases of computer
science, from the
formulation of problems to the understanding of their underlying
structure, to the comparative analysis
of the complexity of algorithms that can be used to solve these problems.
The course introduces
combinatorics, first-order logic, induction, set theory, relations and
functions, graphs, trees, and
number theory. Prereq: Math 20100 (or Math 20102) (min. C grade). 2
class, 2 rec. hr./wk.; 3 cr.
21000: Computers and Assembly Language Programming
Computer structure, machine representation of data, addressing and
indexing,
computation and control instructions, assembly language and
assemblers; procedures
(subroutines) and data segments, linkages and subroutine calling
conventions,
loaders; practical use of an assembly language for computer
implementation
of illustrative examples. Prereq.: CSc 10200 .
3 hr/wk.; 3 cr.
21200: Data Structures
Extension of the knowledge of algorithm design and programming gained
in CSc
10200 with continued emphasis on the logic underlying the transition
from
specification to program. Particular attention is paid to issues
arising in
the implementation of larger programs: introduction of data structures
and
data abstraction; the basics of object-oriented programming.
Introduction
of recursion as a design tool. Introduction of complexity
analysis.Stacks, queues, linked lists,
trees, and graphs. Prereq.:
CSc 10200 and 10400 .
2 class, 2 rec. hr./wk.; 3 cr.
21700: Introduction Simulation Science.
Project course in which students work as leaders or members of project
teams. Individual oral
presentations and written reports. Overview of applicable discrete and
stochastic foundations:
combinatorics, probability, and Monte Carlo. Introduction to modeling
formalism with examples from
numerical and logical processes. Simulation languages such as MATLAB
simulation toolbox and GPSS are
demonstrated. Student projects entail simulations of physical or social
science problems. Emphasis on
student presentations or statistical analysis and visual summaries.
Prereq.: CSc 10400.
3 hr./wk.; 3 cr.
22000: Algorithms
Measuring algorithmic complexity (O-Notation); searching and sorting
algorithms
and their complexity; tree and graph algorithms and their complexity;
classes
of algorithms, such as divide-and-conquer, backtracking, greedy,
probabilistic,
etc. Computational complexity; the classes P and NP. Prereq.: CSc
21200 and [CSc 21700
or EE 31100].
3 hr./wk.; 3 cr.
22100: Software Design Laboratory
Object-oriented programming and design. Encapsulation, inheritance,
and polymorphism are stressed. Event-driven
programming. Significant programming projects, including
team projects.Programs are written in Java. Prereq.: CSc 21200.
3 hr./wk.; 3 cr.
30100: Numerical Issues in Scientific Programming
Numerical issues: roundoff error, truncation error, overflow and
underflow
errors. Numerical integration; solution of simultaneous equations;
curve fitting.
A thorough introduction to scientific programming, using a modern
version
of the Fortran or Matlab language. Written reports and oral
presentation of
projects. Prereq.: CSc 21700, CSc 22000, Math 34600 .
3 hr./wk.; 3 cr.
30400: Introduction to Theoretical Computer Science
Finite state automata, pushdown automata, Turing Machines, and the
languages
they can recognize. Church’s Thesis. Computability. The classes
P and
NP; NP-complete problems and intractable problems. Prereq.: CSc 10400
.
3 hr./wk.; 3 cr.
31100: XML Technologies. XML in industry. HTML
and XML; XML publishing and
document management; creating and editing XML documents; XML content
models. Data Type Definition (DTD)
and validation of XML documents. XML schemas, XML schema modeling,
namespaces, and object oriented
schemas. XML schemas and relational databases. XSLT (Extensible Stylesheet
Language Transformation) and
XPATH. SOAP and WSDL. XSL:OF, for creating pdf and other common document
formats from XML content.
Prereq.: CSc 22100. 3 hr./wk.;3 cr.
31700: Introduction to the Internet
This course is intended to provide students with the background
necessary
for understanding the Internet. Discussed are the underlying
technology, applications,
and social implications of the World Wide Web. Cannot be used to
fulfill CSc
technical elective requirement. Prereq.: CSc. 10200 (min.
C grade) and at least junior standing.
3 hr./wk.; 3 cr
31800: Internet Programming
This course provides advanced CSc/Engineering majors with an
understanding
of Web-based application development. Prereq.: CSc 22100 or EE25900.
3 hr./wk.; 3 cr.
32200: Software Engineering
The software development life cycle from feasibility study to turnover
to
client. Documentation of design, program, and training materials.
Rapid prototyping
languages. Software development management: team roles and
organization, the
version control problem, maintenance issues. Use of CASE tools
emphasized
and illustrated in projects. Written reports and oral presentation of
projects.
Prereq.: Eng 21007, CSc 22000, CSc 22100.
3 class, 2 lab hr./wk.; 4 cr.
33200: Operating Systems
Overview of computer organization. Interrupts. Operating systems
objectives
and functions. Hardware protection mechanisms, dual mode operation.
System
calls. The evolution of operating systems. Process representation and
control.
Uniprocessor scheduling. Process synchronization: critical section
problem,
synchronization mechanisms, algorithms, language constructs, classical
synchronization
problems: issues of safety, liveness, and fairness. Deadlocks. Memory
management
and virtual memory. File management. I/O management and disk
scheduling. Prereq.:
CSc 22000.
3 hr./wk.; 3 cr.
33500: Programming Language Paradigms.
Aspects of the design and implementation of functional, imperative,
logic and object-oriented
programming languages, presented via a sequence of interpreters. Topics
include abstraction, parameter
passing, type checking, inheritance, and continuations. Substantial
programming assignments.
Prereq.: CSc 22000, CSc 22100. 3 hr./wk.; 3 cr.
33600: Introduction to Database Systems
An introduction to database architecture. Levels of abstraction in a
database
system; physical database organization: abstract data models;
relational databases
and their query languages. Database design assignments. Prereq.:
CSc 22100.
3 hr./wk.; 3 cr.
34200: Computer Organization
This course provides computer science and computer engineering students
with
an in-depth look at computer architecture and the hardware/software
interface.The major topics are:
computer abstractions and technology; the role of performance and
measuring performance; SPEC. computer
arithmetic; machine language: a comparative analysis of instruction sets
of current processors using
the debuggers, simulators and by the partial reverse engineering of
executables. The processor:
datapath and control; RISC versus CISC; design, implementation (using
VHDL), and verification (in
simulation) of a simplified RISC processor using CAD tools. Enhancing
performance with pipelining.
Memory hierarchy, cache, virtual memory, performance issues. Interfacing
processors and peripherals;
PCI chipset. Overview of multiprocessors, grid computing. Prereq.: CSc
21000; coreq.: CSc. 34300.
3hr/wk; 3 cr.
34300:
Computer Systems Design Laboratory
Introduction to FPLD technology, logic synthesis, and rapid prototyping of
digital systems using
commericial CAD tools. Topics:Programmable Logic Technology. Sequential
Design and Hierarchy. Synthesis
of Digital Hardware using VHDL. State Machine Design, CPU Controller. A
Simple Processor Design. Video
Graphics Adapter(VGA) video display generation. Design PS/2 Keyboard
interface. Design of PS/2 Mouse
interface. Synthesis of a RISC processor as covered in CSc 34200. Students
are required to prepare
written reports and demonstrate their design.
Co-requisite: CSc 34200.
3 hr./wk.; 1 cr.
37500: Social Issues in Computing
A systematic and comprehensive overview of the social implications of
computers.
Public policy questions and the responsibility of computer
professionals will
be stressed. Topics include computers in the economy, in politics and
government,
in social institutions and in contemporary culture. Prereq.: at least
sophomore
standing.
3 hr./wk.; 3 cr.
41200: Computer Networks
Layer approach to understanding networks using the ISO model: physical
layer,
data link layer, network layer, and, as time permits, the transport,
session,
presentation, and application layers. Prereq.: CSc
33200.
3 hr./wk.; 3 cr.
42000: Compiler Construction
Formal description of programming languages and techniques used in
their compilation.
Study of syntax, semantics, ambiguities, procedures replication,
iteration,
and recursion in these languages. Syntactic decomposition and the
theory of
compilers that are syntax-directed or recursively controlled. Prereq.:
CSc
30400.
3 hr./wk.; 3 cr.
42200: Computability
Sheperdson-Sturgis machines. Elements of recursive function theory.
The equivalence
of the class of computable and recursive functions. Church’s
thesis;
other models of computation: Post machines, Turing machines, semi-Thue
systems,
etc. Unsolvable problems and introduction to their classification.
Subrecursive
formalism. Prereq.: CSc 22000, 30400.
3 hr./wk.; 3 cr.
42800: Formal Languages and Automata
Classes of languages; their description in terms of grammars and their
recognition
by automata. The Chomsky hierarchy; regular, context-free,
context-sensitive
and recursively enumerable languages. Application to parsing and
compiler
construction. Prereq.: CSc 30400.
3 hr./wk.; 3 cr.
43000: Distributed Computing
Basic model of distributed computing. Asynchronous and synchronous
message
passing. Algorithms for distributed termination detection and their
correctness
proofs. The correctness requirements of safety, liveness, and fairness
in
distributed computations. Synchronization algorithms. Communicating
Sequential
Processes. Higher level language constructs for synchronization
algorithms.
Verification methods. Several seemingly correct but actually incorrect
algorithms
will be shown for the above problems to appreciate the subtle
correctness
problems in distributed algorithms. Prereq.: CSc 33200.
3 hr./wk.; 3 cr.
43200: Parallel Processing
Models of computation, such as SISD, MISD, MIMD and SIMD. Algorithmic
complexity.
Parallel approaches to sorting, searching, and related problems.
Combinatorial
and numerical problems. Applications to graph theory, decision theory,
and
optimization. Prereq.:CSc 33200.
3 hr./wk.;
3 cr.
43500: Concurrency in Operating Systems
Mutual exclusion-software and hardware approaches. The correctness
requirements
of safety, liveness, and fairness. Semaphores, monitors and other
concurrent
programming constructs. Classical synchronization problems. Axiomatic
verification
of concurrent algorithms. Models of distributed computation.
Distributed termination
detection. Time clocks, and ordering of events. Distributed Mutual
Exclusion.
Deadlocks in distributed systems. Prereq.: CSc 33200.
3 hr./wk.; 3 cr.
43800: Real-Time Computing Systems
Operating systems and architectural concepts of real-time systems.
Review
of I/O programming and basic machine language programming. Interrupt
processes. Coding of specific
device drivers using
absolute addressing status registers, command signals, buffering.
Timing considerations
and applications. Concurrent processes, wait-send phenomena, and the
use of
semaphores. Pre- or coreq.: CSc 34200.
3 hr./wk.; 3 cr.
44000: Computational Methods in Numerical Analysis
Introduction to numerical algorithms for scientific computation. Basic
concepts
of numerical error. Interpolation, quadrature, solution of linear
systems
of equations, non-linear equations, ordinary differential equations.
Some
discussion of partial differential equations and numerical methods of
solving
them. Computer implementation aspects. Prereq.: CSc 30100.
3 hr./wk.; 3 cr.
44200: Systems Simulation
Simulation of dynamic stochastic systems using models involving
numerical
and logical processes. Modeling concepts, description in terms of
entities,
attributes, and activities, time flow mechanisms, queues,
event-oriented vs.
particle-oriented models. Generation of stochastic variates,
collection and
evaluation of statistics. Simulation languages. Computer projects
using a
general purpose language (e.g. Fortran or Matlab) and at least one
simulation
language (e.g. GPSS) will be assigned. Prereq.: CSc 30100.
3 hr./wk.; 3 cr.
44600: Mathematical Optimization Techniques
Maximization and minimization of functions of several variables, with
and
without constraints. Convex sets and functions, linear and dynamic
programming,
network flows. Prereq.: CSc 30100.
3 hr./wk.; 3 cr.
44800: Artificial Intelligence
State-space and problem-induction representations of problems.
Heuristic methods.
Mechanical theorem proving. Application of these techniques to
artificial
intelligence problems. Prereq.: CSc 30400.
3 hr./wk.; 3 cr.
45000: Combinatorics and Graph Theory
An introduction to combinatorial analysis and graph theory. Sample
topics:
principle of inclusion and exclusion, recurrence relations, zero-one
matrices,
partitions, Polya’s Theorem, directed graphs, Prereq.: CSc
22000.
3 hr./wk.; 3 cr.
45400: Topics in Computer Architecture
Current developments in computer architecture chosen from: superscalar
parallel/pipelined
architectures: speculative execution; branch prediction; register
renaming
techniques. Students develop software for superscalar processors, both
real
and simulated. Prereq.: CSc 34200, 34300.
3 hr./wk.; 3 cr.
47000: Image Processing
An intensive introduction to digital image processing. Image
enhancement,
digital filtering theory. Fourier transforms, image reconstruction,
resampling,
antialiasing, geometric transformations, scanline algorithms, warping,
and
morphing. Emphasis is on computational techniques. Substantial
programming
assignments. Prereq.: CSc 30100 and CSc 32200.
3 hr./wk.; 3 cr.
47100: Computer Vision
An intensive introduction to algorithms that recover information from
images,
motion sequences, multiple views, and 3D volumes. Topics include edge
and
region recovery, perspective, texture, object recognition, and 3D
shape from
shading stereo motion. Substantial programming assignments. Prereq.:
CSc 32200.
3 hr./wk.; 3 cr.
47200: Computer Graphics
An intensive study of computer graphics. Graphics hardware, OpenGL
API,
raster scan conversion, clipping, geometric transformations, 3D viewing,
visible surface determination, illumination, shading, splines, ray
tracing,
and animation. Substantial programming assignments. Prereq.: CSc
30100, CSc 32200.
3 hr./wk.; 3 cr.
47300: Web Site Design
The design and implementation of Web sites from a
Human-Computer Interaction viewpoint, with emphasis on user
testing. Navigation design. Accessibility by persons with limitations
in vision or motor ability is stressed and must be addressed in the
final
project. Prereq.: CSc 22100.
4 hr./wk.; 3 cr.
47500: Windows Programming
Study of the Windows system. Architecture and the windows programming
API.
Covered topics include the OS kernel, Windows internals, evolution of
Windows,
Windows graphics model, Windows and ATM font systems, Unicode,
messaging system,
and the user application interface, e.g., menu dialogs, icons, child
controls
and custom controls. Substantial programming assignments. Strong
knowledge
of C required. Prereq.: CSc 22100.
3 hr./wk.; 3 cr.
47800: Topics in Multimedia and Image Processing
Topics of current interest in image processing, computer vision,
computer graphics, and
multimedia. Prereq.: CSc 47000..
3 hr./wk.; 3 cr.
47900: Digital Libraries
An introduction to the principles and practice of digital libraries.
Algorithms
are drawn from computer vision, pattern recognition, image processing,
and
document processing. Topics include low-level image processing,
texture, color
constancy, shape from X, supervised and unsupervised training, and
implementation
issues regarding content based multimedia database. Programming
assignments
will be implemented in C++ or Java. Prereq.: Math 34600 .
3 hr./wk.; 3 cr.
48000: Computer Security
An introduction to the principles and practices of computer security
in various
computing environments. Conventional encryption systems and classical
cryptography.
Confidentiality using conventional encryption. Public key cryptography
and
protocols for authentication and digital signatures. Recent
cryptanalytic
attacks on conventional and public key systems. Intruders, worms,
viruses
and trusted systems. Firewalls and internetwork security. A survey of
applications
and problems arising in contemporary computer security. Prereq.: CSc
22000,
CSc 30400.
3 hr./wk.; 3 cr.
48600: Computational Complexity
An introduction to the performance and limitations of computer
algorithms
through a study of selected algorithms. Topics include primality
testing and
integer factorization, algorithms for integer programming and knapsack
problems,
reductions and NP-completeness, randomized algorithms, and
experimental algorithms
arising from new technologies such as molecular, neural, and quantum
computing.
Prereq.:CSc 21700 , CSc 30400.
3 hr./wk.; 3 cr.
51001-51004: Independent Study
Independent study and research under the supervision of a mentor.
Prereq.:
departmental approval.
Hours vary; 1-4 cr.
59800: Senior Project
Senior projects under the supervision of a mentor. Prereq.:
departmental approval.
Hours vary; 3 cr.
59900: Selected Topics in Computer Science
Topics of current interest in the field. Independent study and
seminars. Prereq.:
departmental approval.
Variable hrs. and cr.
CSc 59866 and CSc 59867: Senior Project I & II.
This is a two-semester capstone course. The student is required to
complete a significant project
in computer science or engineering under the mentorship of a faculty
member. In addition to technical
material required for successful completion of a specific project, topics
include identification of a
problem, background research, social, ethical and economic considerations,
intellectual property and
patents, and proposal writing, including methods of analysis and
theoretical modelin . A detailed
project proposal is formulated during the first semester, and the project
is completed in the second
semester. Each student is required to write an in-depth report, and to
make an oral presentation to the
faculty. Senior year students only, or permission of the department.
3 hr./wk.; and 3 design hr./wk.; 3 CR each semester for two
consecutive semesters.
|