**Courses in Computer Science**

A Csi 100
Computing and Disability (3)

The relation
between people with disabilities and computers. Lectures, tutorials, and
laboratory will deal with topics such as how computers may be used by persons
with disabilities, assistive devices, software, and applications
such as word processing, database inquiries, spreadsheets, and
telecommunications. For students with disabilities and for professionals who
teach and assist people with disabilities. May not be offered in 2005-2006.

A Csi
101 Elements of Computing (3)

Introduction
to the principles and practice of computer programming through the use of the
general purpose high level programming language VISUAL BASIC. Concepts
introduced include algorithms, arrays, files, structured programming, and
top-down design. Course also includes a brief introduction to computer
technology and computer architecture from both a historical and modern
perspective. Only one of A Csi 101 and B Itm 215 may be taken for
credit.

A Csi
102 Microcomputer Software (3)

Theory and
practice of general purpose microcomputer software systems such as spreadsheet
and relational database packages. Query languages for database access. Word
processing with emphasis on spelling and grammar checking. Normally offered spring
semester only.

A Csi
103 Topics in Computer Literacy (3)

Each offering
of this course will address one or more topics that are germane to the use of
computers in every day life. The main emphasis of this course will be on the
use of available software packages. May not be offered in 2005-2006.

A Csi 120
Computational Principles and Issues (3)

Principles and
issues arising in a variety of computational situations. Discussion of topics
from computation theory, artificial intelligence, and systems design. From
computation theory, an emphasis on impediments to computation, such as
undecidability and NP-hardness. From artificial intelligence, an emphasis on
knowledge representation. From systems, an emphasis on computer design and on
synchronization problems. May not be offered in 2005-2006.

A Csi
124X Computer Security Basics (3)

An
introduction to security in computers and networks for a general audience. The
operation of computers and networks is explained to show how they are the basis
for attacks. The course will confer a basic but comprehensive understanding of
how computer and network attacks (e.g., viruses, worms, denial of service)
work. Also, how a general user of computers can defend her or himself from
current and future attacks.

A Csi 198
(formerly A Csi 298) Consulting Service (1–3)

Classroom
instruction on the practical aspects of computing on the campus personal, network and
mainframe computer environment, including word processing, data communications,
networking and using various operating systems. Training is followed by
continuing consulting work experience in the public user rooms. Work schedules
are determined on an individual basis during the first two weeks of class. May
be repeated for credit. Total credits for A Csi 198, A Csi 490,
A Csi 497, A Csi 199 and the former A Csi 298 and A Csi 498
may not exceed nine. Prerequisite(s):
permission of instructor. *S/U* graded.

A Csi 199
(=U Unl 199) Information Literacy and Reference Consulting (1-3)

Classroom instruction on the
practical aspects of computing on the University Libraries campus website,
including search strategy and skills development in information technology in a
public user facility. Students will learn about and assist users with library
research databases and research on the Internet within the context of a
sophisticated information-delivery organization, will become familiar with the
practical, social and ethical issues relating to information, and will be able
to evaluate and utilize information acquired through a variety of formats.
Consulting schedules are determined on an individual basis during the first two
weeks of class. Number of credit hours taken determines consulting hours
required. Class attendance is mandatory. (CSI majors: total credits for A Csi 198, A Csi 199, A Csi 490, A Csi 497, and the former A Csi 298 and A Csi 498 **may not exceed nine**). *S/U* graded.

A Csi
201 Introduction to Computer Science (4)

Computer
algorithms and their representation. The principle of information hiding and its
relation to program block structure. File structure and access methods. The
efficient use of computational resources. Program development and style.

A Csi 203
Data Processing Principles (3)

Introduction to systems analysis
and structured programming techniques using COBOL (Common Business Oriented
Language). Basic COBOL, table handling, sorting, file structures and
maintenance, storage media, and basic functions of a multi-programming
operating system. May not be taken for credit by students with credit for
A Csi 206 or A Csi 306. Prerequisite(s): A Csi 101 or 201 or
B Itm 215. Normally offered spring semester only.

A Csi
204 Scientific Computing (3)

Programming in
the scientific languages Fortran 77 and APL. The effect of internal storage
representation on precision and accuracy. Symbolic computation using Macsyma.
Elementary numerical methods and the graphical presentation of scientific data.
Software libraries of interest to scientists. Prerequisite(s): A Csi 101
or A Csi 201 or B Itm 215, and A Mat 113 or 119. May not be
offered in 2005-2006.

A Csi 205
Object Oriented Programming for Data Processing Applications (3)

Introduction to object oriented programming, abstraction and
system analysis techniques using an object orientated language such as C++ or
Java. Basic syntax and semantics, classes, objects, arrays and pointers.
Modular software design using header or class files and separate compilations
and linking. Use of standard class and function libraries and packages.
Introduction to memory management and performance issues. Prerequisite(s):
B Itm 215 or A Csi 101 or 201. Normally offered fall semester only.

A Csi 210 Discrete
Structures (4)

Proofs by induction; mathematical
reasoning, propositions, predicates and
quantifiers; sets; relations, graphs, and trees; functions; counting,
permutations and combinations. Prerequisite(s) or corequisite: A Csi 201.
Normally offered fall semester only.

A Csi 221 (= A Mat 221)
Introduction to Discrete Mathematics (3)

Topics chosen from sets, relations, induction,
binomial theorem, permutations and combinations, counting, and related topics
in discrete mathematics. Only one of A Mat 221 & A Csi 221 may be
taken for credit. Prerequisite(s) or corequisite: A Mat 113 or 119.

A Csi
300Z Social, Security, and Privacy Implications of Computing (3)

The ethical and moral implications
of using computers to affect the lives of individual and collective members of
human society. Material drawn from a variety of topics, including security and
privacy in computers, networks, security measures, and human users, data banks
vs. rights to privacy, intellectual property, open vs. closed software,
software piracy, unauthorized access, and other computer crimes.
Prerequisite(s): A Csi 201. [WI] May not be offered in 2005-2006.

A Csi 310 Data
Structures (3)

Commonly used abstract data
structures and their implementation. The use of pointers and recursive
programming. Stacks, queues, lists and trees, and their application to such
problems as sorting and searching. Analysis of algorithms for using these
structures. Prerequisite(s): A Csi 201. Normally offered spring semester
only.

A Csi 311 Principles of
Programming Languages (3)

Fundamental concepts and general
principles underlying programming languages and their use as illustrated by
Prolog and Lisp. Analysis and implementation of run-time environment including
scope rules, binding, and parameter passing mechanism. Introduction to
interpreters and compilers. Prerequisite(s): Grade of C or better required in
A Csi 210 and 310. Majors who declared prior to September 1, 2002 will
have the grade restriction waived. Normally offered spring semester only.

A Csi 333 Programming at the
Hardware Software Interface (4)

Instruction set architecture of
contemporary computers; boolean logic, memory, registers, instructions and interrupts.
Assembly language programming; assembler passes, symbols, macros, function
linkage and separate compilations. C language programming; syntax, control,
types, abstractions, pointers and strings. dynamic memory, standard and user
written libraries. ANSI and C++ standards. Instruction set simulation.
Prerequisite(s): Grade of C or better required in A Csi 310. Majors who
declared prior to September 1, 2002 will have the grade restriction waived.
Normally offered fall semester only.

A Csi 400 Operating
Systems (3)

Historical
overview; operating system services; mass storage file organization; memory management in multiprogrammed
systems; virtual memory; resource allocation; concurrent processes; deadlock
detection and prevention; security; the design of contemporary operating
systems such as UNIX. Prerequisite(s): A Csi 333. May not be offered in
2005-2006.

A Csi 401 Numerical Methods
for Digital Computers (3)

Study of practical methods for the
numerical solution of a variety of problems on a digital computer. Topics
covered will include roots of equations, numerical interpolation, numerical
integration and differentiation; the evaluation of mathematical functions,
least squares curve fitting; the solution of simultaneous linear equations,
matrix inversion and linear programming. Prerequisite(s): A Mat 220 and
A Csi 310. Normally offered fall semester only.

A Csi 402 Systems
Programming (3)

Programming aspects of operating
systems. Topics covered include implementation of storage management, resource
allocation, multi-processing, scheduling, synchronization, inter-process
communication, and terminal I/O. Emphasis on projects to enhance subject
understanding, problem solving, and programming skills. Prerequisite(s): Grade
of *C* or better required in A Csi
333. Majors who declared prior to September 1, 2001 will have the grade
restriction waived. Normally offered spring semester only.

A Csi 403 Algorithms and Data

Structures (3)

Description of common data
structures such as lists, push-down stores, queues, trees, and graphs.
Definition of algorithm efficiency and efficient algorithms for integer and
polynomial arithmetic, sorting, set manipulation, shortest paths, pattern
matching, and Fourier transforms. Prerequisite(s): A Csi 210 and 310.
Normally offered spring semester only.

A Csi 404 Computer
Organization (3)

An introduction to the logical
organization of the hardware components of computing systems. Topics include
logic design from a functional point of view, data representation and
processing, description of major components such as the central processing unit
and memory, and control and communication within the components and in the
system. Prerequisite(s): A Csi 333 and 210. Normally offered spring
semester only.

A Csi 407 User
Interfaces (3)

The C programming language.
Event-driven systems. Aspects of the UNIX operating system that support
simulation of multi-tasking in a single processor environment. Window-oriented
user interfaces. Pop-up/pull-down menus. Human factors in software engineering.
Prerequisite(s): A Csi 333. .May not be offered in 2005-2006.

A Csi 409 Automata and Formal
Languages (3)

Introduction
to the theory of computation. Models of computation including Turing machines
and push-down automata will be examined along with their formal language
counterparts such as context-free languages. Additional topics include
unsolvability, computational complexity, and applications to computer science.
Prerequisite(s): A Csi 210. Normally offered fall semester only.

A Csi 410
Database Management Systems (3)

Introduction to database
management systems (DBMS) with emphasis on the relational model. Physical and
logical database design, rollback and recovery techniques, access methods and
query language concepts. The design and use of microcomputer-based relational
systems and spreadsheets. The hierarchical and network DBMS models.
Prerequisite(s): A Csi 310. Normally offered fall semester only.

A Csi 416
Computer Communication Networks (3)

Introduction
to computer communication networks. Equal emphasis on all layers of the ISO
reference model and the TCP/IP protocol suite. Topics include physical
networks, sliding window protocols, remote procedure call, routing, naming and
addressing, security, authentication, performance, and applications.
Prerequisite(s): A Csi 402 and A Mat 367. Normally offered fall
semester only.

A Csi 417 Compiler
Construction (3)

Compilation vs. interpretation;
lexical analysis based on finite automata; parsing; syntax-directed
translation; symbol tables; run-time storage allocation; error detection and
recovery; code generation and optimization. Prerequisite(s): A Csi 333 and
409. Normally offered spring semester only.

A Csi 418 Software
Engineering (3)

Software engineering principles,
the role of abstraction in programming, abstract data types, modularization and module interfaces, specifications,
and teamwork. Project work in contemporary concurrent and object-oriented
languages. Prerequisite(s): A Csi 333. Normally offered fall semester
only.

A Csi 421 Discrete
Mathematics with Applications (3)

A deeper coverage of the content
of A Csi 210. Proofs by induction, recursive definitions, and
combinatorial analysis. Introduction to recurrence equations, graph theory, and
abstract algebra. Applications to proofs of correctness and analysis of
combinatorial and algebraic algorithms. Prerequisite(s): A Csi 210.
Normally offered fall semester only. .May not be offered in 2005-2006.

A Csi 422 (formerly
A Csi 302) Introduction to Computer Graphics (3)

Mathematics, data structures,
algorithms, system architecture and programming projects for implementing two
and three dimensional computer graphics software. Rastorization, matrices,
linear and projective transformations; clipping, removal of hidden lines and
surfaces. Devices, event driven user interaction, and an introduction to window
systems and visual programming tools. Prerequisite(s): A Mat 113 and
either A Csi 333 or permission of instructor. A Mat 220 (Linear
Algebra) is desirable but not required. May not be offered in 2005-2006.

A Csi 424 Information
Security (3)

This course covers the broad
spectrum of technical issues surrounding computer security and intrusion
detection. Topics considered include: viruses, worms, host- and network-based
vulnerabilities and countermeasures, database security, intrusion detection,
and privacy and legal issues. Facilities for securing hosts and limiting
vulnerability are also discussed. Unlike in a systems administration class,
detailed operational issues are not discussed. Prerequisite(s): A Csi 402
or A Csi 400.

A Csi 426 Cryptography (3)

The making of ciphers to encode
information is the subject of cryptography. This course covers the field from
its origins in early historic times through its most up-to-date implementations
and uses in digital computers. Various ciphers will be shown and their security
assessed. This latter is known as cryptanalysis – the attempt to break a cipher
in order to read the underlying message. The course will emphasize how
cryptography and cryptanalysis are intimately related, and how the arms race
between the two has motivated progress throughout their history.
Prerequisite(s): A Csi 333 and co-registration in A Csi 403.

A Csi 430
Introduction to Mathematical Logic (3)

Topics
include logical validity, logical consequence, computerized theorem proving,
compactness, soundness, consistency, completeness and incompleteness in the
context of propositional logic, first order logic, Frege-Hilbert deduction and
computerized Semantic Tableaux deduction. This course will survey Goedel’s Completeness
and Incompleteness Theorems along with decidability, undecidability, and a
classification of theoretically computable and uncomputable problems.
Prerequisite(s) A Csi
210 plus permission of instructor. May not be offered in 2005-2006.

A Csi 431
Data Mining (3)

A course on
data mining (finding patterns in data) algorithms and their application to
interesting data types and situations. We cover algorithms that addresses the
five core data mining tasks: prediction, classification, estimation, clustering,
and associations. Course projects will involve advanced topics such as
algorithm developments for handling large data sets, sequential, spatial, and
streaming data. Prerequisite(s): A Csi 310.

A Csi 435
Introduction to Artificial Intelligence (3)

An introduction
to the broad spectrum of approaches and techniques of Artificial Intelligence.
Emphasis on how to represent knowledge in a computer and how to process that
knowledge to produce intelligent behavior. Topics include expert systems,
heuristic search, natural language processing and logic-based approaches.
Programming assignments using artificial intelligence languages. Prerequisite(s):
A Csi 311. May
not be offered in 2005-2006.

A Csi
440 High Performance Scientific Computing I (3)

Introduction to distributed,
shared memory, and non-uniform memory advanced architectures, advanced
networks, advanced parallel and distributed languages supporting scientific
computing. Basic linear algebra algorithms and their relation to decomposition,
memory, access patterns, and scalability. High-level prototyping languages,
experimental methods, performance analysis and polyalgorithm design.
Prerequisite(s): A Csi 310, A Csi 401, A Mat 220 and knowledge
of numerical methods and Fortran; or permission of instructor.

A Csi
441 High Performance Scientific Computing II (3)

Numerical methods for ODE’s, PDE’s and transforms
(FFT) suitable for advanced parallel and distributed computing. Explicit versus
implicit message generation and processing in distributed computing environments.
Advanced experimental methods. High Performance Fortran, F90 and MPI.
Prerequisite(s): A Csi 440.

A Csi
442 An Introduction to Quantum Computation, Information, and Simulation (3)

The main ideas of Quantum
Computation, Information, and Simulation are introduced. The course describes
what quantum computation is and how it can be used to solve problems faster
than classical computers. The challenges of building a quantum computer are
addressed. Quantum simulators are explained and built illustrating the vast
differences between quantum and classical gates. The course also covers quantum
information, explaining how quantum states can be used to program
communications. Prerequisite(s): A Csi 403 or 503, knowledge of the use of
Boolean Algebra in circuit design, and programming experience.

A Csi
445 Topics in Computer Science (3)

The contents
of this course will vary from semester to semester. Each offering will cover an
advanced senior-level topic in Computer Science. Prerequisite(s): A Csi
333 (or A Csi 205 & 310) or permission of instructor. May be repeated
for credit when content varies.

A Csi
487 Honors Seminar (3)

Each student
is required to carry out independent study under the supervision of a faculty
member and present a departmental colloquium on the chosen topic. Students may
also be required to complete a theoretical or an experimental project, write
reports or make short presentations. Only one of A Csi 487 and A Csi
487Z may be taken for credit. Prerequisite(s): Admission to the honors program.

A Csi
487Z Honors Seminar (3)

Each student
is required to carry out independent study under the supervision of a faculty
member and present a departmental colloquium on the chosen topic. Students may
also be required to complete a theoretical or an experimental project, write
reports or make short presentations. Only one of A Csi 487 and A Csi
487Z may be taken for credit. Prerequisite(s): Admission to the honors program.
[WI]

A Csi
488Z Honors Project (3-12)

Students are
required to pursue research supervised by a faculty member and submit final
reports describing their research. Outcomes of this research may include
software/hardware artifacts, data collected through experiments, bibliographies
or research papers. Each student is evaluated by a faculty committee during the
second semester of their senior year. Honors students must complete at least 6
credits of this course. Prerequisite(s): Admission to the honors program. [WI]

A Csi 490
Internships in Computer Science (1–3)

Arrangements
with external agencies or companies requiring programming or design assignments
involving computer systems in a practical environment. Interns are selected by
the department and are required to submit a significant report upon completion
of the internship. Total credits for A Csi 198, A Csi 490, and
A Csi 497 and the former 298 and 498 may not exceed nine. **Internships are open only to qualified
juniors and seniors who have an overall grade point average of 2.50 or higher.**
Prerequisite(s): A Csi 203 or 310, and permission of department. *S/U* graded. For majors only.

A Csi 497
Independent Study in Computer Science (1–3)

Independent study in computer
science under the guidance of faculty computer users. Students should expect to
spend approximately three hours per week per credit solving real
computer-related problems and submit a significant paper or report upon
completion. May be repeated for credit. Total credits for A Csi 198,
A Csi 490, and A Csi 497 and the former 298 and 498 may not exceed
nine. Prerequisite(s): A Csi 203 or 310, and permission of department. *S/U* graded.

A Csi 499
Senior Project in Computer Science (3)

Introduction to software
engineering. Students will participate in the design and production of a large,
modular program typical of those encountered in business and industry.
Prerequisite(s): A Csi 333 or 311, and permission of instructor.