University of Southern California

Viterbi School of Engineering

Computer Science

Courses of Instruction

Computer Science (CSCI)

The terms indicated are expected but are not guaranteed. For the courses offered during any given term, consult the Schedule of Classes.

CSCI 101L Fundamentals of Computer Programming (3, FaSp) Introduction to the design of solutions to computer solvable problems. Algorithm design, solution implementation using a high-level programming language, program correctness and verification.

CSCI 103L Introduction to Programming (3, FaSp) Basic datatypes, assignments, control statements (if, switch, for, while), input/output (printf, scanf, cin, cout), functions, arrays, structures, recursion, dynamic memory, file handling. Programming in C/C++. Corequisite: CSCI 109 or EE 109.

CSCI 104L Data Structures and Object Oriented Design (4, FaSp) Introduces the student to standard data structures (linear structures such as linked lists, (balanced) trees, priority queues, and hashtables), using the C++ programming language. Prerequisite: CSCI 103L; corequisite: CSCI 170.

CSCI 109 Introduction to Computing (3, FaSp) Computing as a discipline, a body of knowledge, and a domain of science/engineering concerned with information and its transformation.

CSCI 110 Introduction to Digital Logic (3) (Enroll in EE 101)

CSCI 170 Discrete Methods in Computer Science (4, FaSp) Sets, functions, series. Big-O notation and algorithm analysis. Propositional and first-order logic. Counting and discrete probability. Graphs and basic graph algorithms. Basic number theory. (Duplicates credit in CSCI 271.) Prerequisite: CSCI 103L and CSCI 109.

CSCI 180 Survey of Digital Games and Their Technologies (3, Fa) Historical, technical, and critical approach to the evolution of computer and video game architectures and game design, from its beginnings to the present day.

CSCI 201L Principles of Software Development (4, FaSp) Object-oriented paradigm for programming-in-the-large in Java; writing sophisticated concurrent applications with animation and graphic user interfaces; using professional tools on team project. Prerequisite: CSCI 104L.

CSCI 270 Introduction to Algorithms and Theory of Computing (4, FaSp) Algorithm analysis. Greedy algorithms, divide and conquer, dynamic programming, graph algorithms. NP-completeness and basic recursion theory and undecidability. Sorting lower bounds. Number-theory based cryptography. (Duplicates credit in CSCI 303.) Prerequisite: CSCI 104L and CSCI 170.

CSCI 280 Video Game Production (4, FaSpSm) (Enroll in ITP 280)

CSCI 281 Pipelines for Games and Interactives (3, FaSp) Explores the aesthetic development/technical implementation necessary to achieve unique, compelling, intuitive visual design in games. Students will develop group visual game design portfolios.

CSCI 300 Introduction to Intelligent Agents Using Science Fiction (3, Fa) Fundamental concepts of intelligent agents and multiagent interactions using science fiction short stories and movie clips; topics include decision theory, game theory, auctions, swarms, teamwork, emotions. Prerequisite: CSCI 101L or CSCI 103.

CSCI 310 Software Engineering (4, Sp) Introduction to the software engineering process and software lifecycle. Covers project management, requirements, architecture, design, implementation, testing, and maintenance phase activities in team based projects. Prerequisite: CSCI 201L. (Duplicates credit in CSCI 377.)

CSCI 350 Introduction to Operating Systems (4) Basic issues in concurrency, deadlock control, synchronization scheduling, memory management, protection and access control, inter-process communication, and structured design. Laboratory experiences with Unix-like operating system. Prerequisite: CSCI 201L and EE 109 or EE 352. (Duplicates credit in CSCI 402.)

CSCI 351 Programming and Multimedia on the World Wide Web (3, FaSpSm) HTML programming for creating home pages, installation and modification of Web server, writing programs that offer enhanced services, manipulation of graphics, video and sound. Prerequisite: CSCI 104.

CSCI 352L Computer Organization and Architecture (3, Sp) (Enroll in EE 352L)

CSCI 353 Introduction to Internetworking (4) Global Internet: design principles, layering, protocol design/analysis. Networked applications, Internet structure/architecture, Protocols for transport/congestion control, network layer/routing, link layer/MAC. Network security. Prerequisite: CSCI 201; recommended preparation: Familiarity with C and C++. (Duplicates credit in EE 450.)

CSCI 357 Basic Organization of Computer Systems (3) (Enroll in EE 357)

CSCI 360L Introduction to Artificial Intelligence (4) Concepts and algorithms underlying the understanding and construction of intelligent systems. Agents, problem solving, search, representation, reasoning, planning, machine learning. Prerequisite: CSCI 104L and CSCI 170. (Duplicates credit in CSCI 460.)

CSCI 377 Introduction to Software Engineering (3) Introduction of principles, methods, techniques, and tools for multi-person construction of multi-version software systems. Prerequisite: CSCI 104.

CSCI 380 Video Game Programming (4, FaSpSm) (Enroll in ITP 380)

CSCI 390 Special Problems (1-4) Supervised, individual studies. No more than one registration permitted. Enrollment by petition only.

CSCI 401 Capstone: Design and Construction of Large Software Systems (4, FaSp) Group project with an outside stakeholder to develop real-world software solutions to large-scale problems. Topics include software engineering, professional preparation, and recent computer science research. Prerequisite: CSCI 270 and CSCI 310. Duplicates credit in CSCI 477ab.

CSCI 402 Operating Systems (4, FaSpSm) Concurrency, deadlock control, synchronization, process and thread scheduling, memory management, file systems, security and access control, communication and networking, distributed file systems, data management. Prerequisite: CSCI 201L or CSCI 455x; EE 352L or EE 357.

CSCI 404 Capstone: Creating Your High-Tech Startup (4) Capstone class in which students create their own technology startup, leveraging comprehensive CS knowledge and best industry practices. Prerequisite: CSCI 201, CSCI 270, and ITP 466.

CSCI 410x Translation of Programming Languages (3) Concepts of assemblers, compilers, interpreters and their design; macro assemblers, Polish notation and translation techniques; operator precedence parsing, push down automata, code generation. Not available for graduate credit to computer science majors. Prerequisite: CSCI 201; corequisite: EE 357.

CSCI 420 Computer Graphics (4, FaSp) Computer graphics, OpenGL, 2D and 3D transformations, Bézier splines, computer animation, rendering including ray tracing, shading and lighting, artistic rendering, virtual reality, visualization. Prerequisite: CSCI 104L and MATH 225.

CSCI 423 Native Console Multiplayer Game Development (4) Implementation of AAA style multiplayer game running on consoles and DX11. Console development in native C++, console SDKs, engine components, gameplay, networking, data prediction/replication. Prerequisite: CSCI 522 or ITP 380; recommended preparation: ITP 485.

CSCI 424 Game Engine Tool Development (4) Tool development for a C++ console game. Animation export, compression. FBX parsing. Level editing, object live update tools. Debugging tools. Texture compression. Data Pipeline. Prerequisite: ITP 380; recommended preparation: ITP 485.

CSCI 425 Immersive Game Development (4) Implementation of a console multiplayer game leveraging input devices such as Kinect, PSMove, Console + IPad/PSVita, Cloud Computing, to achieve creative design. Prerequisite: CSCI 423.

CSCI 430 Introduction to Computer and Network Security (4, Sp) A broad overview of security threats and defenses, security systems and functionalities, as well as current security practices. Includes homeworks and in-class exercises to provide practical experience working with such systems. Prerequisite: CSCI 201.

CSCI 445L Introduction to Robotics (4, FaSpSm) Designing, building and programming mobile robots; sensors, effectors, basic control theory, control architectures, some advanced topics, illustrations of state-of-the-art. Teamwork; final project tested in a robot contest. Junior standing or higher. Prerequisite: CSCI 103.

CSCI 450 Introduction to Computer Networks (3) (Enroll in EE 450)

CSCI 452 Parallel and Distributed Computation (3) (Enroll in EE 451)

CSCI 454L Introduction to System-on-Chip (4, Fa) (Enroll in EE 454L)

CSCI 455x Introduction to Programming Systems Design (4, FaSp) Intensive introduction to programming principles, discrete mathematics for computing, software design and software engineering concepts. Not available for credit to computer science majors, graduate or undergraduate. Prerequisite: departmental approval.

CSCI 457 Computer Systems Organization (3) (Enroll in EE 457)

CSCI 458 Numerical Methods (4) (Enroll in MATH 458)

CSCI 459 Computer Systems and Applications Modeling Fundamentals (3, Sp) Techniques and tools needed to construct/evaluate models of computer systems and applications. Analytical and simulation methods, capacity planning, performance/reliability evaluation, and decision-making. Prerequisite: MATH 225, CSCI 201.

CSCI 460 Introduction to Artificial Intelligence (3, FaSp) Concepts and algorithms underlying the understanding and construction of intelligent systems. Agents, problem solving, search, representation, reasoning, planning, communication, perception, robotics, neural networks. Prerequisite: CSCI 104.

CSCI 464 Foundations of Exotic Computation (3, Sp) Introduction to new approaches to computation: quantum — inspired by quantum mechanics; neural — inspired by the study of the brain; and molecular — inspired by the genome. Prerequisite: MATH 225 or MATH 245 or EE 241.

CSCI 476 Cryptography: Secure Communication and Computation (4) Introduction to modern Cryptography; mathematical/algorithmic studies of methods for protecting information in computer and communication systems: Public-Key Cryptosystems, zero-knowledge proofs, data privacy. Prerequisite: CSCI 270.

CSCI 477ab Design and Construction of Large Software Systems (2-2, FaSpSm) Programming methodologies; intra-group and inter-group communication; software life-cycle; software economics. A large software project is a central aspect of the course. Prerequisite: CSCI 201. Open only to seniors.

CSCI 485 File and Database Management (4) File input/output techniques, basic methods for file organization, file managers, principles of databases, conceptual data models, and query languages. Prerequisite: CSCI 201.

CSCI 487 Programming Game Engines (4, FaSp) (Enroll in ITP 485)

CSCI 490x Directed Research (1-8, max 12) Individual research and readings. Not available for graduate credit.

CSCI 491abL Final Game Project (4-2, FaSpSm) a: Design, iterative prototyping, and development of a 1st playable level. Open only to seniors. b: Design, iterative stage 2 prototyping and development of a refined game.

CSCI 495 Senior Project (3) (Enroll in PHYS 495)

CSCI 499 Special Topics (2-4, max 8) Selected topics in computer science.

CSCI 501 Numerical Analysis and Computation (3) (Enroll in MATH 501)

CSCI 502ab Numerical Analysis (3-3) (Enroll in MATH 502ab)

CSCI 503 Parallel Programming (3) Exploration of parallel programming paradigms, parallel computing architectures, hands-on parallel programming assignments, contemporary and historical examples and their impact, context with parallel algorithms. Recommended preparation: CSCI 104 or CSCI 455; EE 452 or EE 457.

CSCI 504ab Numerical Solutions of Ordinary and Partial Differential Equations (3) (Enroll in MATH 504ab)

CSCI 505ab Applied Probability (3-3) (Enroll in MATH 505ab)

CSCI 510 Software Management and Economics (3, Fa) Theories of management and their application to software projects. Economic analysis of software products and processes. Software cost and schedule estimation, planning and control. Prerequisite: graduate standing.

CSCI 511 Personal Software Process (PSP) and Project (3, Sp) Individual analysis, planning, development and maintenance of a software product or development artifact, using the principles and practices of PSP. Analysis of project’s lessons learned.

CSCI 512 Testing and Analysis of Software Systems (4) Introduces students to the topic of automated testing and analysis of large-scale modern software systems. Recommended preparation: CSCI 571; Java programming skills; Linux system administration.

CSCI 520 Computer Animation and Simulation (4) Fundamental techniques of computer animation and simulation, knowledge and/or experience in the design, scripting, production and post-production stages of computer animation. Prerequisite: CSCI 420 or CSCI 580; recommended preparation: familiarity with calculus, linear algebra, and numerical computation; C/C++ programming skills.

CSCI 521 Optimization: Theory and Algorithms (3, Fa) (Enroll in ISE 520)

CSCI 522 Game Engine Development (4, Fa) The principles of developing game engines targeted at modern PC and game console hardware.

CSCI 523L Networked Games (4) Design and implementation of networked games, from the origins of the supporting technologies in distributed systems, visual simulations, networked virtual environments, and shipped games. Recommended preparation: CSCI 420 or CSCI 580 or an equivalent course in graphics.

CSCI 524 Networked Artificial Intelligence (4) Networked game communication architectures, protocol development, architecting networked game AI clients/services. Character following, knowledge representation and reasoning, dynamic play strategies, search, learning, and planning. Recommended preparation: CSCI 420 or CSCI 580 or an equivalent course in graphics.

CSCI 526L Advanced Mobile Devices and Game Consoles (4, FaSpSm) Explore the complex engineering process required to design and build a real-time graphics engine to support physical realism on mobile devices. Recommended preparation: CSCI 420 or CSCI 580 or an equivalent course in graphics.

CSCI 529ab Advanced Game Projects (a: 4, FaSp; b: 2, FaSpSm) a: Team projects intended to address the multifaceted technical and creative challenges that are inherent to comprehensive game development. Recommended preparation: CSCI 522 or CTIN 488. b: This course provides students in various areas of game specialization the practice of design, iterative stage 2 prototyping and development of a refined game.

CSCI 530 Security Systems (4, FaSp) Protecting computer networks and systems using cryptography, authentication, authorization, intrusion detection and response. Includes lab to provide practical experience working with such systems. Prerequisite: CSCI 402.

CSCI 531 Applied Cryptography (3, Fa) Intensive overview of cryptography for practitioners, historical perspective on early systems, number theoretic foundations of modern day cryptosystems and basic cryptanalysis.

CSCI 533 Combinatorial Analysis and Algebra (3) (Enroll in MATH 533)

CSCI 534 Affective Computing (3, Sp) Overview of the theory of human emotion, techniques for recognizing and synthesizing emotional behavior, and design application. Recommended preparation: CSCI 561.

CSCI 536 Linear Programming and Extensions (3, Fa) (Enroll in ISE 536)

CSCI 540 Self-Organization (3) Massively distributed systems whose global behavior emerges from local interactions of components. Global to local compilation; robot swarms; formation of shapes/spatial patterns; self-assembly; programmable matter. Recommended preparation: Graduate standing in science or engineering.

CSCI 542 Neural Computation with Artificial Neural Networks (3, Sp) Computation and adaptation in networks of interconnected distributed processing units; classical and statistical approaches to neural nets; state-of-the-art neural network research. Recommended preparation: basic statistics, linear algebra.

CSCI 543 Software Multiagent Systems (3, Sp) Investigate computational systems in which several software agents or software agents and humans interact.

CSCI 544 Applied Natural Language Processing (3, Sp) Introduction to key components of human language technologies, including: information extraction, sentiment analysis, question answering, machine translation. Recommended preparation: proficiency in programming, algorithms and data structures, basic knowledge of linear algebra.

CSCI 545 Robotics (4, FaSpSm) Fundamental skills for modeling and controlling of dynamic systems for robotic applications and graphics animations; control theory; kinematics; dynamics; sensor processing; real-time operating systems; robot labs. Recommended preparation: Basic knowledge in linear algebra (matrices and vectors), calculus, programming in C/C++ or any another language or permission of the instructor.

CSCI 546 Intelligent Embedded Systems (3, Sp) Survey of techniques for the design of large-scale, distributed, networked, embedded systems. Examples include sensor/actuator networks, wearable computing, distributed robotics and smart spaces.

CSCI 547 Sensing and Planning in Robotics (3, Fa) Introduction to software methods in robotics including sensing, sensor fusion, estimation, fault tolerance, sensor planning, robot control architectures, planning and learning.

CSCI 548 Information Integration on the Web (4, FaSpSm) Foundations, techniques, and algorithms for information integration. Topics include Semantic Web, linked data, data integration, entity linkage, source modeling, and information extraction. Prerequisite: CSCI 561; recommended preparation: CSCI 585 and some programming experience.

CSCI 549 Nanorobotics (3, Sp) Introduction to nanotechnology. Nanorobotic systems: sensing; actuation and propulsion; control; communication; power; programming and coordination of robot swarms. Nanomanipulation and nanoassembly with atomic force microscopes. Graduate standing in science or engineering.

CSCI 550 Advanced Data Stores (4) Selected topics on highly available, elastic data stores. Topics include non-relational data models, simple interfaces and query languages, weak consistency and benchmarking techniques. Prerequisite: CSCI 485 or CSCI 585.

CSCI 551 Computer Communications (4) Protocol design for computer communication networks, network routing, transport protocols, internet working. Prerequisite: CSCI 353 or (EE 450 and CSCI 350 or CSCI 402); recommended preparation: C-language programming.

CSCI 552 Asynchronous VLSI Design (3) (Enroll in EE 552)

CSCI 553 Computational Solution of Optimization Problems (3) (Enroll in EE 553)

CSCI 554 Real Time Computer Systems (3) (Enroll in EE 554)

CSCI 555L Advanced Operating Systems (4) Advanced topics in operating system research: new OS structures, novel memory management, communication, file system, process management, reliability and security techniques. Prerequisite: CSCI 350 or CSCI 402.

CSCI 556 Introduction to Cryptography (3, Sp) Modern secret codes. Public key cryptosystems of Rivest-Shamir-Adelman, Diffie-Hellman and others. The underlying number theory and computational complexity theory. Prerequisite: CSCI 570 or CSCI 581.

CSCI 557 Computer Systems Architecture (3) (Enroll in EE 557)

CSCI 558L Internetworking and Distributed Systems Laboratory (3, FaSp) Students complete laboratory exercises in operating system and network management, distributed systems, TCP/IP, SNMP, NFS, DNS, etc. Term project required. Prerequisite: CSCI 402 and EE/CSCI 450; recommended preparation: CSCI 551 and CSCI 555.

CSCI 559 Mathematical Pattern Recognition (3) (Enroll in EE 559)

CSCI 561 Foundations of Artificial Intelligence (4, FaSpSm) Foundations of symbolic intelligent systems, search, logic, knowledge representation, planning, learning. Recommended preparation: good programming and algorithm analysis skills.

CSCI 564 Brain Theory and Artificial Intelligence (3, Fa) Introduces neural modeling, distributed artificial intelligence and robotics approaches to vision, motor control and memory. Prerequisite: graduate standing.

CSCI 565 Compiler Design (4, Sp) Formal grammar; parsing methods and lexical analysis; code generation; local and global code optimization; and dynamic allocation. Prerequisite: CSCI 455x.

CSCI 567 Machine Learning (4, Fa) Statistical methods for building intelligent and adaptive systems that improve performance from experiences; focus on theoretical understanding of these methods and their computational implications. Recommended preparation: undergraduate level training or course work in linear algebra, multivariate calculus, basic probability and statistics; an undergraduate level course in Artificial Intelligence may be helpful but is not required.

CSCI 568 Requirements Engineering (3, Fa) Techniques for successful requirements analysis and requirements engineering (RE) of software-intensive systems. Systematic process of developing requirements through cooperative problem analysis, representation, and validation.

CSCI 570 Analysis of Algorithms (4) Explores fundamental techniques such as recursion, Fourier transform ordering, dynamic programming for efficient algorithm construction. Examples include arithmetic, algebraic, graph, pattern matching, sorting, searching algorithms.

CSCI 571 Web Technologies (4, FaSpSm) Advanced study of programming languages with application to the Web. Languages for client-side and server-side processing. Examples taken from: HTML, Java, JavaScript, Perl, XML and others. Recommended preparation: knowledge of at least two programming languages.

CSCI 572 Information Retrieval and Web Search Engines (4, FaSpSm) Examines key aspects of information retrieval as they apply to search engines; web crawling, indexing, querying and quality of results are studied. Prerequisite: CSCI 571; recommended preparation: familiarity with programming in multiple languages, C, C++, and/or Java and experience with a database system, e.g. MySQL or Oracle.

CSCI 573 Probabilistic Reasoning (3, Fa) Reasoning under uncertainty, statistical directed and undirected graphical models, temporal modeling, inference in graphical models, parameter learning, decisions under uncertainty. Recommended preparation: An undergraduate level course in probability theory.

CSCI 574 Computer Vision (3, Fa) Description and recognition of objects, shape analysis, edge and region segmentation, texture, knowledge based systems, image understanding. Prerequisite: CSCI 455x.

CSCI 575 Wireless and Mobile Networks Design and Library (3) (Enroll in EE 579)

CSCI 576 Multimedia Systems Design (4) State-of-the-art technology for networked multimedia systems such as: system design, I/O technologies, data management, data compression, networking and telecommunications. Design of real-world multimedia solution. Recommended preparation: familiarity with C or C++.

CSCI 577ab Software Engineering (4-4, FaSp) a: Software life cycle processes; planning considerations for product definition, development, test, implementation, maintenance. Software requirements elicitation and architecture synthesis. Team project. b: Software development, test, implementation, and maintenance methods. CASE tools and software environments. Software product engineering, configuration management, quality engineering, documentation. Application via projects. Prerequisite: a: graduate standing; b: CSCI 577a.

CSCI 578 Software Architectures (4) Study of concepts, principles and scope of software system architectures, including architectural styles, languages, connectors, middleware, dynamism, analysis, testing and domain-specific approaches.

CSCI 579ab Computational Molecular Biology (3-3, FaSp) (Enroll in MATH 578ab)

CSCI 580 3-D Graphics and Rendering (4) Course outlines the process of creating images from 3D models. Includes transformations, shading, lighting, rastorization, texturing, and other topics.

CSCI 581 Logic and its Applications (3) Formal systems, first order logic, truth, completeness, compactness, Godel incompleteness, recursive functions, undecidability. Selected applications, e.g., theorem proving, artificial intelligence, program verification, databases, computational complexity. Prerequisite: CSCI 430 and MATH 470.

CSCI 582 Geometric Modeling (3, Sp) Mathematical models and computer representations for three-dimensional solids; underlying topics from set theory, geometry, and topology. Fundamental algorithms; applications to CAD/CAM and robotics. Recommended preparation: Linear algebra and data structures.

CSCI 584 Control and Learning in Mobile Robots and Multi-Robot Systems (3, Fa) Survey of robot control and learning methods from technical papers. Control architectures, adaptation, learning, cooperation, distributed vs. centralized approaches, cooperative and competitive systems. Prerequisite: CSCI 445L or CSCI 460 or CSCI 547 or CSCI 561.

CSCI 585 Database Systems (4, FaSpSm) Database system architecture; conceptual database models; semantic, object-oriented, logic-based, and relational databases; user and program interfaces; database system implementation; integrity, security, concurrency and recovery. Recommended preparation: Knowledge of relational databases, SQL, relational algebra and physical database design is required. Open only to graduate students.

CSCI 586 Database Systems Interoperability (3, Sp) Federated and multi-database systems, database networking, conceptual and schematic diversity, information sharing and exchange, knowledge discovery, performance issues. Prerequisite: CSCI 585.

CSCI 587 Geospatial Information Management (4) Techniques to efficiently store, manipulate, index and query geospatial information in support of real-world geographical and decision-making applications. Prerequisite: CSCI 485 or CSCI 585.

CSCI 588 Specification and Design of User Interface Software (3, Fa) The design and implementation of user interface software. Study of issues relating to human/computer interaction. Visual design and real-time interfaces.

CSCI 589 Software Engineering for Embedded Systems (4, FaSpSm) Software engineering methods and techniques for embedded, resource constrained, and mobile environments. Applications to real-time operating systems and wireless networking systems. Class project.

CSCI 590 Directed Research (1-12) Research leading to the master’s degree. Maximum units which may be applied to the degree to be determined by the department. Graded CR/NC.

CSCI 591 Computer Science Research Colloquium (1, max 2) Exploration and critical assessment of research activities in computer science. Course will serve as a forum for current research presentations from academia and industry. Graded CR/NC.

CSCI 593 Mathematical Foundations for Computer-Aided Design of VLSI Circuits (3, Sp) (Enroll in EE 581)

CSCI 594abz Master’s Thesis (2-2-0, FaSpSm) Credit on acceptance of thesis. Graded IP/CR/NC.

CSCI 595 Advanced Compiler Design (4) Code generation, data-flow analysis, global optimization, register allocation, data dependency analysis, unimodular transformations, vectorization, parallelization, data and computation decomposition. Prerequisite: CSCI 565.

CSCI 596 Scientific Computing and Visualization (4) Hands-on training on the basics of parallel computing and scientific visualization in the context of computer simulations in science and engineering. Recommended preparation: CSCI 455x and MATH 458.

CSCI 598 Professional Writing and Communication for Computer Scientists (1) Instruction in discipline-specific workplace writing and communication skills for computer science graduate students. Open only to graduate students in Computer Science.

CSCI 599 Special Topics (2-4, max 9) Course content to be selected each semester from recent developments in computer science.

CSCI 620 Computer Animation and Simulation (4) Animation and Simulation techniques for computer games, virtual reality, and film visual effects. Research methods, SIGGRAPH papers. Deformable objects, fluids, sound, collision detection, haptics, rigid bodies, GPUs. Prerequisite: CSCI 420 or CSCI 520 or CSCI 580. Recommended preparation: Familiarity with calculus, linear algebra, and numerical computation and C++ programming skills. Open only to doctoral students.

CSCI 621 Digital Geometry Processing (4) Digital geometry processing (subfield of computer graphics), that covers the full pipeline from 3D scanning, processing, to 3D printing. Recommended preparation: Solid background in linear algebra, numerical optimization, and C/C++ programming. CSCI 420 Computer Graphics is recommended. Open only to Computer Science doctoral students.

CSCI 646 Coordinated Mobile Robotics (4) State-of-the-art techniques for coordinating robot teams. Distributed approaches; task allocation; control and stability; network topology; coverage and monitoring; caging; bio-inspired approaches; persistence; probabilistic methods. Recommended preparation: Solid background in linear algebra, programming and algorithm analysis skills. Open only to Computer Science doctoral students.

CSCI 648 Advanced Information Integration (4) Focus on foundations and techniques for information integration. Topics include Semantic Web, linked data, data integration, entity linkage, source modeling, and information extraction. Prerequisite: CSCI 561; recommended preparation: CSCI 585 and programming experience. Open only to Computer Science doctoral students.

CSCI 652 Low-Power Wireless Networks (3, Fa) (Enroll in EE 652)

CSCI 653 High Performance Computing and Simulations (4, FaSpSm) Advanced high-performance computer simulation techniques: multiscale deterministic and stochastic simulation algorithms on parallel and distributed computing platforms; immersive and interactive visualization of simulation data. Prerequisite: CSCI 596 and CSCI 503 or CSCI 580.

CSCI 657 Advanced Distributed Systems (4) The foundations and modern applications of distributed systems. Topics include: logical time, fault tolerance, group communication, consensus, consistency, transactions, and peer-to-peer. Recommended preparation: Proficiency in a high-level language, ideally C++, and familiarity with Git. Open only to Computer Science doctoral students.

CSCI 658 Diagnosis and Design of Reliable Digital Systems (3) (Enroll in EE 658)

CSCI 662 Advanced Natural Language Processing (4) Computational models of natural language. Formalisms for describing structures of human language, and algorithms for learning language structures from data. Recommended preparation: proficiency in programming, algorithms and data structures, discrete math, probability theory, and calculus. Open only to doctoral students. (Duplicates credit in former CSCI 562.)

CSCI 664 From Action to Language (3, Sp) Analysis of neurocomputational processes linking action, perception, emotion and language within an evolutionary framework integrating data from neuroscience, primatology, human psychology and linguistics. Recommended preparation: graduate standing with background or strong interest in one of linguistics, computational neuroscience (e.g., CSCI 564), robotics, or emotion.

CSCI 670x Advanced Analysis of Algorithms (4, FaSpSm) Fundamental techniques for design and analysis of algorithms. Dynamic programming; network flows; theory of NP-completeness; linear programming; approximation, randomized, and online algorithms; basic cryptography. Prerequisite: CSCI 570; recommended preparation: familiarity with algorithms and discrete mathematics. Open only to computer science and industrial and systems engineering doctoral students.

CSCI 671 Randomized Algorithms (4) Standard techniques in the design and analysis of randomized algorithms and random structures. Topics include tail bounds, Markov Chains, VC-dimension, probabilistic method. Prerequisite: CSCI 570 or CSCI 670; recommended preparation: Basic background in probability and linear algebra.

CSCI 672 Approximation Algorithms (3, Sp) Algorithmic techniques include combinatorial algorithms and rounding of linear and semi-definite programs. Applications include network design, graph cuts, covering problems, and approximation hardness. Prerequisite: CSCI 570 or CSCI 670; recommended preparation: basic background in probability and linear algebra.

CSCI 673 Structure and Dynamics of Networked Information (3, Sp) Algorithms for analyzing network data and spreading information over networks. Focuses on broadly applicable mathematical tools and techniques, including spectral techniques, approximation algorithms and randomization. Prerequisite: CSCI 570 or CSCI 670; recommended preparation: basic background in probabilities, linear algebra.

CSCI 674ab Advanced Topics in Computer Vision (3-3) Selected topics from current active research areas including image segmentation, shape analysis and object recognition, inference of 3-D shape, motion analysis, knowledge-based system, neural nets. Prerequisite: CSCI 574.

CSCI 675 Convex and Combinatorial Optimization (3) Topics include: Convex sets and functions; convex optimization problems; geometric and Lagrangian duality; simplex algorithm; ellipsoid algorithm and its implications; matroid theory; submodular optimization. Prerequisite: CSCI 570 or CSCI 670; recommended preparation: Mathematical maturity and a solid grounding in linear algebra.

CSCI 676 Multimodal Probabilistic Learning of Human Communication (3, Fa) Computational models of human communicative behaviors. Linguistic, acoustic and visual modalities during social interaction. Multimodal machine learning and pattern recognition, including generative and discriminative models. Recommended preparation: CSCI 542 or CSCI 567 or CSCI 573 or equivalent; proper academic background in probability, statistics and linear algebra; previous experience in machine learning is suggested but not obligatory. This course is not a replacement for CSCI 567.

CSCI 685 Advanced Topics in Database Systems (4) Advanced techniques in database management. Topics include optimization, cache management, data mining and knowledge discovery, decision support, spatial indexes, parallel and distributed systems, extendible storage. Prerequisite: CSCI 485 or CSCI 585.

CSCI 686 Advanced Big Data Analytics (4) Advanced statistical inference and data mining techniques for data analytics, including: topic modeling, structure learning, time-series analysis, learning with less supervision, and massive-scale data analytics. Prerequisite: CSCI 567.

CSCI 698 Practicum in Teaching Computer Science (1, max 2, FaSp) Practical principles for the long-term development of effective teaching in Computer Science. Intended for teaching assistants for classes offered by the Computer Science department. Graded CR/NC. Open only to computer science doctoral students.

CSCI 694ab Topics in Computer Networks and Distributed Systems (3-3) Current topics in network and distributed systems; verbal and written presentation skills, effective critiquing, and evaluation. Prerequisite: CSCI 551 or CSCI 555.

CSCI 697 Seminar in Computer Science Research (1, max 2, FaSp) Introduction of Ph.D. students to the broad range of computer science research. Two semesters registration required. Open to computer science doctoral students only. Graded CR/NC. (Duplicates credit in former CSCI 597.)

CSCI 790 Research (1-12) Research leading to the doctorate. Maximum units which may be applied to the degree to be determined by the department. Graded CR/NC.

CSCI 794abcdz Doctoral Dissertation (2-2-2-2-0) Credit on acceptance of dissertation. Graded IP/CR/NC.