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.