**COURSES IN COMPUTER SCIENCES**

As of 01 March 2007

The following information is subject to change at any time without notice.

Courses numbered below 500 are undergraduate courses.

"Sem. 1" and "Sem. 2" denote fall and spring semesters, respectively.

Courses marked "dormant" are unlikely to be offered.

**091 Professional Practice I**
Sem. 1 and 2. SS.
Cr. 0.
Prerequisite: approval of the departmental Cooperative Education coordinator.

**092 Professional Practice II**
Sem. 1 and 2. SS.
Cr. 0.
Prerequisite: CS 091 and approval of the departmental Cooperative Education coordinator.

**093 Professional Practice III**
Sem. 1 and 2. SS.
Cr. 0.
Prerequisite: CS 092 and approval of the departmental Cooperative Education coordinator.

**094 Professional Practice IV**
Sem. 1 and 2. SS.
Cr. 0.
Prerequisite: CS 093 and approval of the departmental Cooperative Education coordinator.

**095 Professional Practice V**
Sem. 1 and 2. SS.
Cr. 0.
Prerequisite: CS 094 and approval of the departmental Cooperative Education coordinator.

**110 Introduction to Computers**
Sem. 1 and 2.
Class 2, lab. 2, cr. 3.
May not be taken for credit by Computer Science majors.

Computer applications and how they can be used for solving
problems in everyday life.
The Internet with an emphasis on obtaining information from the World
Wide Web,
use of a database with an emphasis on data storage and retrieval,
spread sheets,
word processing,
presentation software,
integration of multiple software packages.

**149 Web Programming**
[Not regularly offered.]
Class 2, lab. 2, cr. 3.
May not be taken for credit by majors in Computer Sciences.

HyperText Markup Language,
JavaScript,
Active Server Pages,
Java Server Pages,
Java servlets,
Cascading Style Sheets,
Extensible Markup Language (XML),
website security.

**158 C Programming**
Sem. 1 and 2.
Class 2, lab. 2, cr. 3.
Corequisite: MA 161 or 165 or equivalent.
Students cannot receive credit for both CS 156 [no longer offered] and CS 158.
Students who have credit in CS 180 cannot receive credit for CS 158.

UNIX,
the X Window System,
vi editor,
file system,
basic commands,
utilities,
mail,
news,
World Wide Web,
Mosaic.
Introduction to programming in C:
integer and floating-point data,
standard mathematics library,
control structures,
user-defined functions,
arrays,
character data,
strings,
input and output.
Applications.

**159 Programming Applications for Engineers**
Replaces CS 156.
Sem. 1 and 2. SS.
Class 2, lab. 2, cr. 3.
Corequisite: ENGR 116 or 126, or consent of instructor.

Fundamental principles, concepts, and methods of programming (C &
MATLAB), with emphasis on applications in the physical sciences and
engineering. Basic problem solving and programming techniques;
fundamental algorithms and data structures; and use of programming
logic in solving engineering problems. Students are expected to
complete assignments in a collaborative learning environment.

**177 Programming with Multimedia Objects**
Sem. 1 and 2.
Class 3, lab. 2, cr. 4.
Not open to CS majors with a grade of C or better in
CS 180. Not open to non-CS majors with a grade of C or better in any
course in computer programming.

Introduction to computers and programming:
number representations,
primitive data types and operations,
basic control structures,
programming applets and applications using graphical user interfaces,
programming for detecting events and performing actions,
processing multimedia objects such as images and sounds.
Throughout the course, examples are drawn from a variety of fields
in the natural sciences.

**180 Programming I**
Sem. 1 and 2.
Class 3, lab. 2, cr. 4.
Corequisite: MA 161.
Intended primarily for students majoring in computer science.
Credit cannot be obtained for both CS 180 and
any of CS 156 [no longer offered], 158, and 159.
Not open to students with credit in CS 181 [no longer offered] or 240.

Introduction to computers and software,
primitive types,
strings,
input,
output,
flow of control,
classes,
objects,
methods,
arrays,
inheritance,
exception handling,
recursion,
abstract data types,
collections framework,
streams and file I/O,
reuseable software,
and event-driven programming.
The programming language used is Java.

**182 Foundations of Computer Science**
Sem. 1 and 2.
Class 3, cr. 3.
Prerequisite: CS 180 and MA 161.

Basic mathematical objects,
logic,
number representations,
discrete probability,
recursion and recursive programs,
proof techniques,
finite state machines,
languages and strings,
pushdown automata,
asymptotics and complexity,
computability and undecidability, and
future computing trends.

**190 Topics in Computer Sciences**
Sem. 1 and 2. SS.
Cr. 1-5.
Open to students only with the consent of the department.

**191 **
(proposed new number for 192)

**192 Freshman Resources Seminar**

This course is intended to integrate freshman majors in Computer
Sciences into the department, help them adjust to university life,
and assist them in developing academic and intellectual survival
skills. Weekly recitation sections enable the students to work in
teams.

**197 Freshman Honors Seminar**
Sem. 2.
Class 1, cr. 1.
Offered on a pass/no pass basis only.
Open only to students in the Computer Sciences Honors Program.
The credit may be used only toward free electives.

A seminar dealing with the history, context, and future of computer science.

**235 Introduction to Organizational Computing**
Sem. 1 and 2.
Class 2, lab. 2, cr. 3.
Prerequisite: CS 110.
Intended for students in Management.
May not be taken for credit by Computer Science majors.

People and organizations,
decision-making,
information systems,
telecommunications,
desktop systems,
integration tools,
collaboration and groupware,
multimedia,
authoring multimedia documents,
emerging technologies.

**240 Programming in C**
Sem. 1 and 2.
Class 2, lab. 2, cr. 3.
Prerequisite: CS 180.

Programming in C for students who know Java:
preprocessor,
structures,
pointers,
dynamic memory allocation,
streams,
string handling,
header files,
process control,
interprocess communication,
threads,
interrupts,
software engineering principles,
features of C++.

**250 Computer Architecture**
Sem. 1 and 2.
Class 3, lab. 2, cr. 4.
Prerequisite: CS 182 and 240.

Concepts of computer system organization and programming;
instruction and data representations;
basics of digital logic design;
instruction set decoding and addressing modes;
fundamentals of assembly language;
the organization and the operation of the central processing unit, memory
system, and I/O interfaces;
I/O structures;
direct memory access;
interrupts;
bus protocols.

**251 Data Structures**
Sem. 1 and 2.
Class 3, cr. 3.
Prerequisite: CS 182.

Specification, representation, and manipulation of
basic data structures: linked lists,
arrays,
stacks,
queues,
trees,
strings,
symbol tables,
Huffman codes,
optimal search trees,
pattern matching,
priority queues,
heaps,
hash tables.
Storage allocation,
garbage collection,
compaction,
reference counts.
List and string processing languages.
Analysis of algorithms.
Students are required to write programs in several languages.

**290 Topics in Computer Sciences**
Sem. 1 and 2. SS.
Cr. 1-5.
Open to students only with the consent of the department.

**291 Sophomore Development Seminar**
Sem. 1.
Class 1, cr. 1.
Offered on a pass/not pass basis only.
Prerequisite: (none)
For sophomores in Computer Science.

Presentations by corporate partners about careers in computer
science. Presentations by faculty about careers in academia and
research. Students learn about upper-division courses, tour research
laboratories, and attend job fairs.

**307 Software Engineering I**
[Formerly 406]
Sem. 1 and 2.
Class 3, cr. 3.
Prerequisite: CS 251.

An introduction to the methods and tools of software engineering;
software life cycle;
specification and design of software,
software testing,
cost and effort estimation;
laboratory exercises with design, testing, and other tools.

**314 Numerical Methods**
Sem. 2.
Class 3, cr. 3.
Prerequisite: MA 265 and one of CS 159, CS 177, and CS 180, or the equivalent.

Iterative methods for solving nonlinear equations;
direct and iterative methods for solving linear systems;
approximations of functions,
derivatives and integrals;
error analysis.

**334 Fundamentals of Computer Graphics**
Sem. 1. [In 2007-08, sem. 2 also (taught by ECE).]
Class 3, cr. 3.
Prerequisite: CS 240 and MA 265, or consent of instructor. CS 314 is recommended.

Fundamental principles and techniques of computer graphics.
The course covers the basics of
going from a scene representation to a raster image using OpenGL.
Specific topics include coordinate manipulations,
perspective,
basics of illumination and shading,
color models,
texture maps,
clipping and basic raster algorithms,
fundamentals of scene constructions.

**348 Information Systems**
Sem. 1. [In 2007-08, sem. 2 also.]
Class 3, cr. 3.
Prerequisite: CS 251.

File organization and index structures;
object oriented database languages;
the relational database model with introductions to SQL and DBMS;
hierarchical models and network models with introductions to
HDDL, HDML, and DBTG Codasyl;
data mining;
data warehousing;
database connectivity;
distributed databases;
the client/server paradigm;
middleware, including ODBC, JDBC, CORBA and MOM.

**352 Compilers: Principles and Practice **
Sem. 1 and 2.
Class 3, cr. 3.
Prerequisite: CS 250.
Corequisite: CS 251.
Should not be taken concurrently with CS 354.

The theory and practice of programming language translation,
compilation, and run-time systems,
organized around a significant programming project to build a
compiler for a simple but non-trivial programming language.
Modules,
interfaces,
tools.
Data structures for tree languages.
Lexical analysis,
syntax analysis,
abstract syntax.
Symbol tables,
semantic analysis.
Translation,
intermediate code,
basic blocks,
traces.
Instruction selection,
CISC and RISC machines.
Liveness analysis,
graph coloring register allocation.
Supplemental material drawn from garbage collection,
object-oriented languages,
higher-order languages,
dataflow analysis,
optimization,
polymorphism,
scheduling and pipelining,
memory hierarchies.

**354 Operating Systems**
Sem. 1 and 2.
Class 3, cr. 3.
Prerequisite: CS 250 and 251.
Should not be taken concurrently with CS 352.

Introduction to operating systems.
Computer system and operating system architectures,
processes,
inter-process communication,
inter-process synchronization,
mutual exclusion,
deadlocks,
memory hierarchy,
virtual memory,
CPU scheduling,
file systems,
I/O device management,
security.

**355 Introduction to Cryptography**
Sem. 1 or 2. [Sem. 1 in 2007-08.]
Class 3, cr. 3.
Prerequisite: CS 251 and MA 265 or equivalent, or consent of instructor.

An introduction to cryptography basics:
Classic historical ciphers including Caesar, Vigenère and Vernam ciphers;
modern ciphers including DES, AES, Pohlig-Hellman, and RSA;
signatures and digests;
key exchange;
simple protocols;
block and stream ciphers;
network-centric protocols.

**381 Introduction to the Analysis of Algorithms**
Sem. 1 and 2.
Class 3, cr. 3.
Prerequisite: MA 261 and CS 251.

Techniques for analyzing the time and space requirements of
algorithms.
Application of these techniques to sorting,
searching,
pattern-matching,
graph problems, and
other selected problems.
Brief introduction to the intractable (NP-hard) problems.

**390 Topics in Computer Sciences**
Sem. 1 and 2. SS.
Cr. 1-5.
Open to students only with the consent of the department.

**391 **
(proposed new number for 392)

**392 Junior Resources Seminar **
[Formerly CS 491, Senior Resources Seminar]
Sem. 2.
Class 1, cr. 1.
Offered on a pass/no pass basis only.
Open only to junior and senior majors in Computer Sciences.
The credit may be used only toward free electives.

This seminar course engages a number of outside speakers who
typically present information on the role of research in computer
science, how the research components of computer science relate to
each other, approaches to software development in industry, different
types of application development paradigms, technological trends, and
societal, ethical, and legal issues.

**397 Honors Seminar**
Sem. 1.
Cr. 0.
Offered on a satisfactory/unsatisfactory basis only.
Open only to students in the Computer Sciences Honors Program.

A seminar for all sophomores, juniors, and seniors in the Computer
Sciences Honors Program. Meets eight times each semester under the
supervision of the Honors Coordinator. The meetings focus on honors
research projects, helping students to identify appropriate projects
and form groups and providing a forum for juniors and seniors to report
on their projects as required in the honors program.

**407 Software Engineering II**
[Dormant]
Class 3, cr. 3.
Prerequisite: CS 406.

Because of the nature of the project, CS 407 is an extension of CS
406. The emphasis is on the development of a large software system
in a team environment. Knowledge of methods and tools acquired in CS
406 are put to use in a carefully controlled and guided project.
Some advanced topics such as
reliability estimation and methods,
and tools for the design and verification of parallel
programs
are covered during the lectures.

**422 Computer Networks**
Sem. 1 and 2.
Class 3, cr. 3.
Prerequisite: CS 354.

Introduction
to computer networks and data communication.
Low-level details of media, signals, and bits:
time division and frequency division multiplexing;
encoding;
modulation;
bandwidth, throughput, and noise.
Packet transmission:
Local Area Network (Ethernet, FDDI) and Wide Area Network technologies (ATM);
wireless networks;
network interconnection with repeaters, bridges, and switches;
DSU/CSU; xDSL and cable modems.
Internetworking:
router-based architecture;
IP addressing; address binding with ARP;
datagram encapsulation and fragmentation;
UDP and TCP;
retransmission;
protocol ports;
ICMP and error handling.
Network applications:
client/server concept;
port demultiplexing;
program interface to protocols (API);
use by clients and servers;
domain name system;
TELNET;
Web technologies including HTTP, CGI, Java; RPC and middleware;
network management.

**426 Computer Security**
Sem. 2. [In 2007-08, sem. 1 also.]
Class 3, cr. 3.
Prerequisite: CS 354.

A survey of the fundamentals of information security.
Risks and vulnerabilities,
policy formation,
controls and protection methods,
database security,
encryption,
authentication technologies,
host-based and network-based security issues,
personnel and physical security issues,
issues of law and privacy.

**434 Advanced Computer Graphics **
Sem. 2. [Not offered in 2007-08.]
Class 3, cr. 3.
Prerequisite: CS 334 or consent of instructor.

Advanced concepts and techniques of computer graphics.
The course covers, in complete detail, going from a scene
representation to a raster image without using OpenGL or other
graphics packages.
The course develops a complete graphics implementation in which the
students implement every aspect of the graphics pipeline. This
involves a substantial software project in C/C++.

**448 Introduction to Relational Database Systems**
Sem. 1 and 2. [In 2006-07, sem. 2 only.]
Class 3, cr. 3.
Prerequisite: CS 251.

An in-depth examination of relational database systems including
theory and concepts as well as practical issues in relational databases.
Modern database technologies such as
object-relational and web-based access to relational databases.
Conceptual design and entity relationship modeling,
relational algebra and calculus,
data definition and manipulation languages using SQL,
schema and view management,
query processing and optimization,
transaction management,
security,
privacy,
integrity management.

**456 Programming Languages**
Sem. 2. [In 2007-08, sem. 1 instead of sem. 2.]
Class 3, cr. 3.
Prerequisite: CS 352.

Concepts for structuring data, computation, and whole programs.
Object-oriented languages,
functional languages,
logic- and rule-based languages.
Data types,
type checking,
exception handling,
concurrent processes,
synchronization,
modularity,
encapsulation,
interfaces,
separate compilation,
inheritance,
polymorphism,
dynamic binding,
subtyping,
overloading,
beta-reduction,
unification.

**471 Introduction to Artificial Intelligence**
[Not regularly offered.]
Class 3, cr. 3.
Prerequisite: CS 251.

Basic problem-solving strategies,
heuristic search,
problem reduction and AND/OR graphs,
knowledge representation,
expert systems,
generating explanations,
uncertainty reasoning,
game playing,
planning,
machine learning,
computer vision, and
programming systems such as Lisp or Prolog.
Students are expected to spend at least three hours per week gaining
experience with artificial intelligence systems and developing software.

**478 Introduction to Bioinformatics**
(BIOL 478, STAT 490B)
Sem 1.
Class 3, cr. 3.
Prerequisite: BIOL 231, 241 or BIOL 230, C S 180 or equivalent courses, or consent of instructor.

Bioinformatics is broadly defined as the study of molecular biological
information, targeting particularly the enormous volume of DNA sequence and
functional complexity embedded in entire genomes. Topics will include
understanding the evolutionary organization of genes (genomics), the structure
and function of gene products (proteomics), and the dynamics of gene expression
in biological processes (transcriptomics). Inherently, bioinformatics is
interdisciplinary, melding various applications of computational science with
biology. This jointly taught course introduces analytical methods from biology,
statistics and computer science that are necessary for bioinformatics
investigations. The course is intended for junior and senior undergraduates
from various science backgrounds. Our objective is to develop the skills of
both tool users and tool designers in this important new field of research.

**483 Introduction to the Theory of Computation**
Sem. 1 or 2. [Sem. 2 in 2007-08.]
Class 3, cr. 3.
Prerequisite: CS 381 and CS 352, or consent of instructor.

Turing machines and the Church-Turing thesis;
decidability;
halting problem;
reducibility;
undecidable problems;
decidability of logical theories;
Kolmogorov complexity;
time classes: P, NP, NP-complete;
space classes: Savitch's theorem, PSPACE-completeness, NL-completeness;
hierarchy theorems;
approximation theorems;
probabilistic algorithms;
applications of complexity to parallel computation and cryptography.

**490 Topics in Computer Sciences for Undergraduates**
Sem. 1 and 2. SS.
Cr. 1-5.
Open to students only with the consent of the department.

Supervised reading and reports in various fields.

**497 Honors Research Project**
Sem. 1 and 2.
Cr. 3.
Open only to juniors and seniors in the Computer Sciences Honors Program.
One semester of the project may be counted as one of the seven
computer science courses at or above the 300 level required for the
bachelor's degree. One more semester, if approved by the Honors
Coordinator, can be used as a free elective.

A group research project directed by Computer Sciences faculty
members. Each group must submit a technical report describing its
work and the results obtained.

**501 Introduction to Computational Science**
Sem. 1.
Class 3, cr. 3.
Prerequisite: CS 158, CS 314, and MA 262, or equivalent. CS 250 and 251 are recommended.
Credit in this course may not be used toward a
graduate degree in Computer Sciences.

Overview of computational science and engineering:
study of existing computational environments,
software and systems infrastructure for building computational
environments,
mathematical and algorithmic infrastructure for building computational
environments,
high performance computing,
case studies.
Project required.

**502 Compiling and Programming Systems**
Sem. 1.
Class 3, cr. 3.
Prerequisite: CS 251, 352, and 354. CS 483 is recommended.

Basic principles of compilers and compiler design;
control of translation,
loading, and
execution;
symbolic coding systems;
lexical and syntactic analysis,
design and operation of assemblers and macroprocessors;
design of interpretive systems.
Students are expected to complete a large programming project as
part of the course.

**503 Operating Systems**
Sem. 1 and 2. [In 2007-08, sem. 1 only.]
Class 3, cr. 3.
Prerequisite: CS 502.

Basic principles of operating systems:
addressing modes,
indexing,
relative addressing,
indirect addressing,
stack maintenance;
implementation of multitask systems;
control and coordination of tasks,
deadlocks,
synchronization,
mutual exclusion;
storage management,
segmentation,
paging,
virtual memory;
protection,
sharing,
access control;
file systems;
resource management;
evaluation and prediction of performance.
Students are expected to spend at least three hours per week gaining
hands-on experience in using and modifying a small operating system.

**510 Software Engineering**
Sem. 2. [In 2006-07, sem. 1 instead of sem. 2.]
Class 3, cr. 3.
Prerequisite: CS 251.

Software life cycles,
requirements engineering,
software design,
design of distributed systems,
verification and validation,
software architecture,
process metrics and models,
research methods in software engineering.

**514 Numerical Analysis**
(MA 514)
Sem. 1. [In 2006-07, sem. 2 instead of sem. 1, taught by Mathematics.]
Class 3, cr. 3.
Prerequisite: CS 314 or equivalent.

Iterative methods for solving nonlinear equations;
linear difference equations,
applications to solution of polynomial equations;
differentiation and integration formulas;
numerical solution of ordinary differential equations;
roundoff error bounds.

**515 Numerical Linear Algebra**
Sem. 1 or 2. [Sem. 2 in 2006-07.]
Class 3, cr. 3.
Prerequisite: CS 314 or MA 265 or MA 351 or equivalent, and MA 511 or consent of instructor.

Direct and iterative solvers of dense and sparse linear systems
of equations, numerical schemes for handling symmetric algebraic
eigenvalue problems, and the singular-value decomposition and its
applications in linear least squares problems.

**520 Computational Methods in Analysis**
Sem. 2. [Not offered in 2007-08.]
Class 3, cr. 3.
Prerequisite: MA 351 or 511 and CS 154 [no longer offered] or 180 or equivalent.

A treatment of numerical algorithms for solving classical problems
in real analysis with primary emphasis on linear and nonlinear systems
of equations and on optimization problems;
the writing, testing, and comparison of numerical software for solving
such problems;
a discussion of the characteristics of quality software for
implementing these algorithms.

**525 Parallel Computing**
Sem. 2.
Class 3, cr. 3.
Prerequisite: CS 501 and 520, or equivalent.

Parallel computing for science and engineering applications:
parallel programming and performance evaluation,
parallel libraries and problem-solving environments,
models of parallel computing and run-time support systems,
selected applications.

**526 Information Security**
Sem. 1.
Class 3, cr. 3.
Prerequisite: CS 503 or equivalent.

Basic notions of confidentiality, integrity, availability;
authentication models;
protection models;
security kernels;
secure programming;
audit;
intrusion detection and response;
operational security issues;
physical security issues;
personnel security;
policy formation and enforcement;
access controls;
information flow;
legal and social issues;
identification and authentication in local and distributed systems;
classification and trust modeling;
risk assessment.

**530 Introduction to Scientific Visualization**
Sem. 1. [Not offered in 2007-08.]
Class 3, cr. 3.
Prerequisite: CS 334 and 381, or equivalent. CS 251 is recommended.

Teaches the fundamentals of scientific visualization
and prepares students to apply these techniques in fields such as
astronomy, biology, chemistry, engineering, and physics.
Emphasis is on the representation of scalar, vector, and tensor fields;
data sampling and resampling; and
reconstruction using multivariate finite elements
(surfaces, volumes, and surfaces on surfaces).

**531 Computational Geometry**
Sem. 1. [In 2007-08, sem. 2 instead of sem. 1.]
Class 3, cr. 3.
Prerequisite: CS 580 or consent of instructor.

Computational geometry studies how to
compute with and reason about geometric objects.
The subject is playing an increasingly important role in
computer graphics, game software, geometric modeling,
geographic information systems, and many other
applications.
Course topics include
convex hull,
segment manipulations,
triangulations,
range searching,
Voronoi diagrams,
window queries,
Delaunay triangulation,
duality.
Some key algorithms are implemented.
Questions of floating-point accuracy and robust algorithm design
are considered throughout the course.

**535 Interactive Computer Graphics**
(ME 573)
Sem. 1.
Class 3, cr. 3.
Prerequisite: Admission by consent of instructor.
Credit cannot be obtained for both CS 435 [no longer offered] and 535.

The principles of computer graphics and interactive graphical methods for
problem solving.
Emphasis placed on both development and use of graphical tools
for various display devices.
Several classes of graphics hardware considered in detail. Topics include
hardcopy plotting,
refresh displays,
dynamic techniques,
three dimensional transformations and hierarchical modeling,
color,
modeling of geometry, and
hidden surface removal.
Projects involve programming of interactive minicomputer graphics applications.

**536 Data Communication and Computer Networks**
Sem. 1.
Class 3, cr. 3.
Prerequisite: CS 354 and 422. CS 543 or equivalent is recommended.

Data communications:
communication hardware technologies including
local area and long-haul network hardware,
circuit and packet switching,
interfaces between computer and
network hardware,
and performance issues.
Network architecture:
protocol software and conceptual layering,
reliable delivery over an unreliable channel,
transport protocols,
virtual circuits,
datagrams,
internetworking as a fundamental design concept,
the client-server paradigm,
naming and name binding,
name servers,
addressing and address resolution,
routing and routing algorithms,
congestion and flow control techniques,
network file systems,
distribution of computation, and
DARPA Internet protocols (TCP/IP)
as examples of protocol organization.

**541 Database Systems**
Sem. 1.
Class 3, cr. 3.
Prerequisite: CS 448.

Fundamentals for the logical design of database systems.
The entity-relationship model,
semantic model,
relational model,
hierarchical model,
network model.
Implementations of the models.
Design theory for relational databases.
Design of query languages and the use of semantics for
query optimization.
Design and verification of integrity assertions, and
security.
Introduction to intelligent query processing and database machines.

**542 Distributed Database Systems**
Sem. 2. [Not offered in 2007-08.]
Class 3, cr. 3.
Prerequisite: CS 448. CS 381 and 422 are recommended.

Fundamental issues in distributed database systems that are
motivated by the computer networking and distribution of
processors and databases.
The theory, design, specification, implementation, and performance
of distributed database systems.

**543 Introduction to Simulation and Modeling of Computer Systems**
Sem. 1.
Class 3, cr. 3.
Prerequisite: CS 154 [no longer offered] or 180 and STAT 511, or equivalent.

Simulation:
discrete event simulation,
process oriented simulation,
generating random numbers,
simulation languages,
simulation examples of complex systems.
Nondeterministic models:
random variables,
Poisson process,
moment generating functions,
statistical inference and data analysis.
Modeling:
elementary queueing models,
networks of queues,
applications to performance evaluation of computer systems.

**544 Simulation and Modeling of Computer Systems**
[Dormant]
Class 3, cr. 3.
Prerequisite: CS 422 and 543, or equivalent.

Emphasis is placed on
the study and development of models
of computer systems.
Both analytical and discrete-event simulation models are studied.
Data gathered from actual systems is used to parameterize and
validate these models.
The use of models to predict system performance is discussed.

**555 Cryptography**
Sem. 2.
Class 3, cr. 3.
Prerequisite: MA 351, CS 251, CS 381, and CS 426, or equivalent.

Concepts and principles of cryptography and data security.
Cryptography (secret codes): principles of secrecy systems;
classical cryptographic systems,
including Vigenère and Vernam ciphers;
the Data Encryption Standard (DES);
public-key encryption;
privacy-enhanced email;
digital signatures.
Proprietary software protection;
information theory and number theory;
complexity bounds on encryption;
key escrow;
traffic analysis;
attacks against encryption;
basic legal issues;
e-commerce;
the role of protocols.

**565 Programming Languages**
Sem. 2.
Class 3, cr. 3.
Prerequisite: CS 251 and 352. CS 354 and 483 are recommended.

An exploration of modern or unconventional concepts of programming
languages, their semantics, and their implementations;
abstract data types;
axiomatic semantics using Hoare's logic and Dijkstra's predicate transformers;
denotational semantics;
functional, object-oriented, and logic programming;
concurrency and Owicki-Gries theory.
Example languages include ML, Ada, Oberon, LISP, PROLOG, and CSP.

**569 Introduction to Robotic Systems**
(EE 569)
[Taught by EE faculty.]
Class 3, cr. 3.
Prerequisite: EE 382 and basic knowledge of vector-matrix manipulations, or EE 483, or consent of instructor.

The topics to be covered include
basic components of robotic systems;
selection of coordinate frames;
homogeneous transformations;
solutions to kinematic equations;
velocity and force/torque relations;
manipulator dynamics in Lagrange's formulation;
digital simulation of manipulator motion;
motion planning;
obstacle avoidance;
controller design using the computed torque method; and
classical controllers for manipulators.

**573 Data Mining**
[Proposed, offered as CS 590D in sem. 1 of 2007-08.]
Sem. 1 in alternate years.
Class 3, cr. 3.
Prerequisite: STAT 511 or equivalent, CS 381 or equivalent, or permission of instructor.

Data Mining has emerged at the confluence of artificial
intelligence, statistics, and databases as a technique for
automatically discovering summary knowledge in large datasets. This
course introduces students to the process and main techniques in data
mining, including classification, clustering, and pattern mining
approaches. Data mining systems and applications will also be
covered, along with selected topics in current research.

**574 Advanced Computer Graphics Applications**
(ME 574)
[Taught by ME faculty.]
Class 3, cr. 3.
Prerequisite: CS 535 (ME 573).

Study and application of advanced concepts of computer graphics,
including high performance three dimensional interaction, scientific
visualization, surface and solid modeling and engineering applications.
Students select, design and implement individual
projects.

**580 Algorithm Design, Analysis, and Implementation**
Sem. 1 and 2.
Class 3, cr. 3.
Prerequisite: CS 381 and 483.

Basic techniques for designing and analyzing algorithms:
dynamic programming, divide and conquer, balancing.
Upper and lower bounds on time and space costs,
worst case and expected cost measures.
A selection of applications such as disjoint set union/find,
graph algorithms, search trees, pattern matching.
The polynomial complexity classes P, NP, and co-NP;
intractable problems.

**584 Theory of Computation and Computational Complexity**
Sem. 2. [Not offered in 2007-08.]
Class 3, cr. 3.
Prerequisite: CS 483.

The theory of general purpose programming systems.
Recursive and partial-recursive functions;
recursive and recursively enumerable sets.
The Church-Turing thesis.
The recursion theorem, Rogers' translation theorem,
Rice's undecidability theorem.
The general theory of computational complexity:
there are no general solutions to natural optimization problems.
Complexity for specific models of computation:
the polynomial complexity classes P, NP, and PSPACE;
NP-hard and PSPACE-hard problems, inherently exponential problems.

**590 Topics in Computer Sciences**
Sem. 1 and 2.
Class 1-5, cr. 1-5.

Directed study for students who wish to undertake
individual reading and study on approved topics.

**591 Seminar**
Sem. 1 and 2.
Class 1, cr. 1.
Prerequisite:
Offered on a pass/not pass basis only.
May be repeated for credit.

A weekly seminar presented by faculty and invited speakers,
normally in a specific area.

**591C Research Seminar for First-Year Graduate Students**
First eight weeks of sem. 1.
Class 2, cr. 1.
Prerequisite: none.
Offered on a pass/not pass basis only.

The purpose of this seminar is to help beginning graduate
students in Computer Science find research areas in which they are
interested and faculty members with whom they would like to work.

**591S Information Security and Cybercrime Seminar**
Sem. 1 and 2 in 2006-07.

The security version of CS 591 (q.v.).

**603 Advanced Topics in Distributed Systems**
Sem. 2.
Class 3, cr. 3.
Prerequisite: CS 503. CS 542 is recommended.

Design and control of distributed computing systems
(operating systems and database systems).
Topics include principles of
naming and location,
atomicity,
resource sharing,
concurrency control and other synchronization,
deadlock detection and avoidance,
security,
distributed data access and control,
integration of operating systems and computer networks,
distributed systems design,
consistency control, and
fault tolerance.

**614 Numerical Solution of Ordinary Differential Equations**
Sem. 1. [Not offered in 2007-08.]
Class 3, cr. 3.
Prerequisite: CS 514.

Numerical solution of initial-value problems by Runge-Kutta methods,
general one-step methods, and
multistep methods;
analysis of truncation error,
discretization error, and
rounding error;
stability of multistep methods;
numerical solution of boundary- and eigen-value problems
by initial-value techniques and finite difference methods.

**615 Numerical Methods for Partial Differential Equations I**
(MA 615)
Sem. 2.
Class 3, cr. 3.
Prerequisite: CS 514 and MA 523.

Finite element method for elliptic partial differential equations;
weak formulation;
finite-dimensional approximations;
error bounds;
algorithmic issues;
solving sparse linear systems;
finite element method for parabolic partial differential equations;
backward difference and Crank-Nicolson time-stepping;
introduction to finite difference methods for elliptic, parabolic, and hyperbolic equations;
stability, consistency, and convergence;
discrete maximum principles.

**626 Advanced Information Assurance**
Offered every third semester. [Sem. 2 in 2007-08.]
Class 3, cr. 3.
Prerequisite: CS 526 and 555.

Advanced topics in information assurance, including
selections from the following:
penetration testing,
formal verification of systems,
formal models of information flow and protection,
distributed system authentication,
protocol design and attack,
computer viruses and malware,
intrusion and anomaly detection models,
multi-level security,
active defenses,
investigation and forensics,
network firewalls,
anonymity and identity,
e-commerce support,
database security models and mechanisms.

**635 Capturing and Rendering Real-World Scenes**
Sem. 2.
Class 3, cr. 3.
Prerequisite: CS 535 or a solid foundation in computer graphics, CS 580,
programming proficiency in C or C++, and basic linear algebra.

Advanced techniques for automated modeling and visualization
of complex environments such as rooms, buildings, urban scenes,
and landscapes. Topics covered are at the confluence of
computer graphics, computer vision and engineering and include:
capture technologies,
acquisition device calibration,
view registration,
panoramic images,
3D reconstruction from images,
view morphing,
3D image warping,
lightfield modeling and rendering,
visual hulls,
point-based modeling and rendering,
view dependent texture mapping, and
application development issues and examples.

**636 Internetworking**
Sem. 1. [Not offered in 2007-08.]
Class 3, cr. 3.
Prerequisite: CS 503.

Principles of internetwork architecture and
communication protocols underlying interoperable systems.
Topics include
universal interconnection,
internet addressing and routing;
address binding,
control of internet congestion and flow,
examples of internet protocol suites (TCP/IP and XNS),
round trip time estimation,
naming and name resolution,
internet applications programs,
the ISO/OSI model.

**638 Multimedia Networking and Operating Systems**
Sem. 1 or 2. [Sem. 2 in 2007-08.]
Class 3, cr. 3.
Prerequisite: undergraduate background in computer science or a closely related discipline,
CS 503 or 536, or consent of instructor.

For graduate students in computer sciences
who have a background in networking and operating systems and are
interested in research in networked multimedia systems. The course
consists of a selection of networking and operating system topics for realizing
high performance, predictable, scalable, flexible, and secure multimedia
systems. Topics may vary to reflect timely research issues and the current interests
of the instructor(s). Students are expected
to complete a term project.
Presentations also may be required.

**641 Multimedia Database Systems**
Sem. 1 or 2. [Not offered in 2007-08.]
Class 3, cr. 3.
Prerequisite: CS 541 or 542.

Prepares
students for research in
multimedia database systems. Students
are exposed to a
variety of emerging innovative techniques to store, manipulate,
communicate, visualize, and reason with multimedia systems.

**650 Computational Aspects of Parallel Processing**
[Dormant]
Class 3, cr. 3.
Prerequisite: CS 580.

Introduction to parallel models of computation
(*e.g.*, PRAM's, fixed interconnection networks),
relationships and simulation results between models,
processor-time and area-time tradeoffs;
parallel algorithm techniques and their implementation on different
models for problems such as sorting, graph problems, message routing,
and numerical and algebraic problems;
lower bound results on communication complexity,
inherently sequential problems;
layout techniques and their relationships to VLSI layout systems.

**655 Advanced Cryptology**
Offered every third semester. [Not offered in 2007-08.]
Class 3, cr. 3.
Prerequisite: CS 526 and 555.

Advanced topics in cryptography and cryptanalysis,
including selections from the following:
Steganographic methods.
Cryptanalytic techniques,
including differential cryptanalysis,
chosen plaintext attacks.
Message digest algorithm construction.
Digital cash.
Quantum cryptography.
N-key systems.
Minimal and zero-knowledge systems.
Protocol design and failure.
Verification of algorithms.
Key generation and management.
Traffic analysis.
VPN construction and operation.
Politics, espionage and law enforcement concerns.

**661 Formal Compiling Methods**
[Not regularly offered.]
Class 3, cr. 3.
Prerequisite: CS 502.

Application of concepts developed in formal language and
automata theory to the design of programming languages and
their processors.
Models of syntactic analysis,
including canonical precedence,
LR(k) and LL(k) parsing methods and
variants;
efficiency of each.
Synthesis techniques,
including symbol tables,
storage administration,
parameter mechanisms,
garbage collection;
optimization considerations.
Models of synthesis,
including level,
affix,
attributed grammars;
prospects of fully automating compiler design.
Applicative vs. procedural languages and
their implementations based on the semantic definition
of a language (LISP, Lucid) and
on proof-like techniques (PROLOG, equational systems);
merits of such approaches.

**662 Pattern Recognition and Decision-Making Processes**
(EE 662)
[Taught by EE faculty.]
Class 3, cr. 3.
Prerequisite: EE 302 or equivalent.

Introduction to the basic concepts and various approaches of
pattern recognition and decision-making
processes.
The topics include various classifier designs,
evaluation of classifiability,
learning machines,
feature extraction, and
modeling.

**668 Introduction to Artificial Intelligence**
(EE 668)
[Taught by EE faculty.]
Class 3, cr 3.
Prerequisite: EE 600.

Discussions of deterministic and heuristic approaches of making
systems behave intelligently. Topics include various heuristic
search techniques, knowledge representation methods, game-playing,
question-answering systems, theorem-proving mechanisms, planning,
general problem solvers, and current topics of interest in the
artificial intelligence area.

**690 Seminar on Topics in Computer Sciences**
Sem. 1 and 2.
Cr. 0-5.

**698 Research. M.S. Thesis**

**699 Research. Ph.D. Thesis**

grad-info@cs.purdue.edu

2007.03.01