CS 100 THE COMPUTER SCIENCE PROFESSION. (1) An introductory seminar which covers the fundamental activities, principles, and ethics of the computer science profession. An overview of the discipline of computer science, examples of careers, the history of computing and experience with elementary computing tools are included.
CS 101 INTRODUCTION TO COMPUTING I. (3) An introduction to computing and its impact on society from a user’s perspective. Topics include computation using spreadsheets, beautification using text formatters and word processors, information management with database managers, and problem solving through program design and implementation using a simple programming language. Not open to students who have received credit for higher level computer science courses.
CS 115 INTRODUCTION TO COMPUTER PROGRAMMING. (3) This course teaches introductory skills in computer programming using an object-oriented computer programming language. There is an emphasis on both the principles and practice of computer programming. Covers principles of problem solving by computer and requires completion of a number of programming assignments. Lecture, 2 hours; lab, 1 hour per week.
CS 215 INTRODUCTION TO PROGRAM DESIGN,
ABSTRACTION, AND PROBLEM SOLVING. (4)
The course covers introductory object-oriented problem solving, design, and programming engineering. Fundamental elements of data structures and algorithm design will be addressed. An equally balanced effort will be devoted to the three main threads in the course:
concepts, programming language skills, and rudiments of object-oriented programming and software engineering. Prereq: CS 115, 221, or equivalent.
CS 216 INTRODUCTION TO SOFTWARE ENGINEERING. (3) Software engineering topics to include: life cycles, metrics, requirements specifications, design methodologies, validation and verification, testing, reliability and project planning.
Implementation of large programming projects using object-oriented design techniques and software tools in a modern development environment will be stressed. Prereq: CS 215.
CS 221 FIRST COURSE IN COMPUTER SCIENCE
FOR ENGINEERS. (2)
Characteristics of a procedure-oriented language; description of a computer as to internal structure and the representation of information; introduction to algorithms. Emphasis will be placed on the solution of characteristic problems arising in engineering. Prereq: Not open to students who have received credit for CS 115.
CS 275 DISCRETE MATHEMATICS. (4)
Topics in discrete math aimed at applications in Computer Science. Fundamental principles: set theory, induction, relations, functions, Boolean algebra. Techniques of counting: permutations, combinations, recurrences, algorithms to generate them. Introduc-tion to graphs and trees. Prereq: MA 113, CS 115.
CS 315 ALGORITHM DESIGN AND ANALYSIS. (3) Introduction to the design and analysis of algorithms. Asymptotic analysis of time complexity. Proofs of correctness. Algorithms and advanced data structures for searching and sorting lists, graph algorithms, numeric algorithms, and string algorithms. Polynomial time computation and NP-completeness. Prereq: CS 215, CS 275, and engineering standing.
CS 316 WEB PROGRAMMING. (3)
This course introduces students to the World Wide Web, languages and techniques used for web programming, data transfer over the Internet, and the tools available in the web environment. Prereq: CS 216.
CS 321 INTRODUCTION TO NUMERICAL METHODS. (3) Floating point arithmetic. Numerical linear algebra: elimination with partial pivoting and scaling. Polynomial and piecewise interpolation. Least squares approximation. Numerical integration. Roots of nonlinear equations. Ordinary differential equations. Laboratory exercises using software packages available at computer center. Prereq: MA 114 and knowledge of a procedural computer language is required. (Same as MA 321.)
CS 335 GRAPHICS AND MULTIMEDIA. (3)
This course focuses on the graphical human-machine interface, covering the principles of windowing systems, graphical interface design and implementation, and processing graphical data. There is an emphasis on medium-scale programming projects with graphical user interfaces using a high-level procedural programming language and concepts such as object-oriented design. Prereq: CS 216 and engineering standing.
CS 340 APPLICABLE ALGEBRA. (3)
Topics include: Euclid’s algorithm, unique factorization moduli arithmetic, Fermat’s and Euler’s theorems, Chinese remainder theorem, RSA public key encryption, Pollard rho factoring, pseudo primes, error correcting codes, Hamming codes, polynomial rings and quotient rings, field extensions, finite fields and BCH codes. Prereq: MA 322 or MA 213.
(Same as MA 340.)
CS 375 LOGIC AND THEORY OF COMPUTING. (3) Topics in logic and discrete math aimed at applications in Computer Science. Propositional
calculus: truth tables, logical relations, proofs, tautologies, soundness. Predicate calculus:
variables, quantifiers, equivalencies. Models of computation: logic circuits, finite automata, Turing machines. Prereq: MA 113, CS 215, CS 275 and engineering standing.
CS 380 MICROCOMPUTER ORGANIZATION. (3)
Hardware and software organization of a typical computer; machine language and assembler language programming, interfacing peripheral devices, and input-output programming;
real-time computer applications, laboratory included. Prereq: EE 280 or CS 245. (Same as EE 380.)
CS 383 INTRODUCTION TO EMBEDDED SYSTEMS. (3) A course in the hardware and software of microprocessors. Assembly language program-ming, address decoding, hardware interrupts, parallel and serial interfacing with various special purpose integrated circuits. Each student is expected to do homework assignments using microprocessor hardware. Prereq: EE 280 and EE/CS 380. (Same as EE 383.) CS 395 INDEPENDENT WORK IN COMPUTER SCIENCE. (2) A course for computer science majors only. A problem, approved by the chairperson of the department, provides an opportunity for individual research and study. May be repeated to a maximum of six credits. Prereq: Major and a standing of 3.0 in the department and consent of instructor.
CS 405G INTRODUCTION TO DATABASE SYSTEMS. (3) Study of fundamental concepts behind the design, implementation and application of database systems. Brief review of entity-relationship, hierarchical and network database models and an in-depth coverage of the relational model including relational algebra and calculi, relational database theory, concepts in schema design and commercial database languages. Prereq: CS 315 and graduate or engineering standing.
CS 415G COMBINATORICS AND GRAPH THEORY. (3) A basic course in the theory of counting and graph theory. Topics in enumerative combinatorics may include: generating functions, compositions, partitions, Fibonacci numbers, permutations, cycle structure of permutations, permutations statistics, Stirling numbers of the first and second kind, Bell numbers, inclusion-exclusion. Topics in graph theory may include: Eulerian and Hamiltonian cycles, matrix tree theorem, planar graphs and the 4-color theorem, chromatic polynomial, Hall’s marriage theorem, stable marriage theorem, Ramsey theory, electrical networks. Prereq: MA 213 or MA 322. (Same as MA 415G.)
CS 416G PRINCIPLES OF OPERATIONS RESEARCH I. (3) The course is an introduction to modern operations research and includes discussion of modeling, linear programming, dynamic programming, integer programming, scheduling and inventory problems and network algorithms. Prereq: MA 213 or equivalent. (Same as MA 416G.)
CS 422 NUMERICAL SOLUTIONS OF EQUATIONS. (3) Linear equations: Gaussian elimination, special linear systems, orthogonalization, eigenproblem, iterative methods. Nonlinear equations: solutions of equations in one variable, solutions of systems of nonlinear equations. Optimization. Prereq: CS/MA 321 and MA 322; or consent of instructor. (Same as MA 422.)
CS 441G COMPILERS FOR ALGORITHMIC LANGUAGES. (3) The techniques of processing, specifying, and translating high-level computer languages are studied. Topics include finite state machines and lexical analysis, context-free grammars for language specification, attributed translation grammars, language parsing, and automatic generation of compilers by SLR, LALR, and other methods of analyzing context-free grammars. Other topics may include code optimization, semantics of programming languages, and top-down parsing. Prereq: CS 315 and engineering standing.
CS 450G FUNDAMENTALS OF PROGRAMMING LANGUAGES. (3) An intensive study of fundamental programming concepts exhibited in current high level languages. Concepts include recursion, iteration, coroutines, multiprocessing, backtrack-ing, pattern-matchbacktrack-ing, parameter passing methods, data structures, and storage manage-ment. Typical languages studied are SNOBOL, LISP, PASCAL, and APL. Prereq: CS 370. Restricted to computer science and electrical engineering majors. Others by permission.
CS 463G INTRODUCTION TO ARTIFICIAL INTELLIGENCE. (3) The course covers basic techniques of artificial intelligence. The topics in this course are:
search and game-playing, logic systems and automated reasoning, knowledge representa-tion, intelligent agents, planning, reasoning under uncertainty, and declarative program-ming languages. The course covers both theory and practice, including programprogram-ming assignments that utilize concepts covered in lectures. Prereq: CS 315, CS 375, and engineering standing.
CS 470G INTRODUCTION TO OPERATING SYSTEMS. (3) This course provides an introduction and overview of operating system design, internals, and administration. Topics include classical operating systems (process management, scheduling, memory management, device drivers, file systems), modern operating systems concepts (kernel/microkernel designs, concurrency, synchronization, interprocess commu-nication, security and protection), and operating system administration. Prereq: CS 315, CS 380, and graduate or engineering standing.
CS 471G NETWORKING AND DISTRIBUTED
OPERATING SYSTEMS. (3)
Broad overview of concepts in networking and distributed operating systems with examples. Topics will include protocol stacks, link, network, transport, and application layers, network management, the client-server model, remote procedure calls, and case studies of distributed OS and file systems. Prereq: CS 315 and graduate or engineering standing.
CS 480G ADVANCED COMPUTER ARCHITECTURE. (3) This course focuses on advanced computer architectures and low-level system software.
Topics include RISC architectures, vector and multiprocessor architectures, multiprocessor memory architectures, and multiprocessor interconnection networks. Peripheral devices such as disk arrays, NICs, and video/audio devices are covered. Topics also include device drivers, interrupt processing, advanced assembly language programming techniques, assemblers, linkers, and loaders. Prereq: CS/EE 380. (Same as EE 480.)
CS 485G TOPICS IN COMPUTER SCIENCE (Subtitle required). (2-4) Studies of emerging research and methods in computer science. A review and extension of selected topics in the current literature. When the course is offered, a specific title with specific credits, the number of hours in lecture-discussion and laboratory will be announced.
Lecture/discussion, two-four hours; laboratory, zero-four hours per week. May be repeated to a maximum of eight credits under different subtitles. Prereq: Variable, given when topic is identified; or consent of instructor.
CS 499 SENIOR DESIGN PROJECT. (3)
Projects to design and implement complex systems of current interest to computer scientists. Students will work in small groups. Prereq: CS 315 and engineering standing.
CS 505 INTERMEDIATE TOPICS IN DATABASE SYSTEMS. (3) The course introduces a variety of modern techniques in database and distributed database systems. The major topics include, but are not limited to: object-oriented database systems;
distributed, heterogeneous and web-based databases; knowledge based systems; physical database design; and security. The course covers a variety of methods that allow for a solution of database problems where the traditional relational database techniques are not viable or not sufficient. Prereq: CS 405 or consent of instructor.
CS 515 ALGORITHM DESIGN. (3)
The design and analysis of efficient algorithms on data structures for problems in sorting, searching, graph theory, combinatorial optimization, computational geometry, and algebraic computation. Algorithm design techniques: divide-and-conquer, dynamic programming, greedy method, and randomization, approximation algorithms. Prereq: CS 315 and engineering standing.
CS 521 COMPUTATIONAL SCIENCES. (3)
Study of computer science techniques and tools that support computational sciences and engineering. Emphasis on visualization, performance evaluation, parallel computing, and distributed computing. Prereq: CS 115, CS/EE 380, and engineering standing.
CS 522 MATRIX THEORY AND NUMERICAL LINEAR ALGEBRA I. (3) Review of basic linear algebra from a constructive and geometric point of view.
Factorizations of Gauss, Cholesky and Gram-Schmidt. Determinants. Linear least squares problems. Rounding error analysis. Stable methods for updating matrix factorizations and for linear programming. Introduction to Hermitian eigenvalue problems and the singular value decomposition via the QR algorithm and the Lanczos process. Method of conjugate gradients. Prereq: MA 322. (Same as MA 522.)
CS 535 INTERMEDIATE COMPUTER GRAPHICS. (3) Three-dimensional graphics primitives such as 3D viewing, lighting, shading, hidden line/
surface removal, and more advanced topics such as solid modeling, image storage and representation, advanced raster graphics architecture and algorithms, advanced modeling techniques, and animation will be covered. Prereq: CS 335, CS 315, CS 321, and engineering standing.
CS 536 SITUATED COMPUTING. (3)
This course covers the fundamental concepts involved in understanding and engineering a closed-loop, sensing, reasoning, and actuating agent. Biological models of sensing and actuation will be discussed and related to modern artificial counterparts. The course consists of three major topic areas: vision, brain, and robotics. It will introduce students to the issues in computer and biological vision, to models of belief representation and modification, architectures for percept processing and reasoning, machine learning for vision, neural networks, path planning, intelligent localization based on visual cues, and to forward and inverse kinematics, intelligent grasping, and the integration of perception and action.
Prereq: CS 460G or consent of instructor.
CS 537 NUMERICAL ANALYSIS. (3)
Floating point arithmetic. Direct methods for the solution of systems of linear algebraic equations. Polynomial and piecewise polynomial approximation, orthogonal polynomi-als. Numerical integration: Newton Cotes formulas and Gaussian quadrature. Basic methods for initial value problems for ordinary differential equations. The emphasis throughout is on the understanding and use of software packages for the solution of commonly occurring problems in science and engineering. Prereq: CS/MA 321 or equivalent or graduate standing or consent of instructor. Knowledge of a procedural computer language is required. (Same as EGR/MA 537.)
CS 541 COMPILER DESIGN. (3) Intermediate aspects of a compilation process with an emphasis on front-end issues. Practical issues in using compiler writing tools. Code generation for expressions, control statements and procedures (including parameter passing). Symbol tables, runtime organization for simple and structured variables. Using compilers and translators for automation (filters, programs writing programs). Prereq: CS 441 or consent of instructor.
CS 555 DECLARATIVE PROGRAMMING. (3)
The course covers fundamentals of propositional and predicate logic, and their uses in declarative programming to model and solve computational problems. Topics include propositional satisfiability, satisfiability testing techniques such as the DPLL algorithm, automated reasoning techniques for predicate logic such as resolution with unification and logic programming. Prereq: CS 315 and CS 375 or consent of instructor.
CS 570 MODERN OPERATING SYSTEMS. (3)
Brief review of classical operating system concepts (process and memory management, process coordination, device drivers, file systems, starvation/deadlock). Modern topics of files systems (log-structured file systems, distributed file systems, memory-based file systems), operating system design (monolithic, communication-kernel, extensible/
adaptable, distributed shared memory), multiprocessor issues (scheduling, synchroniza-tion, IPC), security (internet attacks, encrypsynchroniza-tion, defenses). Inspection and modification of actual operating system code (Linux). Prereq: CS 470 and engineering standing.
CS 571 COMPUTER NETWORKS. (3)
Principles of computer networks using current Internet technologies and protocols as examples. Routing algorithms and protocols; end-to-end transport; flow control; conges-tion avoidance and control; mail, web, and file transfer protocols; designing and implementing applications using common network APIs. Advanced topics, included as time permits, include network security, multicast, and quality of service. Prereq: CS 471G or consent of instructor.
CS 575 MODELS OF COMPUTATION. (3)
The formal study of computation, including computability and computation with limited resources. Church’s thesis and models of computation. Formal languages and machines as recognizers of languages. The Chomsky Hierarchy of language types. Topics may include Turing machines or other basic models of computation; decidability and undecidability;
basic complexity theory; finite automata and regular languages; pushdown automata and context-free languages. The course will cover primarily theory, including assignments that utilize concepts covered in lectures. Prereq: CS 375 and engineering standing, or consent of instructor.
CS 585 INTERMEDIATE TOPICS
IN COMPUTER SCIENCE (Subtitle required). (3) Topics to be selected by staff. May be repeated to a maximum of six credits, but only three credits may be earned by a student under the same topic. Prereq: Restricted to computer science and electrical engineering majors. Others by permission.
CS 587 MICROCOMPUTER SYSTEMS DESIGN. (3) A course in the design of microcomputer systems for hardware engineers which includes the following topics: use of uncommitted logic arrays in instruction set design; hardware support for operating systems and programming languages; customizing microcomputers for specific execution environments; and control of concurrency. Prereq: EE 581 and EE 583, or consent of instructor. Engineering standing or upper division computer science standing. (Same as EE 587.)
CS 610 MASTER’S PROJECT. (3)
Design and implementation of a large computing project under the supervision of a member of the graduate faculty. Prereq: Satisfactory completion of the departmental foundational examinations.
CS 611 RESEARCH IN COMPUTER SCIENCE. (3-9) Doctoral students conduct research work in computer science under supervision of a faculty member from the Department of Computer Science. May be repeated to a maximum of 4 semesters (18 credits, maximum). Prereq: 36 credit hours of graduate course work in computer science and approval of the Departmental Committee on Higher Degrees.
CS 612 INDEPENDENT WORK IN COMPUTER SCIENCE. (1-3) Reading course for graduate students in computer science. May be repeated to a maximum of nine credits. Prereq: Overall standing of 3.0, and consent of instructor.
CS 616 SOFTWARE ENGINEERING. (3)
This course provides an overview of the software engineering discipline: software requirements, software design, software construction, software management, and software quality. Testing and validation techniques will be emphasized throughout the course.
Programs and program fragments will be developed and studied throughout the course to illustrate specific problems encountered in the lifecycle development of software systems.
Prereq: At least nine hours of graduate computer science courses.
CS 617 REQUIREMENTS ENGINEERING. (3)
The course examines the requirements phase of the Systems Engineering and Software Engineering lifecycles in detail. Topics include: requirements elicitation, requirements specification, and requirements analysis. Verification and validation techniques are emphasized throughout the course. Students work in small groups to research and present a related topic. Prereq: Nine hours of graduate study.
CS 618 SOFTWARE DESIGN. (3)
This course provides an overview of the software design field: software design overview, software design process, a survey of software design method (such as structured design methods, object-oriented design methods, concurrent design methods), design reviews, as well as discussing current topics such as aspect-oriented programming, refactoring, and design patterns. Testing and validation techniques are emphasized through the course.
Program designs are developed and validated throughout the course. Readings and summaries of current and seminal journal papers and texts are required. Prereq: Nine hours of graduate study.
CS 621 PARALLEL AND DISTRIBUTED COMPUTING. (3) This course provides graduate students in computer science and in other fields of science and engineering with experience of parallel and distributed computing. It gives an overview of parallel and distributed computers, and parallel computation. The course addresses architectures, languages, environments, communications, and parallel programming.
Emphasis on understanding parallel and distributed computers and portable parallel programming with MPI. Prereq: Two 500 level CS courses, or consent of the instructor.
CS 622 MATRIX THEORY AND NUMERICAL LINEAR ALGEBRA II. (3) Numerical solution of matrix eigenvalue problems and applications of eigenvalues. Normal forms of Jordan and Schur. Vector and matrix norms. Perturbation theory and bounds for eigenvalues. Stable matrices and Lyapunov theorems. Nonnegative matrices. Iterative methods for solving large sparse linear systems. Prereq: MA 522 or equivalent. (Same as MA 622.)
CS 623 PARALLEL ITERATIVE COMPUTING. (3) The course will present advanced computational science techniques needed to support large scale engineering and scientific computations. Emphasis on iterative methods for solving large sparse linear systems and parallel implementations of iterative techniques. Prereq:
CS 537 or consent of the instructor.
CS 630 FREE-FORM SOLID MODELING. (3)
This course covers the path from a conceptual vision of a shape to a concrete computer-based description that is suitable for manufacturing. It covers various solids modeling techniques, including volume representations, boundary representations, instantiation and Boolean combinations of shapes, and procedural generation such as sweeps. It discusses effective data structures and consistent and unambiguous part description formats to transfer a shape from a designer to a fabrication house, as well as problems with maintaining unambiguous topology in the presence of finite-precision geometry. Prereq: CS 535 or consent of instructor.
CS 631 COMPUTER-AIDED GEOMETRIC DESIGN. (3) Overview of current concepts and issues in CAGD with emphasis on free-form surface design;
mathematics of free-form curve and surface representations, including Coons patches,
mathematics of free-form curve and surface representations, including Coons patches,