**Any experimental courses offered by COM S can be found at:****registrar.iastate.edu/faculty-staff/courses/explistings/**

## Courses

**Courses primarily for undergraduates:**

Cr. R. F.S.

Required orientation class for all incoming students in the Computer Science major. Topics include academic planning and policies, campus resources, and supports. Opportunity to connect with other computer science peers, faculty, alumni, and employers.
Offered on a satisfactory-fail basis only.

Cr. 4. F.S.SS.

Introduction to computer literacy and applications. Literacy: Impact of computer technology in today’s societies, hardware, software, software programming, database and information systems, communication and networks, digital media technology, computer security and safety, ethics and privacy. Applications: In-depth hands-on experience with the operating systems, Microsoft word processing, spreadsheets, database management and presentation software. No prior computer experience necessary. Offered online only.

(1.5-1) Cr. 2. F.S.

Offered first 8 weeks and last 8 weeks. Use of personal computer and workstation and beginning programming. Project-oriented approach to computer operation and programming, including use of tools to aid in programming. Topics from computer history, using basic Windows and MacOS tools, program structure, expression, variables, decision and logic, and iteration. No prior computer experience necessary.

Cr. 2.

*Prereq: COM S 104*

8-week course in programming, including instruction in syntax and semantics, of the following current programming languages.

(1-2) Cr. 2.

*Prereq: COM S 104*

8-week course in programming using Perl.

(2-0) Cr. 2.

*Prereq: COM S 104*

8-week course in programming using MATLAB.

(3-0) Cr. 3. F.S.

Introduction to web programming basics. Fundamentals of developing web pages using a comprehensive web development life cycle. Learn to design and code practical real-world homepage programs and earn adequate experience with current web design techniques such as HTML5 and cascading style sheets. Students also learn additional programming languages including JavaScript, jQuery, PHP, SQL, and MySQL. Strategies for accessibility, usability and search engine optimization. No prior computer programming experience necessary.

(3-0) Cr. 3. F.S.

Introduction to computer programming for non-majors using a language such as the Visual Basic language. Basics of good programming and algorithm development. Graphical user interfaces.

(2-2) Cr. 3. F.S.SS.

Using Microsoft Excel spreadsheets and Microsoft Access databases to input, store, process, manipulate, query, and analyze data for business and industrial applications.
Credit in Com S 113 may not be applied toward graduation in the S E and CPR E majors.

(2-2) Cr. 3. F.S.

*Prereq: Credit or concurrent enrollment in MATH 140 or higher*

Introduction to computer programming with an emphasis on problem-solving. Topics include: program structures, expressions, variables, decision and logic, iteration, collections, input, and output. Program construction and testing. Programming assignments including games and applications. No prior programming experience necessary.

Cr. 1. Repeatable, maximum of 2 credits. F.S.

Explore research opportunities for undergraduate students in Computer Science; understanding the nature of research and development process; reviewing the literature; development of writing, presentation, and data reporting skills; rotation under different research labs; group work.

Cr. R. F.S.

Computer science as a profession. Introduction to career fields open to computer science majors. Relationship of coursework to careers. Presentations by computer science professionals.
Offered on a satisfactory-fail basis only.

(3-1) Cr. 3. F.S.SS.

*Prereq: MATH 150 or placement into MATH 140 or higher*

An introduction to computer programming using an object-oriented programming language. Emphasis on the basics of good programming techniques and style. Extensive practice in designing, implementing, and debugging small programs. Use of variable, if-statement, looping, method, and class. Interactive and file I/O. This course is not designed for computer science, software engineering, and computer engineering majors.
Credit may not be applied toward graduation for both COM S 207 and COM S 227.

(3-2) Cr. 4. F.S.SS.

*Prereq: Credit or concurrent enrollment in MATH 143 or higher; (COM S 127 or CPR E 185 or S E 185 or E E 285)*

Computer programming using objects as the mechanism for modularity, abstraction, and code reuse. Instance variables, methods, and encapsulation. Review of control structures for conditionals and iteration. Developing algorithms on strings, arrays, and lists. Recursion, searching, and sorting. Text parsing and file I/O. Interfaces, inheritance, polymorphism, and abstract classes. Exception handling. Tools for unit testing and debugging. Emphasis on a disciplined approach to specification, code development, and testing. Course intended for majors in computer science and related fields.
Credit may not be applied toward graduation for both Com S 207 and 227.

(3-1) Cr. 3. F.S.SS.

*Prereq: Minimum of C- in COM S 227; credit or concurrent enrollment in MATH 165*

An object-oriented approach to data structures and algorithms. Object-oriented analysis, design, and programming, with emphasis on data abstraction, inheritance and subtype polymorphism, and generics. Abstract data type specification and correctness. Collections including lists, stacks, queues, trees, heaps, maps, hash tables, and graphs. Big-O notation and algorithm analysis. Searching and sorting. Graph search and shortest path algorithms. Emphasis on object-oriented design, writing and documenting medium-sized programs. This course is designed for majors.

(Cross-listed with MATH). (3-1) Cr. 3. F.S.SS.

*Prereq: Minimum of C- in (COM S 227; MATH 165); ENGL 150*

Concepts in discrete mathematics as applied to computer science. Logic, set theory, functions, relations, cardinality of sets, combinatorics, graph theory and number theory. Proof techniques, induction and recursion.

(3-0) Cr. 3. F.

*Prereq: CPR E 185 or S E 185 or COM S 127 or COM S 207 or COM S 227*

Introduction to installation, utilization, and administration of Linux systems. Topics include open-source software, package installation and management, shell programming and command-line utilities, process and service management, account management, network configuration, file sharing, interoperation with other computers and operating systems, automation, and system security.

Cr. arr. Repeatable, maximum of 6 credits. F.S.SS.

*Prereq: Permission of Instructor*

No more than 6 credits of Com S 290 or Com S 290H may be counted toward graduation.

Cr. arr. Repeatable, maximum of 6 credits. F.S.

*Prereq: Permission of Instructor*

No more than 6 credits of Com S 290 or Com S 290H may be counted toward graduation.

Cr. 1. Repeatable, maximum of 3 times. F.S.

*Prereq: COM S 207 or COM S 227*

Basics of problem solving using programming techniques. Development and implementation of simple to advanced data structures and algorithms, evaluation of problem difficulty, design and implementation of solutions, debugging, and working under time pressure.
Offered on a satisfactory-fail basis only.

(Cross-listed with S E). (3-1) Cr. 3. F.S.

*Prereq: Minimum of C- in (COM S 228; MATH 165)*

Practical introduction to methods for managing software development. Software engineering concepts, practices and tools. Requirements analysis, structured and object-oriented design, coding, testing, and maintenance. Software process models, software tools and environments. Programming projects that provide exposure to information management techniques, client/server model, networking and communication.

(3-1) Cr. 3. F.S.SS.

*Prereq: Minimum of C- in (COM S 228; MATH 166, ENGL 150); (COM S 230 or CPR E 310)*

Basic techniques for design and analysis of algorithms. Sorting, searching, graph algorithms, string matching, algorithms for secure computing such as RSA, and NP-completeness. Design techniques such as dynamic programming, divide and conquer, greedy method, and approximation. Asymptotic, worst-case, average-case and amortized analyses. Topics from advanced data structures such as balanced trees and hashing. Programming projects.

(Cross-listed with S E). (3-0) Cr. 3. F.S.

*Prereq: COM S 228*

Overview of user interface design. Evaluation and testing of user interfaces. Review of principles of object orientation, object oriented design and analysis using UML in the context of user interface design. Design of windows, menus and commands. Developing Web and Windows-based user-interfaces. Event-driven programming. Introduction to Frameworks and APIs for the construction of user interfaces.

(3-1) Cr. 3. F.S.

*Prereq: Minimum of C- in COM S 228 and MATH 165; COM S 230 or CPR E 281; ENGL 250*

Introduction to computer architecture and organization. Emphasis on evaluation of performance, instruction set architecture, datapath and control, memory-hierarchy design, and pipelining. Assembly language programming.

Cr. 1. F.S.

*Prereq: Minimum of C- in COM S 228; COM S 230 or CPR E 310*

Half-semester course. Design and implementation of libraries and applications in C, for students with prior programming background. Emphasis on differences between C and other languages, including file I/O, string processing, memory management, and buffer overruns. Using build systems, debuggers, and other development tools. Programming projects.

(3-0) Cr. 3. F.S.

*Prereq: Minimum of C- in (COM S 228; MATH 165)*

Object-oriented programming experience using a language suitable for exploring advanced topics in programming. Topics include memory management, parameter passing, inheritance, compiling, debugging, and maintaining programs. Significant programming projects.

(Cross-listed with LING). (3-1) Cr. 3. F.S.

*Prereq: Minimum of C- in (COM S 228; MATH 166; ENGL 250); (COM S 230 or CPR E 310)*

Models of computation: finite state automata, pushdown automata and Turing machines. Study of grammars and their relation to automata. Limits of digital computation, unsolvability and Church-Turing thesis. Relations between classes of languages.

(3-0) Cr. 3. F.

*Prereq: COM S 327 or CPR E 288; concurrent enrollment in (MATH 207 or MATH 265 or MATH 317)*

Programming interactive computer graphics systems using standard low-level libraries (such as OpenGL or DirectX) with an emphasis on 3D rendering. The graphics pipeline and programmable shaders. Coordinate systems and transformations in two and three dimensions. Homogeneous coordinates, viewing transformations and perspective. Euler angles and quaternions. Visible surface algorithms. Lighting models and shading. Texture mapping, bump mapping, reflection, elementary ray tracing. Offscreen buffers, render-to-texture and related techniques.

(Cross-listed with S E). (3-1) Cr. 3. F.S.

*Prereq: Minimum of C- in COM S 228 and MATH 165; COM S 230 or CPR E 310*

Study of concepts in programming languages, especially functional programming concepts. Overview of major programming paradigms, their relationship, and tradeoffs among paradigms enabling sound choices of programming language for application-specific development. Programming projects.

(Cross-listed with MATH). (3-0) Cr. 3. S.

*Prereq: COM S 230 or CPR E 310 or MATH 201*

Divisibility, integer representations, primes and divisors, linear diophantine equations, congruences, and multiplicative functions. Applications to cryptography. Additional topics, chosen at the discretion of the instructor.

(3-1) Cr. 3. F.S.

*Prereq: (COM S 321 or CPR E 381); (COM S 327 or CPR E 288); ENGL 250*

Survey of operating systems; process management including scheduling and multithreading; memory management including virtual memory and paging; concurrency including mutual exclusion, synchronization, and deadlocks; persistent storage and file systems; principles and practices of secure computing including threats and access control; networking and distributed systems; virtualization. Programming projects.

(Cross-listed with S E). (3-0) Cr. 3. F.S.

*Prereq: Minimum of C- in (COM S 228; MATH 165); ENGL 250*

Object-oriented requirements analysis and systems design. Analysis and design methodologies including use case and Unified Modeling Language (UML). Design principles, heuristics, and patterns. Architectural patterns and alternative programming paradigms. Group design and programming project.

(3-0) Cr. 3. F.S.

*Prereq: Minimum of C- in (COM S 228; MATH 165); ENGL 250*

Data models and database design using entity relationship model. Database implementation with relational and graph database management systems (DBMS) and query languages. DBMS internals including basic concepts of database storage, indexing, query optimization, and concurrent control. Database application development. Programming Projects.

Cr. R. Repeatable. F.S.SS.

*Prereq: Permission of department chair*

Required of all cooperative education students. Students must register for this course prior to commencing each work period.

(Cross-listed with BCBIO, BIOL, GEN). (3-0) Cr. 3. Alt. F., offered odd-numbered years.

*Prereq: (BCBIO 322; [COM S 127 or COM S 227]; [MATH 160 or MATH 165]; [MATH 166 or STAT 301]; [STAT 101 or STAT 104 or STAT 330]) or Permission of Instructor*

Application of computer science and statistics to molecular biology with a significant problem-solving component, including hands-on programming using Python to solve a variety of biological problems. String algorithms, sequence alignments, homology search, pattern discovery, genotyping, genome assembly, genome annotation, comparative genomics, protein structure.

Cr. 2-3. Repeatable, maximum of 6 credits. F.S.

*Prereq: COM S 309, COM S 311, COM S 321, COM S 331, and Senior Classification*

Students work as individuals and teams to complete the planning, design, and implementation of a significant project in the topic area. Oral and written reports. Recommended final semester Senior year.
No more than 6 credits of 402A, 402B, and 402C may be used toward graduation.

Cr. 2-3. Repeatable, maximum of 6 credits. F.

*Prereq: COM S 309, COM S 311, COM S 321, COM S 331, and COM S 437, Senior Classification*

Students conceive, plan, architect and design a computer game. Student registered in this course will work with students in ARTIS 409. Oral and written reports.
No more than 6 credits of 402A, 402B, and 402C may be used toward graduation.

Cr. 2-3. Repeatable, maximum of 6 credits. S.

*Prereq: COM S 402A, Senior Classification*

Students implement, test, and present a completed production computer game. Students in this class will work with students in ARTIS 409. Oral and written reports.
No more than 6 credits of 402A, 402B, and 402C may be used toward graduation.

(0-3) Cr. 3. F.S.

*Prereq: COM S 309, COM S 311, COM S 321, COM S 331, and Senior Classification*

Students work as individuals and teams to complete the planning, design, and implementation of a significant project in the topic area. Oral and written reports. Recommended final semester Senior year.
No more than 6 credits of 402A, 402B, and 402C may be used toward graduation.

(Cross-listed with BCBIO, BIOL, GEN). (3-0) Cr. 3. S.

*Prereq: BIOL 212*

Introduction to cutting edge OMICS analyses including transcriptome, proteome, metabolome, DNA-protein interactome, protein-protein interactome and methylome. Genomic analysis including transcriptome analysis, cancer genomics, comparative genomics, and regulatory network analysis.

(Dual-listed with COM S 507). (Cross-listed with AER E). Cr. 3. S.

*Prereq: For AER E majors: AER E 361, For COM S majors: COM S 311, For other majors: AER E 361 or (COM S 311 or an equivalent course); Permission of Instructor*

Introduction to the fundamentals of formal methods, a set of mathematically rigorous techniques for the formal specification, validation, and verification of safety- and security-critical systems. Tools, techniques, and applications of formal methods with an emphasis on real-world use-cases such as enabling autonomous operation. Build experience in writing mathematically analyzable specifications from English operational concepts for real cyberphysical systems, such as aircraft and spacecraft. Review capabilities and limitations of formal methods in the design, verification, and system health management of today's complex systems.

(Dual-listed with COM S 509). (3-0) Cr. 3.

*Prereq: COM S 309; for graduate credit: graduate standing or permission of instructor*

The requirements engineering process including elicitation, requirements analysis fundamentals, requirements specification and communication, and requirements evaluation. Modeling of functional and nonfunctional requirements, traceability, and requirements change management. Case studies and software projects.

(Dual-listed with COM S 510). (3-0) Cr. 3.

*Prereq: COM S 309; COM S 327 or CPR E 288; for graduate credit: graduate standing or permission of instructor*

Teams of students develop software applications in a modern software engineering environment. Importance, effective processes pertaining to team organization, management and communication, and cultural issues of distributed development. Graduate credit requires in-depth study of concepts and oral presentations.

(Dual-listed with COM S 512). (Cross-listed with CPR E, S E). (3-0) Cr. 3.

*Prereq: COM S 311; STAT 305 or STAT 330 or STAT 341; for graduate credit: graduate standing or permission of instructor*

A study of formal techniques for model-based specification and verification of software systems. Topics include logics, formalisms, graph theory, numerical computations, algorithms and tools for automatic analysis of systems. Graduate credit requires in-depth study of concepts.

(Dual-listed with COM S 513). (Cross-listed with S E). (3-0) Cr. 3.

*Prereq: (COM S 327 or CPR E 288); COM S 342*

Algorithms, AI techniques and tools for automatically reasoning about code and program executions. Theory and foundations related to control flow analysis, dataflow analysis, abstract interpretation, and symbolic execution. Applications of program analysis to bug detection, test input generation, debugging, program repair, specification inference and trustworthy AI engineering. Concepts, algorithms, tools, benchmarks, methodologies for solving problems using program analysis and for preparing research in program analysis.

(Dual-listed with COM S 514). (3-0) Cr. 3.

*Prereq: COM S 227 or COM S 207 or GERON 377 or ARTGR 271 or equivalent; for graduate credit: graduate standing or permission of instructor*

Interdisciplinary course designed for students interested in assistive technology, pervasive computing, mobile computing and principles of universal and inclusive design for end users, in particular, the elderly population. Students work in semester-long projects as interdisciplinary teams to apply knowledge obtained from lectures and mutual presentations. Research report and oral presentation required for graduate credit.

(Dual-listed with COM S 515). (3-0) Cr. 3.

*Prereq: COM S 309 or COM S 311; for graduate credit: graduate standing or permission of instructor*

An introduction to the hazard analysis, safety requirements, design, and verification of software for safety-critical and high-dependability systems. Safety analysis techniques, fault identification and recovery, and certification issues. Emphasizes a case-based and systematic approach to software's role in safe systems.

(Dual-listed with COM S 518). (3-0) Cr. 3.

*Prereq: COM S 311; for graduate credit: graduate standing or permission of instructor*

Introduction to data structures, algorithms, and analysis techniques for computational problems that involve geometry. Convex hulls, line segment intersection, polygon triangulation, 2D linear programming, range queries, point location, arrangements and duality, Voronoi diagrams, Delaunay triangulations, geometric data structures, robot motion planning, visibility graphs. Other selected topics. Programming assignments. Scholarly report required for graduate credit.

(Cross-listed with MATH). (3-0) Cr. 3.

*Prereq: COM S 230 or CPR E 310 or MATH 207 or MATH 301 or MATH 317*

Propositional and predicate logic. Topics selected from Horn logic, equational logic, resolution and unification, foundations of logic programming, reasoning about programs, program specification and verification, model checking and binary decision diagrams, temporal logic and modal logic.

(Cross-listed with CPR E). (2-2) Cr. 3.

*Prereq: COM S 311; ENGL 250; SP CM 212*

Introduction to high performance computing platforms including parallel computers and workstation clusters. Discussion of parallel architectures, performance, programming models, and software development issues. Sample applications from science and engineering. Practical issues in high performance computing will be emphasized via a number of programming projects using a variety of programming models and case studies. Oral and written reports.

(Dual-listed with COM S 526). (Cross-listed with CPR E). (3-2) Cr. 4. F.

*Prereq: (CPR E 308 or COM S 321); (CPR E 315 or COM S 311)*

Models of parallel computation, performance measures, basic parallel constructs and communication primitives, parallel programming using MPI, parallel algorithms for selected problems including sorting, matrix, tree and graph problems, fast Fourier transforms.

(3-1) Cr. 3.

*Prereq: COM S 311; (COM S 362 or COM S 363); ENGL 250; SP CM 212*

A practical course in concepts, techniques, languages, and frameworks for concurrent and asynchronous systems. Concurrency fundamentals: threads, synchronization locks, waiting and notification, memory visibility. Immutability and thread confinement. Concurrent data structures and utilities, thread pools. Asynchronous programming with callbacks, futures, and message passing. Issues of aliasing, ownership and borrowing. Transactional memory, immutable and versioned data structures. Alternatives to threads and locks: event-driven systems, the actor model, CSP, coroutines. Students will investigate several non-mainstream languages supporting different concurrency models. Oral and written reports.

(Dual-listed with COM S 533). (3-0) Cr. 3.

*Prereq: Minimum of C- in COM S 331 or permission of instructor; for graduate credit: graduate standing or permission of instructor*

Programming, modeling, and analysis of natural and engineered systems at the nanoscale. Topics include chemical reaction networks, strand displacement systems, models of self-assembly, biomolecular origami, and molecular robotics. Emphasis on mathematical methods of describing, simulating, programming, and assessing the computational power of such systems. Graduate credit requires a written or oral report on current research.

(Dual-listed with COM S 534). (3-0) Cr. 3. F.

*Prereq: (COM S 331 or PHYS 422 or PHYS 522); (MATH 207 or MATH 317)*

An exploration of quantum information and computation from a theoretical computer science perspective. Topics include quantum circuits, axioms of quantum mechanics, quantum entanglement, quantum teleportation, nonlocal games, quantum entropies, quantum information theory, quantum computational complexity, interactive proof systems, and quantum supremacy.

(Dual-listed with COM S 535). (3-0) Cr. 3.

*Prereq: COM S 311 or equivalent; for graduate credit: graduate standing or permission of instructor*

Algorithmic challenges involved in solving computational problems on massive data sets. Probabilistic data structures, Curse of Dimensionality and dimensionality reduction, locality sensitive hashing, similarity measures, matrix decompositions. Optimization problems in massive data analysis. Computational problems that arise in the context of web search, social network analysis, online advertising etc. Practical aspects include implementation and performance evaluation of the algorithms on real world data sets. Graduate credit requires a written report on current research.

(3-0) Cr. 3.

*Prereq: COM S 336*

Video game programming using current game engine interfaces with real hardware. Particular attention is paid to the development environment, tool chains, 2D graphics, 3D graphics, controllers, memory management, and audio systems.

(Dual-listed with COM S 540). (Cross-listed with S E). (3-1) Cr. 3.

*Prereq: COM S 331 or COM S 342; COM S 309; ENGL 250; for graduate credit: graduate standing or permission of instructor*

Theory of compiling and implementation issues of programming languages. Programming projects leading to the construction of a compiler. Projects with different difficulty levels will be given for 440 and 540. Topics include: lexical, syntactic and semantic analyses, syntax-directed translation, code generation, runtime environment and library support.

(Dual-listed with COM S 541). (3-1) Cr. 3.

*Prereq: COM S 342 or COM S 440; for graduate credit: graduate standing or permission of instructor*

Survey of the goals and problems of language design. Formal and informal studies of a wide variety of programming language features including type systems. Creative use of functional and declarative programming paradigms.

Cr. 3. S.

*Prereq: COM S 311; (STAT 305 or STAT 330 or STAT 341 or STAT 347)*

Latest online threats on identity theft, fundamentals of privacy preserving algorithms, techniques, and mechanisms to minimize disclosure of sensitive information while maintaining availability. Theory and fundamentals underpinning measures to evaluate the privacy and availability of data; implementation and deployment of privacy-preserving data operations including pre- and post-randomization techniques, homomorphisms, and secure function evaluation protocols.

(Dual-listed with COM S 554). (Cross-listed with CPR E). (3-1) Cr. 3.

*Prereq: COM S 311; COM S 352 or CPR E 308; for graduate credit: graduate standing or permission of instructor*

Theoretical and practical issues of design and implementation of distributed systems. The client server paradigm, inter-process communications, synchronization and concurrency control, naming, consistency and replication, fault tolerance, and distributed file systems. Graduate credit requires additional in-depth study of concepts. Programming projects and written reports.

(Dual-listed with COM S 555). (3-0) Cr. 3.

*Prereq: COM S 311; STAT 305 or STAT 330 or STAT 341 or STAT 347; ENGL 250; for graduate credit: graduate standing or permission of instructor*

Introduction to discrete-event simulation with a focus on computer science applications, including performance evaluation of networks and distributed systems. Overview of algorithms and data structures necessary to implement simulation software. Discrete and continuous stochastic models, random number generation, elementary statistics, simulation of queuing and inventory systems, Monte Carlo simulation, point and interval parameter estimation. Graduate credit requires additional in-depth study of concepts.

(3-1) Cr. 3.

*Prereq: COM S 311; ENGL 250; SP CM 212*

Database design including entity-relationship model, relational data model, and non-relational data models, data dependency, and normalization. Database management including physical storage, access methods, query processing, and transaction management. Database systems of special purposes such as spatial databases, mobile object databases, and multimedia databases. Introduction to current database research such as cloud data management and Internet information retrieval.

(Dual-listed with COM S 572). (3-1) Cr. 3.

*Prereq: COM S 311; STAT 330 or STAT 305 or STAT 341 or STAT 347; ENGL 250; for graduate credit: graduate standing or permission of instructor*

Basic principles, techniques, and applications of artificial intelligence. Specification, design, implementation, and applications of intelligent agents. Computational models of intelligent behavior, including problem solving, knowledge representation and reasoning, planning, decision making, learning, perception, and communication. Artificial intelligence programming. Term project and written report for graduate credit.

(Dual-listed with COM S 574). (3-1) Cr. 3.

*Prereq: COM S 311; STAT 330 or STAT 305 or STAT 341 or STAT 347; MATH 165; ENGL 250; for graduate credit: graduate standing or permission of instructor*

Introduction to concepts, tools and techniques of machine learning for applications. Selected machine learning algorithms in practical data mining tasks such as classification, regression, and clustering, e.g., association rules, decision trees, linear models, Bayesian learning, support vector machines, artificial neural networks, instance-based learning, probabilistic graphical models, ensemble learning, and clustering algorithms. Selected applications in data mining and pattern recognition.

(Dual-listed with COM S 576). (3-0) Cr. 3.

*Prereq: COM S 311; ENGL 250*

Recent techniques for developing algorithms that automatically generate continuous motions while satisfying geometric constraints. Applications in areas such as robotics and autonomous systems. Discrete planning, kinematics, configuration space, collision detection, sampling-based motion planning, nonholonomic systems and differential constraints. Implementation of software that computes motion plans in Python. Written reports.

(Dual-listed with COM S 577). (3-0) Cr. 3.

*Prereq: COM S 228; COM S 230 or CPR E 310; MATH 207 or MATH 317, or consent of the instructor; for graduate credit: graduate standing or permission of instructor*

Selected topics from applied mathematics, algorithms, geometry, and mechanics that are fundamental to robotics and computer vision, and are also applied in computer graphics, geometric modeling and visualization, to name a few. Homogeneous coordinates and transformations, perspective projection, camera calibration, rotations and quaternions, roots of polynomials and polynomial systems, solution of linear and nonlinear equations, parametric and algebraic curves, curvature, torsion, Frenet formulas, surfaces, fundamental forms, principal curvatures, Gaussian and mean curvatures, geodesics, approximation, Fourier series and fast Fourier transform, nonlinear optimization, Lagrange multipliers, least squares, surface fitting and calculus of variations. Programming components. Scholarly report required for graduate credit.

(Cross-listed with MATH). (3-0) Cr. 3. S.

*Prereq: MATH 265; (MATH 266 or MATH 267)*

First order Euler method, high order Runge-Kutta methods, and multistep methods for solving ordinary differential equations. Finite difference and finite element methods for solving partial differential equations. Local truncation error, stability, and convergence for finite difference method. Numerical solution space, polynomial approximation, and error estimate for finite element method. Computer programming required.

(Dual-listed with COM S 587). (3-0) Cr. 3.

*Prereq: COM S 352 or CPR E 308; for graduate credit: graduate standing or permission of instructor*

Introduction to network programming: protocols, programming suites, and applications. Introduction to cloud computing: concepts and case study with AWS. Introduction to selected research issues in networking and cloud computing. Graduate credit requires written report and oral presentation.

(Dual-listed with COM S 588). (3-0) Cr. 3. F.Alt. S., offered irregularly.

*Prereq: COM S 352 or CPR E 308*

Fundamental concepts in the design and implementation of computer communication in both wired and wireless networks, their protocols, and applications. Topics include the layered network architecture in the Internet, applications, transport, network, and data link layers and their protocols, Socket API, software-defined networking, and network security. Lectures organized in a top-down approach to cover the layers of network design.

Cr. arr. Repeatable, maximum of 9 credits. F.S.SS.

*Prereq: 6 credits in COM S; Permission of Instructor*

No more than 9 credits of Com S 490 or Com S 490H may be counted toward graduation.

Cr. arr. Repeatable, maximum of 9 credits. F.S.

*Prereq: 6 credits in COM S; Permission of Instructor*

No more than 9 credits of Com S 490 or Com S 490H may be counted toward graduation.

**Courses primarily for graduate students, open to qualified undergraduates:**

(Dual-listed with COM S 407). (Cross-listed with AER E). Cr. 3. S.

*Prereq: For AER E majors: AER E 361, For COM S majors: COM S 311, For other majors: AER E 361 or (COM S 311 or an equivalent course); Permission of Instructor*

Introduction to the fundamentals of formal methods, a set of mathematically rigorous techniques for the formal specification, validation, and verification of safety- and security-critical systems. Tools, techniques, and applications of formal methods with an emphasis on real-world use-cases such as enabling autonomous operation. Build experience in writing mathematically analyzable specifications from English operational concepts for real cyberphysical systems, such as aircraft and spacecraft. Review capabilities and limitations of formal methods in the design, verification, and system health management of today's complex systems.

(Dual-listed with COM S 409). (3-0) Cr. 3.

*Prereq: COM S 309; for graduate credit: graduate standing or permission of instructor*

The requirements engineering process including elicitation, requirements analysis fundamentals, requirements specification and communication, and requirements evaluation. Modeling of functional and nonfunctional requirements, traceability, and requirements change management. Case studies and software projects.

(Dual-listed with COM S 410). (3-0) Cr. 3.

*Prereq: COM S 309; COM S 327 or CPR E 288; for graduate credit: graduate standing or permission of instructor*

Teams of students develop software applications in a modern software engineering environment. Importance, effective processes pertaining to team organization, management and communication, and cultural issues of distributed development. Graduate credit requires in-depth study of concepts and oral presentations.

(Cross-listed with CPR E). (3-0) Cr. 3.

*Prereq: COM S 311*

A study of algorithm design and analysis techniques. Network flows and linear programming. Randomized algorithms. NP-completeness. Approximation algorithms. Fixed-parameter algorithms.

(Dual-listed with COM S 412). (3-0) Cr. 3.

*Prereq: COM S 311; STAT 305 or STAT 330 or STAT 341; for graduate credit: graduate standing or permission of instructor*

A study of formal techniques for model-based specification and verification of software systems. Topics include logics, formalisms, graph theory, numerical computations, algorithms and tools for automatic analysis of systems. Graduate credit requires in-depth study of concepts.

(Dual-listed with COM S 413). (Cross-listed with CPR E). (3-0) Cr. 3.

*Prereq: (COM S 327 or CPR E 288); COM S 342*

Algorithms, AI techniques and tools for automatically reasoning about code and program executions. Theory and foundations related to control flow analysis, dataflow analysis, abstract interpretation, and symbolic execution. Applications of program analysis to bug detection, test input generation, debugging, program repair, specification inference and trustworthy AI engineering. Concepts, algorithms, tools, benchmarks, methodologies for solving problems using program analysis and for preparing research in program analysis.

(Dual-listed with COM S 414). (3-0) Cr. 3.

*Prereq: COM S 227 or COM S 207 or GERON 377 or ARTGR 271 or equivalent; for graduate credit: graduate standing or permission of instructor*

Interdisciplinary course designed for students interested in assistive technology, pervasive computing, mobile computing and principles of universal and inclusive design for end users, in particular, the elderly population. Students work in semester-long projects as interdisciplinary teams to apply knowledge obtained from lectures and mutual presentations. Research report and oral presentation required for graduate credit.

(Dual-listed with COM S 415). (3-0) Cr. 3.

*Prereq: COM S 309 or COM S 311; for graduate credit: graduate standing or permission of instructor*

An introduction to the hazard analysis, safety requirements, design, and verification of software for safety-critical and high-dependability systems. Safety analysis techniques, fault identification and recovery, and certification issues. Emphasizes a case-based and systematic approach to software's role in safe systems.

(3-0) Cr. 3. Alt. S., offered even-numbered years.

*Prereq: COM S 311, COM S 309*

Application of artificial intelligence (AI) techniques used to solve problems in software engineering and the use of software engineering techniques to improve AI. AI techniques such as optimization/search, classification, natural language processing, and deep learning to address software engineering problems will be included.

(Dual-listed with COM S 418). (3-0) Cr. 3.

*Prereq: COM S 311; for graduate credit: graduate standing or permission of instructor*

Introduction to data structures, algorithms, and analysis techniques for computational problems that involve geometry. Convex hulls, line segment intersection, polygon triangulation, 2D linear programming, range queries, point location, arrangements and duality, Voronoi diagrams, Delaunay triangulations, geometric data structures, robot motion planning, visibility graphs. Other selected topics. Programming assignments. Scholarly report required for graduate credit.

(Cross-listed with CPR E, MATH). (3-0) Cr. 3. S.

*Prereq: CPR E 308 or MATH 481; experience in scientific programming; knowledge of FORTRAN or C*

Introduction to parallelization techniques and numerical methods for distributed memory high performance computers. A semester project in an area related to each student’s research interests is required.

(Dual-listed with COM S 426). (Cross-listed with CPR E). (3-2) Cr. 4. F.

*Prereq: (CPR E 308 or COM S 321); (CPR E 315 or COM S 311)*

Models of parallel computation, performance measures, basic parallel constructs and communication primitives, parallel programming using MPI, parallel algorithms for selected problems including sorting, matrix, tree and graph problems, fast Fourier transforms.

(Cross-listed with CPR E). Cr. 3.

*Prereq: COM S 352 or CPR E 308*

Fundamentals and advances in concurrent systems in the context of GPUs, TPUs, multicore and HPC systems with specific focus on parallel programming models. Discussion of high-performance computing, GPGPU, scaling deep neural network training and machine learning algorithms, high-performance deep learning, engineering parallel software and and parallel design patterns.

(3-0) Cr. 3.

*Prereq: COM S 331*

A systematic study of the fundamental models and analytical methods of theoretical computer science. Computability, the Church-Turing thesis, decidable and undecidable problems. Computational resources such as time, space, and nonuniformity. Complexity classes, computational intractability and completeness. Selected topics from randomness, algorithmic information theory, and logic.

(Dual-listed with COM S 433). (3-0) Cr. 3.

*Prereq: Minimum of C- in COM S 331 or permission of instructor; for graduate credit: graduate standing or permission of instructor*

Programming, modeling, and analysis of natural and engineered systems at the nanoscale. Topics include chemical reaction networks, strand displacement systems, models of self-assembly, biomolecular origami, and molecular robotics. Emphasis on mathematical methods of describing, simulating, programming, and assessing the computational power of such systems. Graduate credit requires a written or oral report on current research.

(Dual-listed with COM S 434). (3-0) Cr. 3. F.

*Prereq: (COM S 331 or PHYS 422 or PHYS 522); (MATH 207 or MATH 317)*

An exploration of quantum information and computation from a theoretical computer science perspective. Topics include quantum circuits, axioms of quantum mechanics, quantum entanglement, quantum teleportation, nonlocal games, quantum entropies, quantum information theory, quantum computational complexity, interactive proof systems, and quantum supremacy.

(Dual-listed with COM S 435). (3-0) Cr. 3.

*Prereq: COM S 311 or equivalent; for graduate credit: graduate standing or permission of instructor*

Algorithmic challenges involved in solving computational problems on massive data sets. Probabilistic data structures, Curse of Dimensionality and dimensionality reduction, locality sensitive hashing, similarity measures, matrix decompositions. Optimization problems in massive data analysis. Computational problems that arise in the context of web search, social network analysis, online advertising etc. Practical aspects include implementation and performance evaluation of the algorithms on real world data sets. Graduate credit requires a written report on current research.

(Dual-listed with COM S 440). (3-1) Cr. 3.

*Prereq: COM S 331 or COM S 342; COM S 309; ENGL 250; for graduate credit: graduate standing or permission of instructor*

Theory of compiling and implementation issues of programming languages. Programming projects leading to the construction of a compiler. Projects with different difficulty levels will be given for 440 and 540. Topics include: lexical, syntactic and semantic analyses, syntax-directed translation, code generation, runtime environment and library support.

(Dual-listed with COM S 441). (3-1) Cr. 3.

*Prereq: COM S 342 or COM S 440; for graduate credit: graduate standing or permission of instructor*

Survey of the goals and problems of language design. Formal and informal studies of a wide variety of programming language features including type systems. Creative use of functional and declarative programming paradigms.

(Cross-listed with BCB, CPR E, GDCB). (4-0) Cr. 4. Alt. F., offered odd-numbered years.

*Prereq: MATH 165 or STAT 401 or equivalent*

A practical, hands-on overview of how to apply bioinformatics to biological research. Recommended for biologists desiring to gain computational molecular biology skills. Topics include: sequence analysis, genomics, proteomics, phylogenetic analyses, ontology enrichment, systems biology, data visualization and emergent technologies.

(3-0) Cr. 3.

*Prereq: COM S 311*

Introduction to a big data research area in bioinformatics. Focus on applying computational techniques to huge genomic sequence data. These techniques include finding optimal sequence alignments, generating genome assemblies, finding genes in genomic sequences, mapping short sequences onto a genome assembly, finding single-nucleotide and structural variations, building phylogenetic trees from genome sequences, and performing genome-wide association studies.

(3-0) Cr. 3.

*Prereq: For graduate credit: graduate standing or permission of instructor*

A comparative study of high-level language facilities for process synchronization and communication. Analysis of deadlock, concurrency control and recovery. Protection issues including capability-based systems, access and flow control, encryption, and authentication. Additional topics chosen from distributed operating systems, soft real-time operating systems, and advanced security issues. Programming and research projects.

(Dual-listed with COM S 454). (Cross-listed with CPR E). (3-1) Cr. 3.

*Prereq: COM S 311; COM S 352 or CPR E 308; for graduate credit: graduate standing or permission of instructor*

Theoretical and practical issues of design and implementation of distributed systems. The client server paradigm, inter-process communications, synchronization and concurrency control, naming, consistency and replication, fault tolerance, and distributed file systems. Graduate credit requires additional in-depth study of concepts. Programming projects and written reports.

(Dual-listed with COM S 455). (3-0) Cr. 3.

*Prereq: COM S 311; STAT 305 or STAT 330 or STAT 341 or STAT 347; ENGL 250; for graduate credit: graduate standing or permission of instructor*

Introduction to discrete-event simulation with a focus on computer science applications, including performance evaluation of networks and distributed systems. Overview of algorithms and data structures necessary to implement simulation software. Discrete and continuous stochastic models, random number generation, elementary statistics, simulation of queuing and inventory systems, Monte Carlo simulation, point and interval parameter estimation. Graduate credit requires additional in-depth study of concepts.

(Cross-listed with CPR E, M E). (3-0) Cr. 3. Alt. F., offered odd-numbered years.

*Prereq: M E 421 or instructor permission*

Fundamentals of computer graphics technology. Data structures. Parametric curve and surface modeling. Solid model representations. Applications in engineering design, analysis, and manufacturing.

(Cross-listed with CPR E). (3-0) Cr. 3.

*Prereq: COM S 352 or CPR E 308*

Introduction to cloud computing concepts and systems. Security and privacy threats in cloud computing. Practical techniques for cloud computing security. Theoretical and practical solutions for secure outsourcing of data and computation. Oral presentations and research projects.

(3-0) Cr. 3.

*Prereq: COM S 311 or permission of instructor*

Database design including entity-relationship model, relational data model, and non-relational data models, data dependency, and normalization. Database management including physical storage, access methods, query processing, and transaction management. Database systems of special purposes such as spatial databases, mobile object databases, and multimedia databases. Introduction to current database research such as cloud data management and Internet information retrieval. Significant work on reading and presentation of research publications.

(Cross-listed with BCB, GDCB, STAT). (3-0) Cr. 3. S.

*Prereq: BCB 567 or (BIOL 315 and one of STAT 430 or STAT 483 or STAT 583), credit or enrollment in GEN 409*

Statistical models for sequence data, including applications in genome annotation, motif discovery, variant discovery, molecular phylogeny, gene expression analysis, and metagenomics. Statistical topics include model building, inference, hypothesis testing, and simple experimental design, including for big data/complex models.

(Cross-listed with BBMB, BCB, CPR E, GDCB). (3-0) Cr. 3. F.

*Prereq: BCB 567, BBMB 316, GEN 409, STAT 430*

Molecular structures including genes and gene products: protein, DNA and RNA structure. Structure determination methods, structural refinement, structure representation, comparison of structures, visualization, and modeling. Molecular and cellular structure from imaging. Analysis and prediction of protein secondary, tertiary, and higher order structure, disorder, protein-protein and protein-nucleic acid interactions, protein localization and function, bridging between molecular and cellular structures. Molecular evolution.

(Cross-listed with BCB, CPR E, GDCB, STAT). (3-0) Cr. 3. S.

*Prereq: BCB 567 or COM S 311, COM S 228, GEN 409, STAT 430 or STAT 483 or STAT 583*

Algorithmic and statistical approaches in computational functional genomics and systems biology. Analysis of high throughput biological data obtained using system-wide measurements. Topological analysis, module discovery, and comparative analysis of gene and protein networks. Modeling, analysis, and inference of transcriptional regulatory networks, protein-protein interaction networks, and metabolic networks. Dynamic systems and whole-cell models. Ontology-driven, network based, and probabilistic approaches to information integration.

(Dual-listed with COM S 472). (3-1) Cr. 3.

*Prereq: COM S 311; STAT 330 or STAT 305 or STAT 341 or STAT 347; ENGL 250; for graduate credit: graduate standing or permission of instructor*

Basic principles, techniques, and applications of artificial intelligence. Specification, design, implementation, and applications of intelligent agents. Computational models of intelligent behavior, including problem solving, knowledge representation and reasoning, planning, decision making, learning, perception, and communication. Artificial intelligence programming. Term project and written report for graduate credit.

(3-1) Cr. 3.

*Prereq: Graduate standing or permission of instructor*

Basic principles, techniques, and applications of machine learning. Design, analysis, theoretical foundation, implementation, and applications of learning algorithms. Selected machine learning techniques in supervised learning, unsupervised learning, and reinforcement learning, including Bayesian decision theory, computational learning theory, decision trees, linear models, support vector machines, artificial neural networks, instance-based learning, probabilistic graphical models, ensemble learning, clustering algorithms, dimensionality reduction and feature selection. Selected applications in data mining and pattern recognition.

(Dual-listed with COM S 474). (3-1) Cr. 3.

*Prereq: COM S 311; STAT 330 or STAT 305 or STAT 341 or STAT 347; MATH 165; ENGL 250; for graduate credit: graduate standing or permission of instructor*

Introduction to concepts, tools and techniques of machine learning for applications. Selected machine learning algorithms in practical data mining tasks such as classification, regression, and clustering, e.g., association rules, decision trees, linear models, Bayesian learning, support vector machines, artificial neural networks, instance-based learning, probabilistic graphical models, ensemble learning, and clustering algorithms. Selected applications in data mining and pattern recognition.

(Cross-listed with CPR E, HCI). (3-0) Cr. 3. S.

*Prereq: Graduate standing or permission of instructor*

Statistical and algorithmic methods for sensing, recognizing, and interpreting the activities of people by a computer. Focuses on machine perception techniques that facilitate and augment human-computer interaction. Introduce computational perception on both theoretical and practical levels. Participation in small groups to design, implement, and evaluate a prototype of a human-computer interaction system that uses one or more of the techniques covered in the lectures.

(Dual-listed with COM S 476). (3-0) Cr. 3.

*Prereq: COM S 311; ENGL 250*

Recent techniques for developing algorithms that automatically generate continuous motions while satisfying geometric constraints. Applications in areas such as robotics and autonomous systems. Discrete planning, kinematics, configuration space, collision detection, sampling-based motion planning, nonholonomic systems and differential constraints. Implementation of software that computes motion plans in Python. Written reports.

(Dual-listed with COM S 477). (3-0) Cr. 3.

*Prereq: COM S 228; COM S 230 or CPR E 310; MATH 207 or MATH 317, or consent of the instructor; for graduate credit: graduate standing or permission of instructor*

Selected topics from applied mathematics, algorithms, geometry, and mechanics that are fundamental to robotics and computer vision, and are also applied in computer graphics, geometric modeling and visualization, to name a few. Homogeneous coordinates and transformations, perspective projection, camera calibration, rotations and quaternions, roots of polynomials and polynomial systems, solution of linear and nonlinear equations, parametric and algebraic curves, curvature, torsion, Frenet formulas, surfaces, fundamental forms, principal curvatures, Gaussian and mean curvatures, geodesics, approximation, Fourier series and fast Fourier transform, nonlinear optimization, Lagrange multipliers, least squares, surface fitting and calculus of variations. Programming components. Scholarly report required for graduate credit.

Cr. 3.

*Prereq: COM S 472, COM S 474, or instructor permission.*

Advances in optimization theory and algorithms with evolving applications for machine learning. Theoretical foundations at the intersection of optimization and machine learning to conduct advanced research in machine learning and related fields. Emphasis on proof techniques for optimization algorithms in machine learning.

(3-0) Cr. 3.

*Prereq: COM S 474 or COM S 574 or COM S 573*

Introduction to NLP and its connection with other branches of Artificial Intelligence, such as machine learning and knowledge representation. Text analysis including n-gram language models, stemming and lemmatization, part-of-speech (POS) tagging. Topic modeling, summarization, text classification, knowledge extraction, and text reasoning. Applications of deep learning in NLP including question answering, machine reading comprehension, word and sentence embedding. Research project required.

(Cross-listed with CPR E). (3-0) Cr. 3. F.

*Prereq: CPR E 381*

Quantitative principles of computer architecture design, instruction set design, processor architecture: pipelining and superscalar design, instruction level parallelism, memory organization: cache and virtual memory systems, multiprocessor architecture, cache coherency, interconnection networks and message routing, I/O devices and peripherals.

(Cross-listed with CPR E). (3-0) Cr. 3.

*Prereq: Background in computer architecture, design, and organization*

Introduction to reconfigurable computing, FPGA technology and architectures, spatial computing architectures such as systolic and bit serial adaptive network architectures, static and dynamic rearrangeable interconnection architectures, processor architectures incorporating reconfigurabiltiy.

(Dual-listed with COM S 487). (3-0) Cr. 3.

*Prereq: COM S 352 or CPR E 308; for graduate credit: graduate standing or permission of instructor*

Introduction to network programming: protocols, programming suites, and applications. Introduction to cloud computing: concepts and case study with AWS. Introduction to selected research issues in networking and cloud computing. Graduate credit requires written report and oral presentation.

(Dual-listed with COM S 488). (3-0) Cr. 3. F.Alt. S., offered irregularly.

*Prereq: COM S 352 or CPR E 308*

Fundamental concepts in the design and implementation of computer communication in both wired and wireless networks, their protocols, and applications. Topics include the layered network architecture in the Internet, applications, transport, network, and data link layers and their protocols, Socket API, software-defined networking, and network security. Lectures organized in a top-down approach to cover the layers of network design.

Cr. arr. Repeatable.

*Prereq: Permission of instructor*

Special Topics in Computer Science.

Cr. 1.

*Prereq: Graduate classification*

Introduction to Graduate program, Graduate Program Policies, Computing Resources, Faculty Research Areas, Reading Computer Science Research Articles, LaTEX, Research Writing and Presentation, Attend Research Colloquia.
Offered on a satisfactory-fail basis only.

Cr. R. Repeatable.

*Prereq: Graduate Classification*

Supervised internship working in professional settings appropriate to the student's degree program. Academic work under faculty supervision.

Cr. 1-3.

Creative component for nonthesis option of Master of Science degree.
Offered on a satisfactory-fail basis only.

**Courses for graduate students:**

Cr. arr.

Seminar in Computer Science.
Offered on a satisfactory-fail basis only.

(3-0) Cr. 3. Repeatable.

*Prereq: COM S 511, COM S 531*

Advanced algorithm analysis and design techniques. Topics include, but are not limited to, graph algorithms, geometric algorithms, approximation algorithms, fixed-parameter algorithms, randomized algorithms and advanced data structures. Content varies by semester.

(3-0) Cr. 3.

*Prereq: COM S 511 or COM S 531*

The theory of distributed computation. Algorithms, lower bounds and impossibility results. Fundamental problems including consensus, leader election, mutual exclusion and clock synchronization. Synchronous, asynchronous and partially synchronous distributed systems models. Shared memory and message passing systems. Fault-tolerance and randomization. Wait-free object simulations. Distributed shared memory. Special topics vary from year to year.

(3-0) Cr. 3.

*Prereq: COM S 511*

Advanced topics in High Performance Computing (HPC), selected topics in HPC for machine learning and machine learning for HPC. Modern HPC solutions for data science, scientific applications, numerical and non-numerical problems, implementation of parallel programs and scalable machine learning algorithms on HPC clusters and accelerators, performance and other computational issues in HPC and parallel programming.

(Cross-listed with CPR E). (3-0) Cr. 3.

*Prereq: CPR E 526*

Algorithm design for high-performance computing. Parallel algorithms for multidimensional tree data structures, space-filling curves, random number generation, graph partitioning and load balancing. Applications to grid and particle-based methods and computational biology.

(3-0) Cr. 3. Repeatable.

*Prereq: COM S 531*

Advanced study in the quantitative theory of computation. Time and space complexity of algorithmic problems. The structure of P, NP, PH, PSPACE, and other complexity classes, especially with respect to resource-bounded reducibilities and complete problems. Complexity relative to auxiliary information, including oracle computation and relativized classes, randomized algorithms, advice machines, Boolean circuits. Kolmogorov complexity and randomness. Novel models of computation emerging in a rapidly changing field.

(3-0) Cr. 3. Repeatable.

*Prereq: COM S 531*

Advanced study of the role of randomness in computation. Randomized algorithms, derandomization, and probabilistic complexity classes. Kolmogorov complexity, algorithmic information theory, and algorithmic randomness. Applications chosen from cryptography, interactive proof systems, computational learning, lower bound arguments, mathematical logic, and the organization of complex systems. Novel models of computation emerging in a rapidly changing field.

(3-0) Cr. 3.

*Prereq: COM S 230*

Fundamentals of Game Theory: individual decision making, strategic and extensive games, mixed strategies, backward induction, Nash and other equilibrium concepts. Discussion of Auctions and Bargaining. Repeated, Bayesian and evolutionary games. Interactive Epistemology: reasoning about knowledge in multiagent environment, properties of knowledge, agreements, and common knowledge. Reasoning about and representing uncertainty, probabilities, and beliefs. Uncertainty in multiagent environments. Aspects and applications of game theory, knowledge, and uncertainty in other areas, especially Artificial Intelligence and Economics, will be discussed.

(Cross-listed with CPR E). (3-0) Cr. 3.

*Prereq: COM S 511 and COM S 531*

Design and analysis of algorithms for applications in computational biology, pairwise and multiple sequence alignments, approximation algorithms, string algorithms including in-depth coverage of suffix trees, semi-numerical string algorithms, algorithms for selected problems in fragment assembly, phylogenetic trees and protein folding. No background in biology is assumed. Also useful as an advanced algorithms course in string processing.

(3-0) Cr. 3. Repeatable.

*Prereq: COM S 552*

Concepts and techniques for network and distributed operating systems: communications protocols, processes and threads, name and object management, synchronization, consistency and replications for consistent distributed data, fault tolerance, protection and security, and distributed file systems. Research project.

(3-0) Cr. 3.

*Prereq: Graduate standing or permission of instructor*

Advanced formal methods to specify and study correctness and timing properties of complex systems and software, with a particular focus on concurrent and distributed behavior. Topics include: Petri nets and related formalisms to describe discrete-state systems; decision diagram algorithms for state-space and reachability graph generation, symbolic model checking, and timing analysis; Markov models for exact and approximate probabilistic verification.

(3-0) Cr. 3. Repeatable, maximum of 2 times.

*Prereq: COM S 228, I E 557/M E 557/CPR E 557/COM S 557*

Modern lighting models: Rendering Equation, Spherical Harmonics, Lafortune, Cook-Torrance. Non-polygonal primitives: volumes, points, particles. Textures: filtering, reflections creation. Graphics hardware: pipeline, performance issues, programmability in vertex and fragment path. Per-pixel lighting. Nonphotorealistic rendering. Radiosity; Ray tracing.

(3-0) Cr. 3. Repeatable.

*Prereq: COM S 461 or COM S 561*

Advanced topics chosen from the following: database design, data models, query systems, query optimization, incomplete information, logic and databases, multimedia databases; temporal, spatial and belief databases, semistructured data, concurrency control, parallel and distributed databases, information retrieval, data warehouses, wrappers, mediators, and data mining.

Cr. 3. Repeatable, maximum of 6 credits. Alt. F., offered irregularly.Alt. S., offered irregularly.

*Prereq: COM S 511*

Advanced topics on software repository analysis, data mining and software engineering, software engineering for context-aware and situation-aware computing, distributed development, product lines, safety, security, and reliability, and traceability. Content varies by semester.
Maximum 6 credits of COM S 665 may apply toward graduation.

Cr. 3. Repeatable, maximum of 6 credits. Alt. F., offered irregularly.Alt. S., offered irregularly.

*Prereq: COM S 511*

Advanced topics on theoretical and technical foundations in Software Engineering. Content varies by semester.
Maximum 6 credits of COM S 665 may apply toward graduation.

Cr. 3. Repeatable, maximum of 6 credits.

*Prereq: COM S 511*

Advanced topics on empirical studies on human factors and other software engineering topics. Content varies by semester.
Maximum 6 credits of COM S 665 may apply toward graduation.

(3-0) Cr. 3. Repeatable.

*Prereq: COM S 472 or COM S 572 or COM S 573 or COM S 474 or COM S 574*

Selected topics in probabilistic graphical models, causal inference, semantic web, information retrieval, natural language processing, knowledge representation and reasoning, deep learning, embedding, distributed learning, incremental learning, multi-task learning, multi-strategy learning, multi-relational learning, modeling the internet and the web, automated scientific discovery, neural and cognitive modeling. Advanced applications of artificial intelligence in bioinformatics, distributed systems, natural language, multimedia data, decision making, robotics, and more.

(3-0) Cr. 3. Repeatable.

*Prereq: COM S 472 or COM S 572 or COM S 573 or COM S 474 or COM S 574*

Advanced topics in machine learning. Selected topics in computational learning theory, Bayesian and information theoretic models (ML, MAP, MDL, MML), probabilistic graphical models, statistical relational learning, reinforcement learning, and deep learning.

(Cross-listed with CPR E). (3-0) Cr. 3. Alt. S., offered odd-numbered years.

*Prereq: CPR E 581. Repeatable with Instructor permission*

Current topics in computer architecture design and implementation. Advanced pipelining, cache and memory design techniques. Interaction of algorithms with architecture models and implementations. Tradeoffs in architecture models and implementations.

Cr. arr. Repeatable.

*Prereq: Approval of instructor*

Research.
Offered on a satisfactory-fail basis only.