CS
101
(3
Credits)
Fall,
Spring
Computers
and
Society
(3+0)
Computer
literacy
for
everyone.
Overview
of
computing
machines
and
automatic
data
processing.
Interaction
between
social
institutions
and
automated
decision
making.
Introduction
to
business
applications
software
and
electronic
mail.
Some
programming
for
understanding,
not
for
skill
development.
Also
available
via
Independent
Learning.
(Prerequisite:
Two
years
of
high
school
mathematics,
including
at
least
one
year
of
algebra.)
CS
103
(3
Credits)
Fall,
Spring
Introduction
to
Computer
Programming
(3+0)
Programming
for
non-majors
and
for
those
computer
science
students
without
the
background
for
CS
201.
Concepts
of
object-oriented
programming
and
algorithm
design
within
the
syntax
of
the
JAVA
programming
language.
(Prerequisite:
MATH
107X
or
131X
or
161X.)
CS
201
(3
Credits)
Fall,
Spring
CS
202
(3
Credits)
Fall,
Spring
Computer
Science
I
and
II
(3+0)
The
discipline
of
computer
science
including
problem
solving,
algorithm
development,
structured
programming,
top-down
design,
good
programming
style,
object
oriented
programming,
and
elementary
data
structures.
Concepts
implemented
with
extensive
programming
experience
in
a
structured
language
and
with
a
group
programming
project.
(Prerequisites:
For
CS
201:
one
year
high
school
level
programming
or
CS
103
and
mathematics
placement
at
the
200
level.
For
CS
202:
CS
201.)
CS
205
(3
Credits)
Alternate
Spring
Intermediate
Programming
(3+0)
A
second
high-level
programming
(such
as
C,
Fortran,
Java
or
Perl)
for
students
with
some
experience
in
other
programming
languages
such
as
Basic,
Pascal
or
Fortran.
(Prerequisites:
One
year
high
school
programming,
CS
103,
201,
or
ES
201.
Next
offered:
2004-05.)
CS
290
(1-3
Credits)
As
Demand
Warrants
Student
Internship
Computer
science
project
under
the
joint
direction
of
a
faculty
member
and
participating
industry
or
governmental
agency.
(Prerequisite:
Acceptance
in
an
approved
internship
program.)
CS
301
(3
Credits)
Fall
Assembly
Language
Programming
(3+0)
Organization
of
computer
registers,
I/O,
and
control.
Digital
representation
of
data.
Symbolic
coding,
instructions,
addressing
modes,
program
segmentation,
linkage,
macros,
and
subroutines.
(Prerequisite:
CS
201.)
CS
302
(3
Credits)
As
Demand
Warrants
Systems
Programming
(3+0)
Advanced
systems
programming
including
privileged
instructions
and
system
services.
Applications
to
asynchronous
I/O,
process
control
and
communication,
device
drivers
and
file
management.
(Prerequisite:
CS
301.)
CS
311
(3
Credits)
Fall,
Spring
Data
Structures
and
Algorithms
(3+0)
Data
structures
and
the
algorithms
for
their
manipulation.
Object-oriented
programming,
arrays,
tables,
stacks,
queues,
trees,
linked
lists,
sorting,
searching,
and
hashing.
(Prerequisite:
CS
202.)
CS
321
(3
Credits)
Spring
Operating
Systems
(3+0)
Functions
of
files
and
operating
systems.
Review
of
required
architectural
features.
The
PROCESS
concept.
Storage
management,
access
methods
and
control,
interrupt
processing,
scheduling
algorithms,
file
organization
and
management,
and
resource
accounting.
(Prerequisite:
CS
301.)
CS
331
(3
Credits)
Spring
Programming
Languages
(3+0)
Syntax
and
semantics
of
widely
differing
programming
languages.
Syntax
specification,
block
structure,
binding,
data
structures,
operators,
and
control
structures.
Comparison
of
several
languages
such
as
ALGOL,
LISP,
SNOBOL,
and
APL.
(Prerequisite:
CS
311.)
CS
381
(3
Credits)
Fall
Computer
Graphics
(3+0)
Design
and
implementation
of
visual
interfaces
using
object
oriented
programming.
Graphics
input
and
output
hardware,
display
programming,
2-D
transformations,
approximation
techniques
for
curve
and
surface
representation.
(Prerequisites:
CS
202
and
MATH
200X.
Recommended:
MATH
314)
CS
402W,O
(3
Credits)
Spring
Senior
Project
and
Professional
Practice
(3+0)
Students
work
on
group
projects
in
a
real
computer
industry
environment
and
produce
appropriate
documentation
and
reports.
Nature,
ethics,
and
legal
considerations
of
the
computer
science
profession
are
discussed
with
an
emphasis
on
ethics.
Additional
topics
include
project
management,
design
methodologies,
technical
presentation,
human-machine
interface
and
programming
team
interactions.
(Prerequisites:
CS
471;
COMM
131X
or
141X;
ENGL
111X.)
CS
405
(3
Credits)
Alternate
Spring
Introduction
to
Artificial
Intelligence
(3+0)
Examine
diverse
branches
of
Al
placing
Al
in
larger
context
of
computer
science
and
software
engineering.
Knowledge
representation
formalism
and
search
technology.
Programming
methodologies;
procedural
systems
such
as
expert
systems
and
blackboard
systems
and
non-procedural
systems
such
as
neural
networks.
Software
engineering
aspects
of
problem
selection,
knowledge
acquisition,
verification
and
validation.
Individual
projects.
(Prerequisite:
CS
311
or
permission
of
instructor.
Next
offered:
2003
-
04.)
CS
411
(3
Credits)
Fall
Analysis
of
Algorithms
(3+0)
Analysis
of
classic
algorithms,
their
implementation,
and
efficiency.
Topics
from
combinatorics
(sets,
graphs),
algebra
(integer
arithmetic,
primes,
polynomial
arithmetic,
GCD,
Diophantine
equations,
encryption),
systems
(parsing
searching,
sorting),
and
theory
(recursion,
Turing
machines).
The
complexity
classes
P,
NP,
and
NP
complete.
(Prerequisites:
MATH
307,
CS
311.)
CS
421W
(3
Credits)
Alternate
Fall
Distributed
Operating
Systems
(3+0)
Detail
level
study
of
distributed
operating
system
algorithms,
functions,
and
associated
implementation.
Distributed
operating
system
tuning
methods
and
security.
Role
of
distributed
operating
systems
in
net-centric
computing.
Programming,
documentation,
and
evaluation
of
distributed
operating
system
segments
as
projects.
(Prerequisites:
CS
321
and
ENGL
111X.
Next
offered:
2004-05.)
CS
425
(3
Credits)
Alternate
Spring
Database
Systems
(3+0)
Data
independence,
modeling,
relationships,
and
organization.
Hierarchical,
network,
and
relational
data
models;
canonical
schema.
Data
description
languages,
SQL,
query
facilities,
functional
dependencies,
normalization,
data
integrity
and
reliability.
Review
of
current
database
software
packages.
(Prerequisites:
CS
311,
321.
Next
offered:
2004-05.)
CS
431W
(3
Credits)
Alternate
Fall
Programming
Language
Implementation
(3+0)
Design
and
implementation
of
major
phases
of
high
level
language
translators
including
scanning,
parsing,
translation,
code
generation
and
optimization.
Students
develop
a
compiler
for
a
language
in
a
group
project
which
emphasizes
good
software
engineering
practices
in
structured
design,
testing
and
documentation.
(Prerequisites:
CS
331
and
ENGL
111X.
Next
offered:
2003
-
04.)
CS
441
(3
Credits)
Fall
System
Architecture
(3+0)
Computer
design
fundamentals,
performance
and
cost,
pipelining,
instruction-level
parallelism,
memory
hierarchy
design,
storage
systems,
and
vector
processing.
(Prerequisites:
CS
321
and
EE
341.
CS
442
(3
Credits)
Alternate
Fall
Computer
Communication
and
Networks
(3+0)
Study
of
computer
networks
using
the
ISO/OSI
layered
model
as
a
framework.
Design
issues
and
trade-offs,
protocols
and
selected
standards.
Emphasis
on
ISO/OSI
Layers
1
-
4
(Physical,
Data
Link,
Network
and
Transport
Layers),
plus
medium
access
sublayers
(LAN's,
etc.).
(Prerequisite:
CS
321.
Next
offered:
2004-05.)
CS
451
(3
Credits)
Fall
Automata
and
Formal
Languages
(3+0)
Finite
automata,
regular
languages,
phrase
structured
grammars,
context
free
language,
push
down
automata,
deterministic
context
free
languages,
recursive
and
recursively
enumerable
languages,
Turing
machines,
decision
problems,
and
undecidability.
(Prerequisites:
MATH
307,
CS
201.)
CS
471W
(3
Credits)
Fall
Software
Engineering
(3+0)
(Cross-listed
with
SWE
471W)
Introduction
to
basic
software
engineering
principles,
techniques,
methods
and
standards
as
applied
to
the
engineering
of
complex
software
systems.
Topics
from
software
system
development
process
models,
multiple
view
system
modeling
and
specification
using
UML,
classification
of
software
systems,
project
management
and
legal
issues.
(Prerequisites:
CS
311
and
ENGL
111X
;
or
permission
of
instructor.)
CS
480
(3
Credits)
As
Demand
Warrants
Topics
in
Computer
Science
(3+0)
Topics
in
computer
science.
Topics
include,
but
are
not
limited
to,
computational
linear
algebra,
cryptography,
parallel
algorithm
development
and
analysis.
(Course
may
be
repeated
when
topics
change.)
CS
481
(3
Credits)
Spring
Advanced
Computer
Graphics
(3+0)
Creation
of
3-D
computer-generated
images.
Graphics
data
structures,
geometric
transformations,
hidden
surface
techniques,
color
theory,
lighting
and
shading
algorithms,
curve
and
surface
representations,
visual
modeling
of
physical
phenomena.
(Prerequisites:
CS
381
and
MATH
314.)
CS
490
(1
-
3
Credits)
Fall,
Spring
Student
Internship
Students
work
on
computer
science
project
under
the
joint
direction
of
a
faculty
member
and
participating
industry
or
governmental
agency.
(Prerequisites:
Junior
standing
and
acceptance
in
an
approved
internship
program.)
CS
602
(3
Credits)
Spring
Project
Management
and
Professional
Practice
(3+0)
Work
on
group
projects
in
a
simulated
computer
industry
environment
to
produce
appropriate
documentation
and
reports.
Nature,
ethics
and
legal
considerations
of
the
computer
science
profession
are
discussed.
Includes
project
management,
design
methodologies,
technical
presentation,
human-machine
interface
and
programming
team
interactions.
(Prerequisites:
CS
671
and
acceptance
into
the
computer
science
or
software
engineering
graduate
program.)
CS
605
(3
Credits)
Alternate
Spring
Artificial
Intelligence
(3+0)
Study
and
writing
of
AI
programs:
expert
systems,
expert
system
shells,
blackboard
systems,
neural
networks.
Representation
of
knowledge,
pattern
analysis,
inference
networks,
neural
network
training.
Study
of
software
engineering
aspects
of
AI
software.
(Prerequisite:
Permission
of
CS
graduate
advisor.
Next
offered
2003
-
04.)
CS
611
(3
Credits)
Spring
Complexity
of
Algorithms
(3+0)
Theoretical
analysis
of
various
algorithms:
topics
include
sorting,
searching,
selection,
polynomial
evaluation,
NP
completeness,
decidability.
(Prerequisites:
CS
411.)
CS
621
(3
Credits)
Alternate
Fall
Advanced
Systems
Programming
(3+0)
Multiprogramming
and
multiprocessing
systems.
File
and
program
security.
Scheduling
optimization
and
system
tuning,
I/O
processing,
archiving
and
system
recovery,
and
initialization.
Study
of
current
systems.
(Prerequisites:
CS
311
and
CS
321.
Next
offered
2003-04.)
CS
622
(3
Credits)
As
Demand
Warrants
Performance
Evaluation
(3+0)
A
survey
of
techniques
of
modeling
and
testing
concurrent
processes
and
the
resources
they
share.
Includes
levels
and
types
of
system
simulation,
performance
prediction,
benchmarking
and
synthetic
loading,
hardware
and
software
monitors.
(Prerequisites:
CS
321
or
permission
of
computer
science
graduate
advisor.)
CS
625
(3
Credits)
Fall
Database
Systems
Design
(3+0)
The
design
and
analysis
of
database
systems
including
data
independence,
relationships,
and
organization.
Focus
on
data
models,
file
organization
and
security,
index
organization,
data
integrity
and
reliability.
Review
of
current
database
software
packages.
Design
and
implementation
of
a
database
application
project.
(Prerequisites:
CS
311.)
CS
631
(3
Credits)
Fall
Programming
Language
Implementation
(3+0)
Formal
treatment
of
programming
language
translation
and
compiler
design.
Parsing
context
free
languages,
translation
specifications,
machine
independent
code,
NBF,
scanners,
symbol
tables,
parsers,
and
recursive
descent.
Programming
of
compiler
or
interpreter
segments
as
projects.
(Prerequisite:
CS
331.)
CS
641
(3
Credits)
Spring
Advanced
Systems
Architecture
(3+0)
A
study
of
advanced
single
processor
systems.
Detailed
study
of
multiprocessor
architectures,
such
as
vector
architectures,
massively
parallel
processors
and
shared-memory
multi-processors.
(Prerequisites:
CS
441
or
permission
of
Computer
Science
graduate
advisor.)
CS
642
(3
Credits)
Alternate
Fall
Advanced
Computer
Networks
(3+0)
A
study
of
networks
of
interacting
computers.
The
problems,
rationales,
and
possible
solutions
for
both
distributed
processing
and
distributed
databases
will
be
examined.
Major
national
and
international
protocols
will
be
presented.
(Prerequisite:
Permission
of
CS
graduate
advisor.
Next
offered
2003-04.)
CS
651
(3
Credits)
Alternate
Spring
The
Theory
of
Computation
(3+0)
Languages
and
formal
models
of
algorithms:
Turing
machines,
phrase
structured
grammars
and
recursive
functions.
Undecidability,
the
halting
problem,
Rice's
Theorem.
(Prerequisite:
CS
451.)
CS
661
(3
Credits)
Alternate
Fall
Optimization
(3+0)
(Cross-listed
with
MATH
661)
Linear
and
nonlinear
programming,
simplex
method,
duality
and
dual
simplex
method,
post-optimal
analysis,
constrained
and
unconstrained
nonlinear
programming,
Kuhn-Tucker
condition.
Applications
to
management,
physical,
and
life
sciences.
Computational
work
with
the
computer.
(Prerequisites:
Knowledge
of
calculus,
linear
algebra,
and
computer
programming.
Next
offered:
2004-05.)
CS
670
(3
Credits)
Fall,
Spring
Computer
Science
for
Software
Engineers
(3+0)
(Cross-listed
with
SWE
670)
An
overview
and
survey
of
the
theoretical
underpinnings
of
computer
science.
Topics
are
taken
from
the
areas
of
algorithms
and
data
structures;
computer
architecture;
computer
networks,
communications,
and
operating
systems;
computability
and
formal
languages;
languages
and
compilation.
(Prerequisite:
admission
to
the
Master
of
Software
Engineering
degree
program.
Not
required
for
students
with
a
B.S.
degree
in
Computer
Science.)
CS
671
(3
Credits)
Spring
Advanced
Software
Engineering
(3+0)
(Cross-listed
with
SWE
671)
Advanced
software
development
as
an
engineering
discipline.
Includes
investigation
of
current
tools,
standards,
foundation
and
trends
in
software
engineering
from
component-ware,
software
system
composition,
e-systems,
software
architecture
and
CASE
tools.
(Prerequisites:
CS
471
and
acceptance
into
the
Master
of
Software
Engineering
degree
program;
or
permission
of
instructor.)
CS
672
(3
Credits)
Alternate
Spring
Software
Process
Improvement
(3+0)
Commonly
applied
methods
for
improving
the
software
development
process.
Emphasis
on
the
Software
Engineering
Institute's
Capability
Maturity
Model
(CMM),
and
specifically
on
the
key
process
areas
of
Level
2
and
Level
3
of
that
model.
These
include
software
configuration
management,
software
quality
assurance,
and
software
standards.
(Prerequisites:
CS
671
or
permission
of
instructor.
Next
offered
2004-05.)
CS
673
(3
Credits)
As
Demand
Warrants
Software
Requirements
Engineering
(3+0)
(Cross-listed
with
SWE
673)
Focus
on
the
requirements
analysis
phase
of
the
software
development
life
cycle.
Study
ways
to
obtain,
analyze,
and
specify
complete
and
correct
sets
of
requirements.
Critique
of
selected
requirements
analysis
models.
Study
of
current
large
scale
software
developments
that
have
failed
or
are
failing.
Development
of
software
requirements
specifications
for
large
and
real
software
systems
via
team
efforts.
(Prerequisites:
CS
671
or
permission
of
instructor.)
CS
674
(3
Credits)
Spring
Software
Architecture
(3+0)
Software
architectural
styles
are
introduced
and
defined
as
structural
descriptions
of
software
systems.
Methods
for
constructing
and
binding
software
systems
are
introduced
and
specified
as
operational
views.
The
architectural
approach,
as
a
classical
engineering
method
for
describing
structure
and
behavior
of
technical
artifacts,
will
be
applied
for
the
composition
of
software
systems.
(Prerequisite:
CS
671.)
CS
680
(1-4
Credits)
As
Demand
Warrants
Topics
in
Supercomputing
(1-4+0)
Topics
in
computer
science.
Example
topics
include,
but
are
not
limited
to,
software
requirements
engineering,
cryptography,
parallel
algorithm
development
and
analysis.
(Prerequisite:
Varies
with
each
topic.
Recommended:
Varies
with
each
topic.
May
be
repeated
for
credit
with
change
of
topic.)
CS
681
(3
Credits)
Spring
Topics
in
Computer
Graphics
(3+0)
Hardware,
software,
and
techniques
used
in
computer
graphics
taken
from
topics
such
as
refresh,
storage,
raster
scan
technology,
volume
rendering,
particle
systems,
shading,
image
processing,
computer
aided
design,
video
effects,
animation
and
virtual
environments.
(Prerequisite:
CS
481
and
MATH
314.)
CS
690
(3
Credits)
Fall
CS
691
(3
Credits)
Spring
Graduate
Seminar
and
Project
(3+0)
(Cross-listed
with
SWE
690/691)
A
two-semester
seminar
in
which
students
will,
individually
or
in
teams,
work
on
and
present
the
results
of
major
programming
or
literature
survey
projects
in
computer
science
or
software
engineering.
Written
and
oral
reports
will
be
required.
(Prerequisites:
12
credits
in
graduate
computer
science
or
software
engineering
courses;
or
permission
of
Computer
Science
or
Software
Engineering
graduate
advisor.)
|