# Computer Science (CS)

### Courses

**CS 100 Freshman Orientation credit: 1 Hour. **

Introduction to Computer Science as a field and career for computer science majors. Overview of the field and specific examples of problem areas and methods of solution.

**CS 101 Intro Computing: Engrg & Sci credit: 3 Hours. **

Fundamental principles, concepts, and methods of computing, with emphasis on applications in the physical sciences and engineering. Basic problem solving and programming techniques; fundamental algorithms and data structures; use of computers in solving engineering and scientific problems. Intended for engineering and science majors. Prerequisite: MATH 220 or MATH 221.

This course satisfies the General Education Criteria for:

Quantitative Reasoning II

**CS 105 Intro Computing: Non-Tech credit: 3 Hours. **

Computing as an essential tool of academic and professional activities. Functions and interrelationships of computer system components: hardware, systems and applications software, and networks. Widely used application packages such as spreadsheets and databases. Concepts and practice of programming for the solution of simple problems in different application areas. Intended for non-science and non-engineering majors. Prerequisite: MATH 112.

This course satisfies the General Education Criteria for:

Quantitative Reasoning I

**CS 107 Data Science Discovery credit: 4 Hours. **

Same as IS 107 and STAT 107. See STAT 107.

This course satisfies the General Education Criteria for:

Quantitative Reasoning I

**CS 125 Intro to Computer Science credit: 4 Hours. **

Basic concepts in computing and fundamental techniques for solving computational problems. Intended as a first course for computer science majors and others with a deep interest in computing. Prerequisite: Three years of high school mathematics or MATH 112.

This course satisfies the General Education Criteria for:

Quantitative Reasoning I

**CS 126 Software Design Studio credit: 3 Hours. **

Fundamental principles and techniques of software development. Design, documentation, testing, and debugging software, with a significant emphasis on code review. Credit is not given for both CS 242 and CS 126. Prerequisite: CS 125. For majors only.

**CS 173 Discrete Structures credit: 3 Hours. **

Discrete mathematical structures frequently encountered in the study of Computer Science. Sets, propositions, Boolean algebra, induction, recursion, relations, functions, and graphs. Credit is not given for both CS 173 and MATH 213. Prerequisite: One of CS 125, ECE 220; one of MATH 220, MATH 221.

**CS 196 Freshman Honors credit: 1 Hour. **

Offered for honors credit in conjunction with other 100-level computer science courses taken concurrently. A special examination may be required for admission to this course. May be repeated. Prerequisite: Concurrent registration in another 100-level computer science course (see Schedule).

**CS 199 Undergraduate Open Seminar in Computer Science credit: 0 to 5 Hours. **

Topics vary. Approved for Letter and S/U grading. May be repeated.

**CS 210 Ethical & Professional Issues credit: 2 Hours. **

Ethics for the computing profession. Ethical decision-making; licensing; intellectual property, freedom of information, and privacy. Credit is not given for both CS 210 and ECE 316. Prerequisite: CS 225. Junior standing required.

**CS 225 Data Structures credit: 4 Hours. **

Data abstractions: elementary data structures (lists, stacks, queues, and trees) and their implementation using an object-oriented programming language. Solutions to a variety of computational problems such as search on graphs and trees. Elementary analysis of algorithms. Prerequisite: CS 125 or ECE 220; One of CS 173, MATH 213, MATH 347, MATH 412 or MATH 413.

This course satisfies the General Education Criteria for:

Quantitative Reasoning II

**CS 233 Computer Architecture credit: 4 Hours. **

Fundamentals of computer architecture: digital logic design, working up from the logic gate level to understand the function of a simple computer; machine-level programming to understand implementation of high-level languages; performance models of modern computer architectures to enable performance optimization of software; hardware primitives for parallelism and security. Prerequisite: CS 125 and CS 173; credit or concurrent enrollment in CS 225.

**CS 240 Introduction to Computer Systems credit: 3 Hours. **

Basics of computer systems. Number representations, assembly/machine language, abstract models of processors (fetch/execute, memory hierarchy), processes/process control, simple memory management, file I/O and directories, network programming, usage of cloud services. Prerequisite: CS 225.

**CS 241 System Programming credit: 4 Hours. **

Basics of system programming, including POSIX processes, process control, inter-process communication, synchronization, signals, simple memory management, file I/O and directories, shell programming, socket network programming, RPC programming in distributed systems, basic security mechanisms, and standard tools for systems programming such as debugging tools. Credit is not given for both CS 241 and ECE 391. Prerequisite: CS 225 and CS 233.

**CS 242 Programming Studio credit: 3 Hours. **

Intensive programming lab intended to strengthen skills in programming. Prerequisite: CS 241.

**CS 277 Algorithms and Data Structures for Data Science credit: 4 Hours. **

Introduction to elementary concepts in algorithms and classical data structures with a focus on their applications in Data Science. Topics include algorithm analysis (ex: Big-O notation), elementary data structures (ex: lists, stacks, queues, trees, and graphs), basics of discrete algorithm design principles (ex: greedy, divide and conquer, dynamic programming), and discussion of discrete and continuous optimization. Credit is not given for both CS 277 and CS 225. Prerequisite: STAT 207; one of MATH 220, MATH 221, MATH 234. CS 277 cannot be taken concurrently with CS 225.

**CS 296 Honors Course credit: 1 Hour. **

Group projects for honors credit in computer science. Sections of this course are offered in conjunction with other 200-level computer science courses taken concurrently. A special examination may be required for admission to this course. May be repeated. Prerequisite: Concurrent registration in another 200-level computer science course (see Schedule).

**CS 357 Numerical Methods I credit: 3 Hours. **

Fundamentals of numerical methods for students in science and engineering; floating-point computation, systems of linear equations, approximation of functions and integrals, the single nonlinear equation, and the numerical solution of ordinary differential equations; various applications in science and engineering; programming exercises and use of high quality mathematical library routines. Same as MATH 357. Credit is not given for CS 357 if credit for CS 450 has been earned. (Counts for advanced hours in LAS). Prerequisite: One of CS 101, CS 105, CS 125 or ECE 220; MATH 241; one of MATH 225, MATH 415, MATH 416 or ASRM 406.

**CS 361 Probability & Statistics for Computer Science credit: 3 Hours. **

Introduction to probability theory and statistics with applications to computer science. Topics include: visualizing datasets, summarizing data, basic descriptive statistics, conditional probability, independence, Bayes theorem, random variables, joint and conditional distributions, expectation, variance and covariance, central limit theorem. Markov inequality, Chebyshev inequality, law of large numbers, Markov chains, simulation, the PageRank algorithm, populations and sampling, sample mean, standard error, maximum likelihood estimation, Bayes estimation, hypothesis testing, confidence intervals, linear regression, principal component analysis, classification, and decision trees. Same as STAT 361. Credit is not given for both CS 361 and ECE 313. Prerequisite: MATH 220 or MATH 221; credit or concurrent registration in one of MATH 225, MATH 415, MATH 416 or ASRM 406. For majors only.

**CS 374 Introduction to Algorithms & Models of Computation credit: 4 Hours. **

Analysis of algorithms, major paradigms of algorithm design including recursive algorithms, divide-and-conquer algorithms, dynamic programming, greedy algorithms, and graph algorithms. Formal models of computation including finite automata and Turing machines. Limitations of computation arising from fundamental notions of algorithm and from complexity-theoretic constraints. Reductions, undecidability and NP-completeness. Same as ECE 374. Prerequisite: One of CS 173, MATH 213; CS 225.

**CS 397 Individual Study credit: 1 to 3 Hours. **

May be repeated. Prerequisite: Consent of instructor.

**CS 398 Special Topics credit: 1 to 4 Hours. **

Subject offerings of new and developing areas of knowledge in computer science intended to augment the existing curriculum. See Class Schedule or departmental course information for topics and prerequisites. May be repeated in the same or separate terms if topics vary.

**CS 410 Text Information Systems credit: 3 or 4 Hours. **

Theory, design, and implementation of text-based information systems. Text analysis, retrieval models (e.g., Boolean, vector space, probabilistic), text categorization, text filtering, clustering, retrieval system design and implementation, and applications to web information management. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 225.

**CS 411 Database Systems credit: 3 or 4 Hours. **

Examination of the logical organization of databases: the entity-relationship model; the hierarchical, network, and relational data models and their languages. Functional dependencies and normal forms. Design, implementation, and optimization of query languages; security and integrity; concurrency control, and distributed database systems. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 225.

**CS 412 Introduction to Data Mining credit: 3 or 4 Hours. **

Concepts, techniques, and systems of data warehousing and data mining. Design and implementation of data warehouse and on-line analytical processing (OLAP) systems; data mining concepts, methods, systems, implementations, and applications. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 225.

**CS 414 Multimedia Systems credit: 3 or 4 Hours. **

Organization and structure of modern multimedia systems; audio and video encoding; quality of service concepts; scheduling algorithms for multimedia within OS and networks multimedia protocols over high-speed networks; synchronization schemes, user-interface design; multimedia teleservices. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 241 or ECE 391.

**CS 418 Interactive Computer Graphics credit: 3 or 4 Hours. **

Basic mathematical tools and computational techniques for modeling, rendering, and animating 3-D scenes. Same as CSE 427. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 225; MATH 225 or MATH 415; MATH 241.

**CS 419 Production Computer Graphics credit: 3 or 4 Hours. **

Advanced methods for representing, displaying, and rendering two-, three-, and four-dimensional scenes. General algebraic curves and surfaces, splines, Gaussian and bump-function representation, fractals, particle systems, constructive solid geometry methods, lighting models, radiosity, advanced ray-tracing methods, surface texturing animation techniques, data visualization methods. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 418.

**CS 420 Parallel Progrmg: Sci & Engrg credit: 3 or 4 Hours. **

Fundamental issues in design and development of parallel programs for various types of parallel computers. Various programming models according to both machine type and application area. Cost models, debugging, and performance evaluation of parallel programs with actual application examples. Same as CSE 402 and ECE 492. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 225.

**CS 421 Programming Languages & Compilers credit: 3 or 4 Hours. **

Structure of programming languages and their implementation. Basic language design principles; abstract data types; functional languages; type systems; object-oriented languages. Basics of lexing, parsing, syntax-directed translation, semantic analysis, and code generation. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 233 or CS 240; CS 374; one of MATH 225, MATH 415, MATH 416, ASRM 406.

**CS 422 Programming Language Design credit: 3 or 4 Hours. **

Exploration of major language design paradigms using imperative and functional programming as unifying themes. Tools include both practical language processor construction and theoretical models. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 421.

**CS 423 Operating Systems Design credit: 3 or 4 Hours. **

Organization and structure of modern operating systems and concurrent programming concepts. Deadlock, virtual memory, processor scheduling, and disk systems. Performance, security, and protection. Same as CSE 423. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 241 or ECE 391.

**CS 424 Real-Time Systems credit: 3 or 4 Hours. **

Supervisory control aspects of Cyber Physical Systems (CPS): fundamentals of reliability analysis, real-time scheduling, simple feedback control, software fault tolerance architecture, wireless networking and energy saving, principles of safety critical system engineering. Student groups design and demonstrate supervisory control architecture for a robot. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 241.

**CS 425 Distributed Systems credit: 3 or 4 Hours. **

Protocols, specification techniques, global states and their determination, reliable broadcast, transactions and commitment, security, and real-time systems. Same as ECE 428. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 241 or ECE 391.

**CS 426 Compiler Construction credit: 3 or 4 Hours. **

Compiler structure, syntax analysis, syntax-directed translation, automatically constructed recognizers, semantic analysis, code generation, intermediate language, optimization techniques. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 421.

**CS 427 Software Engineering I credit: 3 or 4 Hours. **

Software process, analysis and design. Software development paradigms, system engineering, function-based analysis and design, and object-oriented analysis and design. Course will use team-projects for hands-on exercises. Same as CSE 426. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 225 and CS 373.

**CS 428 Software Engineering II credit: 3 or 4 Hours. **

Continuation of CS 427. Software development, management, and maintenance. Project and configuration management, collaborative development models, software quality assurance, interoperability domain engineering and software reuse, and software re-engineering. Same as CSE 429. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 427.

**CS 429 Software Engineering II, ACP credit: 3 Hours. **

Continuation of CS 427. Identical to CS 428 except for the additional writing component. See CS 428. 3 undergraduate hours. 3 graduate hours. Prerequisite: CS 427.

This course satisfies the General Education Criteria for:

Advanced Composition

**CS 431 Embedded Systems credit: 3 or 4 Hours. **

A survey of sampled data systems and embedded architecture; key concepts in common embedded system applications; signal processing and control; embedded microprocessor and device interface; time-critical I/O handling; data communications; real-time operating systems and techniques for the development and analysis of embedded real-time software; hands-on laboratory projects. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 241 or ECE 391.

**CS 433 Computer System Organization credit: 3 or 4 Hours. **

Computer hardware design and analysis and interface with software. Advanced processor design, including superscalar, out-of-order issue, branch prediction, and speculation. Memory hierarchy design, including advanced cache optimizations, main memory, and virtual memory. Principles of multiprocessor design, including shared-memory, cache coherence, synchronization, and consistency. Other advanced topics depending on time; e.g., GPUs and accelerators, warehouse computers and data centers, security. Same as CSE 422. 3 undergraduate hours. 4 graduate hours. Prerequisite: CS 233.

**CS 436 Computer Networking Laboratory credit: 3 or 4 Hours. **

Design, application, analysis, and deployment of communication protocols and system software behind modern cloud/compute/network infrastructures. Students learn the internals of modern system infrastructures, including operating system networking kernels, cloud application service code, and firewall and router configuration. Students will gain experience with widely-used and production-grade code and systems, such as Cisco IOS, the Linux networking stack, and Amazon Web Services. This class links theory with practice to prepare students to confidently carry out tasks they will commonly encounter in industry, such as building an enterprise network, deploying a large-scale cloud service, or implementing a new network protocol. Same as ECE 435. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 241 or ECE 391.

**CS 438 Communication Networks credit: 3 or 4 Hours. **

Layered architectures and the OSI Reference Model; design issues and protocols in the transport, network, and data link layers; architectures and control algorithms of local-area, point-to-point, and satellite networks; standards in networks access protocols; models of network interconnection; overview of networking and communication software. Same as ECE 438. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 241 or ECE 391; one of ECE 313, MATH 461, MATH 463.

**CS 440 Artificial Intelligence credit: 3 or 4 Hours. **

Major topics in and directions of research in artificial intelligence: basic problem solving techniques, knowledge representation and computer inference, machine learning, natural language understanding, computer vision, robotics, and societal impacts. Same as ECE 448. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 225.

**CS 445 Computational Photography credit: 3 or 4 Hours. **

Computer vision techniques to enhance, manipulate, and create media from photo collections, such as panoramic stitching, face morphing, texture synthesis, blending, and 3D reconstruction. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 225, MATH 225, and MATH 231.

**CS 446 Machine Learning credit: 3 or 4 Hours. **

Principles and applications of machine learning. Main paradigms and techniques, including discriminative and generative methods, reinforcement learning: linear regression, logistic regression, support vector machines, deep nets, structured methods, dimensionality reduction, k-means, Gaussian mixtures, expectation maximization, Markov decision processes, and Q-learning. Application areas such as natural language and text understanding, speech recognition, computer vision, data mining, and adaptive computer systems, among others. Same as ECE 449. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 225; One of MATH 225, MATH 415, MATH 416 or ASRM 406; One of CS 361, ECE 313, MATH 461 or STAT 400.

**CS 447 Natural Language Processing credit: 3 or 4 Hours. **

Part-of-speech tagging, parsing, semantic analysis and machine translation. Relevant linguistics concepts from morphology (word formation) and lexical semantics (the meaning of words) to syntax (sentence structure) and compositional semantics (the meaning of sentences). 3 undergraduate hours. 3 or 4 graduate hours. Credit is not given for both CS 447 and LING 406. Prerequisite: CS 374.

**CS 450 Numerical Analysis credit: 3 or 4 Hours. **

Linear system solvers, optimization techniques, interpolation and approximation of functions, solving systems of nonlinear equations, eigenvalue problems, least squares, and quadrature; numerical handling of ordinary and partial differential equations. Same as CSE 401, ECE 491, and MATH 450. 3 undergraduate hours. 3 or 4 graduate hours. Credit is not given for both CS 450 and CS 457. Prerequisite: CS 101 or CS 125; CS 357 or MATH 415; MATH 285.

**CS 457 Numerical Methods II credit: 3 Hours. **

Continuation of CS 357. Orthogonalization methods for least squares, Krylov subspace methods, non-linear equations and optimization in multiple dimensions, initial and boundary value problems for ordinary and partial differential equations. 3 undergraduate hours. No graduate credit. Credit is not given for both CS 457 and CS 450. Prerequisite: CS 357.

**CS 460 Security Laboratory credit: 3 or 4 Hours. **

Operating systems security: access control, least privilege mechanism and malware techniques. Network security: firewalls, sniffing, tunnels, intrusion detection, AAA and worm structure. System security: forensics security architectures, and attack/defend exercises. Complements CS 461 via hands-on project. Same as ECE 419. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 461.

**CS 461 Computer Security I credit: 4 Hours. **

Fundamental principles of computer and communications security and information assurance: ethics, privacy, notions of threat, vulnerabilities, and risk in systems, information warfare, malicious software, data secrecy and integrity issues, network security, trusted computing, mandatory and discretionary access controls, certification and accreditation of systems against security standards. Security mechanisms: authentication, auditing, intrusion detection, access control, cryptography, security protocols, key distribution. Same as ECE 422. 4 undergraduate hours. 4 graduate hours. Prerequisite: CS 241 or ECE 391.

**CS 463 Computer Security II credit: 3 or 4 Hours. **

Program security, trusted base, privacy, anonymity, non-interference, information flow, confinement, advanced auditing, forensics, intrusion detection, key management and distribution, policy composition and analysis, formal approaches to specification and verification of secure systems and protocols, and topics in applied cryptography. Same as ECE 424. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 461. Recommended: CS 475.

**CS 465 User Interface Design credit: 3 or 4 Hours. **

A project-focused course covering fundamental principles of user interface design, implementation, and evaluation. Small teams work on a term-long project that involves: analysis of the problem domain, user skills, and tasks; iterative prototyping of interfaces to address user needs; conducting several forms of evaluation such as cognitive walkthroughs and usability tests; implementation of the final prototype. Non-technical majors may enroll as non-programmers who participate in all aspects of the projects with the possible exception of implementation. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 225.

**CS 466 Introduction to Bioinformatics credit: 3 or 4 Hours. **

Algorithmic approaches in bioinformatics: (i) biological problems that can be solved computationally (e.g., discovering genes, and interactions among different genes and proteins); (ii) algorithmic techniques with wide applicability in solving these problems (e.g., dynamic programming and probabilistic methods); (iii) practical issues in translating the basic algorithmic ideas into accurate and efficient tools that biologists may use. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 225.

**CS 467 Social Visualization credit: 3 or 4 Hours. **

Visualizing social interaction in networked spaces: investigation of patterns in networked communications systems such as messaging (email, instant messaging), social networking sites and collaborative sites; social network theory and visualizations; exploration of how to move beyond existing visualization techniques; visualizing the network identity over compilations of online data. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 225.

**CS 473 Algorithms credit: 4 Hours. **

Design and analysis techniques, approximation algorithms, randomized algorithms and amortized analysis, and advanced topics such as network flow, linear programming, and dynamic data structures, among others. Same as CSE 414 and MATH 473. 4 undergraduate hours. 4 graduate hours. Prerequisite: CS 374, and one of CS 361, MATH 461, or STAT 400.

**CS 475 Formal Models of Computation credit: 3 or 4 Hours. **

Finite automata and regular languages; pushdown automata and context-free languages; Turing machines and recursively enumerable sets; linear-bounded automata and context-sensitive languages; computability and the halting problem; undecidable problems; recursive functions; Chomsky hierarchy; computational complexity. Same as MATH 475. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 374.

**CS 476 Program Verification credit: 3 or 4 Hours. **

Formal methods for demonstrating correctness and other properties of programs. Invariant assertions; Hoare axiomatics; well-founded orderings for proving termination; structural induction; computational induction; data structures; parallel programs; overview of predicate calculus. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 225; CS 374 or MATH 414.

**CS 477 Formal Software Development Methods credit: 3 or 4 Hours. **

Mathematical models, languages, and methods for software specification, development, and verification. Same as ECE 478. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 225; CS 374 or MATH 414.

**CS 484 Parallel Programming credit: 3 or 4 Hours. **

Techniques for the programming of all classes of parallel computers and devices including shared memory and distributed memory multiprocessors, SIMD processors and co-processors, and special purpose devices. Key concepts in parallel programming such as reactive and transformational programming, speculation, speedup, isoefficiency, and load balancing. Synchronization primitives, libraries and languages for parallel programming such as OpenMP and MPI, performance monitoring, program tuning, analysis and programming of numerical and symbolic parallel algorithms. 3 undergraduate hours. 3 or 4 graduate hours. Prerequisite: CS 241.

**CS 491 Seminar credit: 0 to 4 Hours. **

Seminar on topics of current interest as announced in the Class Schedule. 0 to 4 undergraduate hours. 0 to 4 graduate hours. Approved for S/U grading only. May be repeated in the same or separate terms if topics vary to a maximum of 4 hours. Prerequisite: As specified for each topic offering, see Class Schedule or departmental course description.

**CS 492 Senior Project I credit: 3 Hours. **

First part of a project course in computer science. Students work in teams to solve typical commercial or industrial problems. Work involves planning, design, and implementation. Extensive oral and written work is required both on-campus and possibly off-campus at sponsors' locations. CS 492 must be taken as a sequence with either CS 493 or CS 494. 3 undergraduate hours. No graduate credit. Credit is not given for both CS 492 and a project course in another engineering department for the same project. Prerequisite: For Computer Science majors with senior standing.

**CS 493 Senior Project II, ACP credit: 3 Hours. **

Continuation of CS 492. Identical to CS 494 except for an additional writing component. See CS 494. 3 undergraduate hours. No graduate credit. Credit is not given for both CS 493 and a project course in another engineering department for the same project. Prerequisite: CS 492.

This course satisfies the General Education Criteria for:

Advanced Composition

**CS 494 Senior Project II credit: 3 Hours. **

Continuation of CS 492. 3 undergraduate hours. No graduate credit. Credit is not given for both CS 494 and a project course in another engineering department for the same project. Prerequisite: CS 492.

**CS 497 CS Team Project credit: 1 to 3 Hours. **

Student teams work with CS faculty to complete a significant project requiring advanced knowledge of CS principles. Project topics vary. 1 to 3 undergraduate hours. No graduate credit. May be repeated in the same term up to 6 hours, if topics vary; may be repeated in separate terms. Prerequisite: For majors only; junior or senior standing required.

**CS 498 Special Topics credit: 1 to 4 Hours. **

Subject offerings of new and developing areas of knowledge in computer science intended to augment the existing curriculum. See Class Schedule or departmental course information for topics and prerequisites. 1 to 4 undergraduate hours. 1 to 4 graduate hours. May be repeated in the same or separate terms if topics vary.

**CS 499 Senior Thesis credit: 3 Hours. **

Research and thesis development experience in computer science underguidance of a faculty member. Literature search, oral presentation, analysis and implementation, paper preparation, and completion of a written thesis. 3 undergraduate hours. No graduate credit. May be repeated to a maximum of 6 hours. Prerequisite: Consent of instructor.

This course satisfies the General Education Criteria for:

Advanced Composition

**CS 510 Advanced Information Retrieval credit: 4 Hours. **

Advanced concepts, models, and algorithms in information retrieval and major recent developments in the field, including historical milestones in information retrieval research, evaluation methodology, vector space retrieval model, probabilistic retrieval models, learning to rank algorithms, probabilistic topic models, information retrieval systems, text analytics, and topics of research frontiers in information retrieval. 4 graduate hours. No professional credit. Prerequisite: One of CS 410, CS 412, CS 446 or LING 406.

**CS 511 Advanced Data Management credit: 4 Hours. **

Advanced concepts in data management and information system design and implementation, and recent developments in the field. 1) Relational roots, objects and extensibility, query languages, data indexing, query processing, transaction processing, benchmarks, and 2) semi-structured data and unstructured data, information extraction, information integration, web search and mining, and other emerging directions in the field. Prerequisite: CS 411.

**CS 512 Data Mining Principles credit: 4 Hours. **

An advanced course on principles and algorithms of data mining. Data cleaning and integration; descriptive and predictive mining; mining frequent, sequential, and structured patterns; clustering, outlier analysis and fraud detection; stream data, web, text, and biomedical data mining; security and privacy in data mining; research frontiers. Prerequisite: CS 412.

**CS 519 Scientific Visualization credit: 4 Hours. **

Visualization techniques useful in analysis of engineering and scientific data. Physical models; methods of computational science; two- and three-dimensional data types; visual representation schemes for scalar, vector, and tensor data; isosurface and volume visualization methods; visual monitoring; interactive steering. Same as CSE 527. Prerequisite: CS 418.

**CS 522 Programming Language Semantics credit: 4 Hours. **

Theory of programming languages including functional programming, meta-circular interpreters, typed, untyped and polymorphic lambda-calculi, and denotational semantics. Prerequisite: CS 422 and CS 426.

**CS 523 Advanced Operating Systems credit: 4 Hours. **

Advanced concepts in operating system design and coverage of recent research directions. Resource management for parallel and distributed systems. Interaction between operating system design and computer architectures. Process management, virtual memory, interprocess communication, context switching, parallel and distributed file system designs, persistent objects, process and data migration, load balancing, security, protection. Term projects. Prerequisite: CS 423, CS 425, and CS 433.

**CS 524 Concurrent Progrmg Languages credit: 4 Hours. **

Theory of concurrency and concurrent programming languages. Formal models of concurrent computation such as process algebras, nets, and actors; high level concurrent programming languages and their operational semantics; methods for reasoning about correctness and complexity of concurrent programs. Prerequisite: CS 422; CS 475 or CS 476.

**CS 525 Advanced Distributed Systems credit: 4 Hours. **

Peer-to-peer systems, sensor networks, and fundamental theoretical distributed computing. Review of classical work in each area, and application of design methodologies to explore overlaps across them. Emphasis on protocol design, systems issues, and theory. Reading selections are roughly two-third classical to one-third contemporary. Students write critiques, make presentations, and create a conference paper in a systematic manner. Prerequisite: One of CS 423, CS 425, CS 438.

**CS 526 Advanced Compiler Construction credit: 4 Hours. **

Incremental and interactive compiling, error correction, code optimization, models of code generators. Prerequisite: CS 426.

**CS 527 Topics in Software Engineering credit: 4 Hours. **

Fault-tolerant software, software architecture, software patterns, multi-media software, and knowledge-based approaches to software engineering. Case studies. Prerequisite: CS 428 or CS 429.

**CS 528 Obj-Oriented Progrmg & Design credit: 4 Hours. **

Principles of object-oriented design; design patterns; use and design of frameworks; reflection, refractoring, use of unit tests as specifications. Prerequisite: CS 427.

**CS 533 Parallel Computer Architecture credit: 4 Hours. **

Theoretical aspects of parallel and pipeline computation; time and processor bounds on classes of computations; data alignment network speed and cost bounds; conflict-free access memories; overall computer system ideas. Same as CSE 522. Prerequisite: CS 433.

**CS 538 Advanced Computer Networks credit: 4 Hours. **

Advanced concepts in computer networks, including congestion control, quality of service, naming, routing, wireless networks, Internet architecture, measurement, network security, and selected recent research directions. Prerequisite: CS 438.

**CS 544 Optimiz in Computer Vision credit: 4 Hours. **

Applications of continuous and discrete optimization to problems in computer vision and machine learning, with particular emphasis on large-scale algorithms and effective approximations: gradient-based learning; Newton's method and variants, applied to structure from motion problems; the augmented Lagrangian method and variants; interior-point methods; SMO and other specialized algorithms for support vector machines; flows and cuts as examples of primal-dual methods; dynamics programming, hidden Markov models, and parsing: 0-1 quadratic forms, max-cut, and Markov random-fields solutions. Prerequisite: CS 450 and CS 473.

**CS 546 Machine Learning in NLP credit: 4 Hours. **

Central learning frameworks and techniques that have emerged in the field of natural language processing and found applications in several areas in text and speech processing: from information retrieval and extraction, through speech recognition to syntax, semantics and language understanding related tasks. Examination of the theoretical paradigms -- learning theoretic, probabilistic, and information theoretic -- and the relations among them, as well as the main algorithmic techniques developed within each paradigm and in key natural language applications. Prerequisite: CS 446 and CS 473.

**CS 548 Models of Cognitive Processes credit: 4 Hours. **

Formal models and concepts in automated cognition; integrating machine learning and prior knowledge; current approaches and detailed analyses of the role of reasoning in the learning process; computational complexity and fundamental tradeoffs between expressiveness and tractability; implications for state-of-the-art artificial intelligence areas such as automated planning, the semantic web, relational learning, structured prediction, latent models, structure learning, theory formation, etc.; philosophical and psychological aspects of integrating analytic and empirical evidence. Same as ECE 548. Prerequisite: CS 440 or CS 446.

**CS 549 Seminar in Cognitive Science credit: 2 or 4 Hours. **

Same as PSYC 514, ANTH 514, EPSY 551, LING 570, and PHIL 514. See PSYC 514.

**CS 554 Parallel Numerical Algorithms credit: 4 Hours. **

Numerical algorithms for parallel computers: parallel algorithms in numerical linear algebra (dense and sparse solvers for linear systems and the algebraic eigenvalue problem), numerical handling of ordinary and partial differential equations, and numerical optimization techniques. Same as CSE 512. Prerequisite: One of CS 450, CS 457, CS 555.

**CS 555 Numerical Methods for PDEs credit: 4 Hours. **

Numerical techniques for initial and boundary value problems in partial differential equations. Finite difference and finite element discretization techniques, direct and iterative solution methods for discrete problems, and programming techniques and usage of software packages. Same as CSE 510 and MATH 552. 4 graduate hours. No professional credit. Prerequisite: CS 450 or CS 457.

**CS 556 Iterative & Multigrid Methods credit: 4 Hours. **

Comprehensive treatment of algebraic and multigrid iterative methods to solve systems of equations, primarily linear equations arising from discretization of partial differential equations. Same as CSE 511.

**CS 558 Topics in Numerical Analysis credit: 4 Hours. **

Advanced topics in numerical analysis selected from areas of current research. Same as CSE 513. May be repeated. Prerequisite: As specified for each topic offering, see Schedule or departmental course description.

**CS 563 Advanced Computer Security credit: 4 Hours. **

Current research trends in computer and network security. Privacy, tamper-resistance, unwanted traffic, monitoring and surveillance, and critical infrastructure protection. Subtopics will vary depending upon current research trends. Students work in teams in close coordination with the course instructor to develop one of the topics in depth by carrying out background research and an exploratory project. Same as ECE 524. Prerequisite: CS 461 or CS 463.

**CS 565 Human-Computer Interaction credit: 4 Hours. **

In-depth coverage of advanced topics in human-computer interaction (HCI). Applied models of human performance and attention, design tools for creative design tasks, interruptions and peripheral displays, gestures, and bimanual input, and usability evaluation techniques. Students complete a research-oriented term project of their choosing. Prerequisite: CS 465.

**CS 573 Algorithms credit: 4 Hours. **

NP-completeness, design and analysis techniques, approximation algorithms, randomized algorithms, combinatorial optimization, linear programming. Intended for graduate students in Computer Science. Same as CSE 515. 4 graduate hours. No professional credit.

**CS 574 Randomized Algorithms credit: 4 Hours. **

Basic and advanced concepts in the design and analysis of randomized algorithms. Sampling; concentration inequalities such as Chernoff-Hoeffding bounds; probabilistic method; random walks, dimension reduction; entropy; martingales and Azuma's inequality; derandomization. Randomized algorithms for sorting and searching; graphs; geometric problems. Basics of pseudorandomness and randomized complexity classes. Prerequisite: CS 473; MATH 461 or STAT 400.

**CS 576 Topics in Automated Deduction credit: 2 to 4 Hours. **

Advanced topics in computer-aided methods for formal deduction, selected from areas of current research, such as: resolution theorem proving strategies, special relations, equational reasoning, unification theory, rewrite systems, mathematical induction, program derivation, hybrid inference systems, and programming with logic. May be repeated in separate terms. Prerequisite: As specified for each topic offering, see Schedule or departmental course description.

**CS 579 Computational Complexity credit: 4 Hours. **

Turing machines; determinism and non-determinism; time and space hierarchy theorems; speed-up and tape compression; Blum axioms; structure of complexity classes NP, P, NL, L, and PSPACE; complete problems; randomness and complexity classes RP, RL, and BPP; alternation, polynomial-time hierarchy; circuit complexity, parallel complexity, NC, and RNC; relativized computational complexity; time-space trade-offs. Same as ECE 579. Prerequisite: CS 473 or CS 475.

**CS 581 Algorithmic Genomic Biology credit: 4 Hours. **

The purpose of the course is to give each student enough background and training in the area of algorithmic genomic biology so that each will be able to do research in this area, and publish papers. The main focus of the course is phylogeny (evolutionary tree) estimation, multiple sequence alignment, and genome-scale phylogenetics, which are problems that present very interesting challenges from a computational and statistical standpoint. Time permitting, we will also discuss computational problems in microbiome analysis, protein function and structure prediction, genome assembly, and even historical linguistics. Students will learn the mathematical and computational foundations in these areas, read the current literature, and do a team research project. The course is designed for doctoral students in computer science, computer engineering, bioengineering, mathematics, and statistics, and does not depend on any prior background in biology. The technical material will depend on discrete algorithms, graph theory, simulations, and probabilistic analysis of algorithms. 4 graduate hours. No professional credit. Prerequisite: CS 374 and CS 361/STAT 361, or consent of instructor.

**CS 582 Machine Learning for Bioinformatics credit: 4 Hours. **

This graduate course on bioinformatics introduces a selection of topics in computational biology and bioinformatics, with special emphasis on current problems in regulatory genomics and systems biology. Computational approaches discussed will focus on Machine Learning techniques such as Bayesian inference, graphical models, supervised learning and network analysis. Bioinformatics topics will be introduced through lectures by instructor and research paper presentations by students, and include regulatory sequence analysis, cistromics, epigenomics, regulatory network reconstruction, non-coding variant interpretation, and protein structure and function prediction. A research project involving real data analysis with techniques related to course content is mandatory and will help prepare students for bioinformatics research. 4 graduate hours. No professional credit. Prerequisite: CS 446; Credit or concurrent enrollment in CS 466; or consent of instructor.

**CS 583 Approximation Algorithms credit: 4 Hours. **

Approximation algorithms for NP-hard problems. Basic and advanced techniques in approximation algorithm design: combinatorial algorithms; mathematical programming methods including linear and semi-definite programming, local search methods, and others. Algorithms for graphs and networks, constraint satisfaction, packing and scheduling. Prerequisite: CS 573 or consent of instructor.

**CS 591 Advanced Seminar credit: 0 to 4 Hours. **

Seminar on topics of current interest as announced in the Class Schedule. Approved for S/U grading only. May be repeated in the same or separate terms if topics vary. Prerequisite: As specified for each topic offering, see Class Schedule or departmental course description.

**CS 597 Individual Study credit: 2 to 16 Hours. **

Individual study or reading in a subject not covered in normal course offerings. May be repeated. Prerequisite: Consent of instructor.

**CS 598 Special Topics credit: 2 to 4 Hours. **

Subject offerings of new and developing areas of knowledge in computer science intended to augment the existing curriculum. See Class Schedule or departmental course information for topics and prerequisites. May be repeated in the same or separate terms if topics vary.

**CS 599 Thesis Research credit: 0 to 16 Hours. **

Approved for S/U grading only. May be repeated.