__Computer
Science CSC__

*General education courses
are marked with stars ()*.

**1100 Computers in
Society (3)** *Prereq.: credit in MATH 1021 or registration in MATH
1023. 2 hrs. lecture; 2 hrs. lab*. Introduction to computers, their applications,
and impact on people and social institutions; the Internet, E-mail, news groups,
ftp, telnet, World Wide Web, multimedia, word processing, spreadsheets, databases.

** 1248 Introduction
to Programming With Applications in Statistics (3)** *Prereq.: MATH
1021 or sufficiently high score on the mathematics placement examination to
qualify for MATH 1022 or 1431. Credit will not be given for both this course
and CSC 1250. Not for degree credit for computer science majors*. Computer
programming using the Pascal language with applications in elementary statistics.

**1250 Introduction
to Computer Science I (3)** *Prereq.: credit or registration in MATH
1022 or 1023. Credit will not be given for this course and CSC 1248 or 1253*.
Fundamentals of problem solving, program design, algorithms, and programming
using a high-level language.

**1251 Introduction
to Computer Science II (3)** *Prereq.: CSC 1250 and credit or registration
in MATH 1550*. Fundamentals of programming and programming design using
a high-level structured language; introduction of dynamic memory allocation,
multi-dimensional arrays, logical records, searching and sorting

**1253 Introduction
to Computer Science with C-I (3)** *Prereq.: credit or registration
in MATH 1550 or credit in MATH 1431. Credit will not be given for both this
course and CSC 1250 and 2290*. Fundamentals of programming, program design,
and algorithms using a high-level block-structured language.

**1254 Introduction
to Computer Science with C-II (3)** *Prereq.: CSC 1253, MATH 1550
or registration in MATH 1435. Credit will not be given for both this course
and CSC 1251 and 2290*. Basic concepts of data types (strings, arrays, records,
sets, files); data structures (linked lists, stacks, queues, trees); searching
and sorting algorithms.

**1970 Introduction
to the UNIX Operating System (2)*** 1 hr. lecture; 2 hrs. lab. Laboratory
projects are assigned*. Features of the UNIX Operating system kernel, shell
commands and scripts, text processing, electronic mail, and the INTERNET.

**2230 Programming
Techniques With Ada (3)** *Prereq.: CSC 1251*. Advanced programming
techniques using data abstraction, exception handling, generics, and tasking.

**2252 Assembly Language
Programming (3)** *Prereq.: credit or registration in CSC 1251, or
equivalent background*. Fundamentals of machine function; basic concepts
of programming at the machine level; assembly language; machine representation
of information, machine language, addressing techniques, program linkage, macroprogramming,
and assembler construction.

**2259 Introduction
to Discrete Structures (3)** *Prereq.: MATH 1552 and CSC 1251*.
Set algebra including mappings and relations; algebraic structures including
semigroups and groups; elements of the theory of directed and undirected graphs;
Boolean algebra and propositional logic; these structures applied to various
areas of computer science.

**2260 Introduction
to the Use of Computers (1)** *Prereq.: MATH 1550. Credit will be
given for only one of the following: CSC 2260, 2262, or IE 2060*. Basic
principles of digital programming in symbolic languages; application of electronic
computers to typical scientific problems.

**2262 Numerical Methods
and FORTRAN (3)** *Prereq.: MATH 1552. Credit will be given for only
one of the following: CSC 2260, 2262, or IE 2060*. Computer-oriented methods
for solving numerical problems in science and engineering; elements of FORTRAN
programming language; numerical solutions to systems of simultaneous linear
equations, nonlinear algebraic equations (root solving), differentiation and
integration, ordinary differential equations, interpolation, and curve fitting.

**2270 COBOL Programming
and Business Data Processing Systems (3)** *Prereq.: credit in a course
in computing. Primarily for students in computer science and related disciplines*.
COBOL programming; its use in business data processing systems.

**2280 Computer Organization
(4)** *Prereq.: CSC 2252. 3 hrs. lecture; 2 hrs. lab*. Basic digital
circuits; Boolean algebra and combinational logic, data representation and transfer,
and digital arithmetic; digital storage and accessing, control functions, input-output
facilities, system organization, and reliability; description and simulation
techniques; features needed for multiprogramming, multiprocessing, and real-time
systems; other advanced topics and alternate organizations.

**2290 Advanced Programming
and Introduction to Data Structures (3)** *Prereq.: CSC 1251*.
Advanced programming techniques and basic concepts of data types, data structures,
and advanced programming languages.

**3102 Advanced Data
Structures and Algorithm Analysis (3)** *Prereq.: CSC 2290 or CSC
1254 and CSC 2252 or EE 3770 and credit or concurrent enrollment in CSC 2259
or EE 2720*. Description and utilization of formal ADT representations,
especially those on lists, sets, and graphs; time and space analysis of recursive
and nonrecursive algorithms, including graph and sorting algorithms; algorithm
design techniques.

**3370 Introduction
to Object Oriented Programming Using JAVA (3)** *Prereq.: CSC 1254
or 2290*. Introduction to OOP concepts using the JAVA programming language.

**3380 Object Oriented
Design Patterns (3)** *Prereq.: CSC 3370 or 3390*. Introduction
to object design patterns and developing software using the unified modeling
language as a design tool.

**3390 Object Oriented
Programming and C++ (3)** *Prereq.: credit in either CSC 1254 or 2290*.
Introduction to the object oriented programming paradigm, including encapsulation,
inheritance, and polymorphism; implementation of these concepts using C++.

**3999 Independent
Undergraduate Research (1-3)** *Prereq.: consent of department chair.
May be taken for a max. of 4 hrs. of credit*. Individual readings, conferences,
and program development in computer science.

**4101 Programming
Languages (3)** *Prereq.: CSC 3102. Credit will not be given for both
this course and CSC 7001*. Principles of programming language design; specification
of syntax and semantics; underlying implementation of block structured languages;
dynamic memory allocation for strings, lists, and arrays; imperative versus
applicative programming; logic programming; modern programming languages.

**4103 Operating Systems
(3)** *Prereq.: CSC 3102*. Design techniques, process management,
processor scheduling; deadlocks, memory management, secondary memory management,
file management; I/O systems, Unix systems.

**4304 Systems Programming
(3)** *Prereq.: CSC 4103*. Batch process systems programs, their
components, operating characteristics, user services and limitations; implementation
techniques for parallel processing of input-output and interrupt handling; overall
structure of multiprogramming systems on multiprocessor hardware configurations;
addressing techniques, core management, file system design and management, system
accounting, and other user-related services; traffic control, interprocess communication,
design of system modules, and interfaces; system updating, documentation, and
operation.

**4330 Software Systems
Development (3)** *Prereq.: CSC 3102*. Software requirements analysis;
design representation, programming methodologies; verification, validation,
maintenance, and software planning.

**4351 Compiler Construction
(3)** *Prereq.: CSC 3102 or equivalent. Credit will not be given for
both this course and CSC 7001*. Program language structures, translation,
loading, execution, and storage allocation; compilation of simple expressions
and statements; organization of compiler including compile-time and run-time
symbol tables, lexical scan, syntax scan, object code generation, error diagnostics,
object code optimization techniques, and overall design; use of compiler writing
languages and bootstrapping.

**4356 Interactive
Computer Graphics (3)** *See ME 4573*.

**4357 Applied Interactive
Graphics and Computer-Aided Design (3)** *See ME 4583*.

**4362 Advanced Numerical
Methods (3)** *Prereq.: CSC 2262 or equivalent*. Advanced treatment
of numerical computation in practice; methodology for enhancing the effectiveness,
accuracy, and efficiency of traditional numerical techniques; emphasis on extrapolation.

**4370 Software Modeling
Techniques (3)** *Prereq.: CSC 3370 or 3390 or 4330*. Examination
of modern modeling techniques for complex/high quality software including static/dynamic
software models and project management models.

**4402 Introduction
to Database Management Systems (3)** *Prereq.: CSC 3102*. Network,
hierarchical, and relational, and entity-relationship models; data definition,
manipulation languages, and conversion among these models; relational database
design theory, efficient query evaluation, elementary query optimization techniques.

**4444 Artificial
Intelligence (3)** *Prereq.: CSC 3102*. Theorem proving and inferencing
techniques, production systems, knowledge representation, approximate reasoning,
nonmonotonic reasoning, natural language understanding, scene analysis, planning,
game playing, and learning.

**4446 Fuzzy Sets
and Applications (3)** *Prereq.: permission of instructor*. Basic
concepts of fuzzy sets, fuzzy operations, fuzzy logic, and fuzzy rule-based
systems; applications to engineering and decision making; emphasis on systematic
methodology to construct fuzzy applications; software and simulations tools
in solving real-world problems using fuzzy-set techniques.

**4602 Fundamental
Computer Science for Teachers (3)** *Prereq.: ELRC 4507 (or prior
programming experience) and credit in an education methods course numbered 3000
or above. Also offered as ELRC 4512*. Advanced programming techniques; emphasis
on structured programming, software and hardware organization, data structures,
graphics, and other topics to prepare students to teach computer science in
secondary schools.

**4890 Introduction
to Theory of Computation (3)** *Prereq.: CSC 2259*. Introduction
to finite automata, regular expressions and languages; push-down automata and
context-free languages; selected advanced language theoretical topics; emphasis
on technique.

**4999 Advanced Independent
Undergraduate Research (1-3)** *Prereq.: consent of department chair.
May be taken for a max. of 4 hrs. of credit*. Individual readings, conferences,
and program development in computer science.

**6100 Advanced Elements
of Computer Science for Teachers (3)** *Prereq.: computer science
programming course or knowledge of a programming language required*. Advanced
programming techniques using a high-level, structured language; data structures
and computer systems software.

**7001 Computing Principles
I (3)** *Prereq.: CSC 3102 or equivalent. Credit will not be given
for both this course and CSC 4101 or 4351*. Comparative programming language
concepts, semantics, data types, control structures, functional languages, compilers,
and compiler construction.

**7002 Computing Principles
II (3)** *Prereq.: CSC 7001 or equivalent*. Fundamentals of operating
systems, including evaluation methods; functional organization and architecture
of computers, including arithmetic/logic and control units, microprogramming,
input/ouput facilities, real-time systems microprocessors, multiprocessors,
distributed processing, and digitallogic; comparative study, including unix,
CP/M, OS/ MVS, and VM/370.

**7080 Computer Architecture
(3)** *Prereq.: CSC 7002 or equivalent. Background in electronics
not required*. Functional architecture of modern digital computer systems;
detailed description of instruction set implementation with monoprocessor and
multiprocessor structures; design and analysis of instruction sets and control
structures.

**7101 Programming
Language Structures (3)** *Prereq.: CSC 4101*. Advanced study
of data specification, storage management, and control in programming languages;
includes coverage of formal specification languages; languages for concurrent
processing; languages that support program verification techniques; and in-depth
study of applicative languages.

**7103 Advanced Operating
Systems (3)** *Prereq.: CSC 4103*. Concurrent programming: shared
memory, communication, and operation-oriented models; concurrent, distributed,
and network programming; distributed operating systems; synchronization and
deadlock detection in distributed systems.

**7120 Performance
Evaluation of Computer and Communication Systems (3)** *Prereq.: CSC
4103*. Modeling techniques, specification of queuing systems, product form
networks, algorithms for performance networks, operational analysis, performance
bound techniques, blocking and priority networks.

**7135 Software Engineering
(3)** *Prereq.: CSC 4330 or equivalent*. Formal specification
techniques, design techniques, abstraction, information hiding, modularity,
software testing, automated testing tools, maintainability factors, and cost
estimation.

**7200 Theory of Computation
I (3)** *Prereq.: CSC 4890*. Algorithms, computability, decidability,
enumerability; formal replacements and Church's thesis; Turing machines, primitive
recursive functions, u-recursive functions; undecidable predicates.

**7201 Theory of Computation
II (3)** *Prereq.: CSC 7200*. Theory of computation; problems
for complexity classes, NP, P, PSPACE, and Nlog; characterization of polynomial
time by alternating log space Turing machines and log space Turing machines
by auxiliary pushdown stores; time-space trade-offs and combinatorial problems.

**7235 Advanced Software
Engineering (3)** *Prereq.: CSC 7135*. Formal testing, validation
and verification techniques; in-depth study of formal specification languages
and techniques.

**7300 Algorithm Design
and Analysis (3)** Characteristics of an algorithm; problems of algorithm
existence; the design, implementation, and complexity of algorithms; algorithm
case studies.

**7333 Machine Learning
(3) F** *Prereq.: CSC 4444*. Fundamental principles of machine
learning; inductive learning; explanation-based learning; computational approach
to Boolean function learning; learning formal languages and recursive theories;
neural network learning and genetic algorithms; applications of machine learning.

**7351 Advanced Compiler
Design Theory (3)** *Prereq.: CSC 4351 or 7001*. Automatic generation
of LL (1), LR (1), LALR (1) parsers, syntax directed translation of high-level
control structures, error recovery, optimization of branching, local code optimization
using directed acyclic graphs, loop optimization, global data flow analysis,
and object-code optimization.

**7370 Graph Algorithms
(3) V** *Prereq.: MATH 4171 or equivalent*. Graph layout algorithms;
networks; application of network flow techniques; polynomial time algorithms
and NP-completeness; dynamic graph drawing.

**7373 Algorithms
for Parallel and Distributed Computing (3)** *Prereq.: CSC 7300 or
equivalent*. Parallel algorithms for searching, sorting, matrix processing,
network optimization, and other problems; implementation and efficiency measures
of the algorithms on different machines, and VLSI systolic arrays.

**7374 Computational
Models for Mobile Robots (3)** *Prereq.: CSC 7300*. Computational
tools for design, analysis, and implementation of algorithms for robotic applications;
existing computational paradigms, constraint representation and real-time modeling
for robotic vision; image understanding, path planning, autonomous navigation
and sensor-fusion problems for mobile robots.

**7375 Robot Vision
(3)** *Prereq.: CSC 3102 or equivalent, and CSC 7300*. Computational
aspects of vision; utilization of techniques from computational geometry, combinatorics,
probability theory, and artificial intelligence; visual recognition and classification.

**7380 Computational
Geometry (3)** *Prereq.: CSC 7300 or equivalent*. Data structures
and algorithm design techniques for geometric problems; geometric searching;
convex hulls; Voronoi diagrams; proximity; intersections of geometric objects;
applications of computational geometry.

**7381 Computational
Aspects of VLSI CAD (3)** *Prereq.: CSC 7300 or equivalent*. Overview
of VLSI design and fabrication process; abstract model of VLSI; combinatorial
optimization algorithms; circuit partitioning; placement and floor planning;
global routing; detailed routing; and circuit compaction.

**7402 Data Base Management
Systems (3)** *Prereq.: CSC 4402*. Implementation of database
systems (physical model and its mapping to conceptual model) ; data structures
and their influence on performance, concurrency control, distributed databases;
advanced database systems.

**7406 Information
Science (3)** *See LIS 7605*.

**7407 Abstracting
and Indexing (3)** *See LIS 7606*.

**7410 Electronic
Information Resources (3)** *See LIS 7607*.

**7420 Parallel and
VLSI Computation (3) F** *Prereq.: CSC 3102*. Theoretical aspects
of the design and analysis of algorithms for parallel computation; physical
implementation of VLSI chips.

**7444 Advanced Artificial
Intelligence (3)** *Prereq.: CSC 4444*. Temporal and nonmonotonic
logic; truth maintenance systems; probabilistic reasoning; deductive databases;
automated learning, planning, and tutoring; story understanding; structure of
domain dependent expert systems.

**7446 Soft Computing
(3)** *Prereq.: CSC 4446 or permission of instructor*. Interplay
of three paradigms in soft computing; fuzzy sets and fuzzy logic, neural computing,
and evolutionary programming; applications in image processing, diagnosis and
classification, decision making, and other areas; software and simulation tools
for problem solving in the soft-computing arena.

**7450 Programming
and Performance Evaluation of Parallel Computers (3)** *Prereq.: CSC
3102 or equivalent and CSC 7300*. Parallel programming techniques; message
passing and process synchronization performance evaluation; prediction of parallel
architectures and algorithms, scalability analysis.

**7481 Information
Retrieval Systems (3)** *Prereq.: CSC 3102 or equivalent. Also offered
as LIS 7610*. Topics include commercially available retrieval systems, text
content analysis, query processing models and current research problems.

**7500 System Modeling
and Computer Simulation (3)** *Prereq.: CSC 2263 or equivalent*.
Construction and use of mathematical and computer models; parameter estimation;
compartmental models; simulation techniques; applications of simulations; examples
and case studies from physical, social, and life sciences, engineering, business,
and information sciences.

**7540 Distributed
Systems (3)** *Prereq.: CSC 4103*. Networking and inter-networking;
client-server model; remote procedure calls; processes and processors in distributed
systems; distributed file systems; transaction-processing techniques; and distributed
systems for high performance computing.

**7560 Computational
Methods (3)** *Prereq.: CSC 4362 or equivalent*. Synthesis, implementation,
and analysis of numerical algorithms; algorithm concept introduced in context
of abstract schema.

**7600 High Performance
Computing I (3) V** *Prereq.: CSC 4362 or consent of instructor*.
Fundamental computational techniques required for scientific computing; important
algorithms for parallel computation; high performance computing.

**7610 High Performance
Computing II (3) V** *Prereq.: CSC 7600 or equivalent*. Finite
difference schemes for molecular dynamics; classical deterministic simulations;
combinatorial optimization; algorithms for quantum molecular dynamics; scientific
applications in high performance computing.

**7620 High Performance
Computing III (3) V** *Prereq.: CSC 7600 or equivalent*. Basic
stochastic simulation techniques for massively parallel computers; simulated
annealing and routing algorithms.

**7700 Special Topics
in Computer Science (3)** *May be taken for a max. of 12 hrs. of credit
when topics vary*. Specialized areas of current interest in computer science.

**7800 Computer Science
Research Seminar (1) V** *May be taken for a max. of 2 hrs. of credit
when topics vary. Pass-fail grading*. Student presentations and discussions
on research topics in computer science.

**7999 Selected Readings
in Computer Science (1-3)** *Prereq.: consent of department chair.
May be taken for a max. of 6 sem. hrs. of credit*.

**9000 Dissertation
Research (1-12 per sem.)** *"S"/"U" grading*.