UTexas

Computer Science (C S)

C S 301K  Foundations of Logical Thought  3 Hours  
Introductory logic in the context of computing; introduction to formal notations; basic proof techniques; sets, relations, and functions.
C S 302  Computer Fluency  3 Hours  
An introduction to the fundamental concepts of computing: how computers work, what they can do, and how they can be used effectively. Some programming is required.
C S 303E  Elements of Computers and Programming  3 Hours  
Problem solving and fundamental algorithms for various applications in science, business, and on the World Wide Web, and introductory programming in a modern object-oriented programming language.
C S 103F  Ethical Foundations of Computer Science  1 Hour  
An introduction to reasoning about the effects of the technology created by computer scientists and understanding the ethical and real-world consequences of that technology. Emphasizes direct participation and discussion using case studies to illustrate ethical topics.
C S 104C  Competitive Programming  1 Hour  
Explores the algorithms needed to solve a given problem, reason about corner cases, and write correct implementations under time pressure. Focuses on skills useful for international programming competitions, whiteboard job interviews, and programming tasks that require quickly solving challenging problems with creative use of algorithms.
C S 304I  Essentials of AI for Life and Society  3 Hours  
Examine fundamental concepts for AI literacy, as well as the ethical and societal implications of AI technologies.
C S 105C  Computer Programming: C++  1 Hour  
Explores the syntax and concepts needed to program in C++.
C S 105P  Topics In Computer Programming Languages  1 Hour  
An introduction to programming in a particular computer language. Includes designing and implementing programs.
C S 108  Topics in Software Systems  1 Hour  
Introduction to the use of a particular software system. Students build applications that exploit the system being studied.
C S 109, 209, 309  Topics in Computer Science  1-3 Hours  
C S 109.1, 209.1, 309.1  Quantum Computing I  1-3 Hours  
Introduction to quantum information and communication.
C S 311  Discrete Mathematics for Computer Science  3 Hours  
A focus on discrete mathematical tools of fundamental importance to the working computer scientist. An emphasis is placed on using logical notation to express rigorous mathematical arguments. Subjects include proof by induction, introduction to graph theory, recurrences, sets, functions, and an introduction to program correctness.
C S 311H  Discrete Mathematics for Computer Science: Honors  3 Hours  
A focus on discrete mathematical tools of fundamental importance to the working computer scientist. An emphasis is placed on using logical notation to express rigorous mathematical arguments. Subjects include proof by induction, graph theory, number theory, combinatorics, recurrences, sets, functions, an introduction to program correctness, and discrete probability.
C S 312  Introduction to Programming  3 Hours  
First part of a two-part sequence in programming. Fundamental concepts of structured programming; procedures and data structures with a focus on problem solving strategies and implementation; introduction to concepts of informal specification, informal reasoning about program behavior, debugging, and ad hoc testing.
C S 312H  Introduction to Programming: Honors  3 Hours  
First part of a two-part sequence in programming. Fundamental concepts of structured programming; procedures and data structures with a focus on problem solving strategies and implementation; introduction to concepts of informal specification, informal reasoning about program behavior, debugging, and ad hoc testing.
C S 313E  Elements of Software Design  3 Hours  
Object-oriented design of software using Python, a modern high-level language. Introduction to abstract data types, fundamental algorithms, and basics of complexity analysis.
C S 314  Data Structures  3 Hours  
Second part of a two-part sequence in programming. Introduction to specifications, simple unit testing, and debugging; building and using canonical data structures; algorithm analysis and reasoning techniques such as assertions and invariants.
C S 314H  Data Structures: Honors  3 Hours  
Second part of a two-part sequence in programming. Introduction to specifications, simple unit testing, and debugging; building and using canonical data structures; algorithm analysis and reasoning techniques such as assertions and invariants.
C S 118H  Introduction to Computer Science Research: Honors  1 Hour  
Introduction to computer science research. Discuss various aspects of undergraduate research, including the benefits of undergraduate research, ways to get started in undergraduate research, the mechanics and expectations of an undergraduate honors thesis, and tips to help have a successful undergraduate research experience.
C S 119S, 219S, 319S, 419S, 519S, 619S, 719S, 819S, 919S  Topics in Computer Science  1-9 Hours  
This course is used to record credit the student earns while enrolled at another institution in a program administered by the University's Study Abroad Office. Credit is recorded as assigned by the study abroad adviser in the Department of Computer Science. University credit is awarded for work in an exchange program; it may be counted as coursework taken in residence. Transfer credit is awarded for work in an affiliated studies program.
C S 120N, 220N, 320N  Topics in Computer Science for Nonmajors  1-3 Hours  
C S 323E  Elements of Scientific Computing  3 Hours  
Explore the fundamentals of software issues related to scientific computing. Discuss subjects including floating-point computations, numerical computation errors, interpolation, integration, solution of linear systems of equations, optimization, and initial value problems of ordinary differential equations. Examine implementation of algorithms that are investigated using Python for all scientific computations.
C S 323H  Elements of Scientific Computing: Honors  3 Hours  
Fundamentals of software issues related to scientific computing. Subjects include floating-point computations, numerical computation errors, interpolation, integration, solution of linear systems of equations, optimization, and initial value problems of ordinary differential equations. Implementation of algorithms are investigated using MATLAB for matrix and vector computations. Examples are drawn from a variety of science and mathematics areas.
C S 324E  Elements of Graphics and Visualization  3 Hours  
Basics of two- and three-dimensional computer graphics systems, modeling and rendering, and selected graphics software APIs. Other topics may include interactive graphics, animation, graphical user interfaces, and the graphical presentation of information.
C S 326E  Elements of Networking  3 Hours  
Introduction to the principles and basic concepts of the Internet, networking applications and protocols, and simple client/server applications. Other topics may include network technologies and topologies, packet and circuit switching, LANS and WANS, Internet security, and network management.
C S 327E  Elements of Databases  3 Hours  
A practical introduction to database management systems, with discussion of database administration and management. Survey of logical modeling, database design with a focus on relational databases, SQL query language, and current applications. Subjects may include data integrity, performance, concurrency, transaction processing, recovery, security, and Web applications.
C S 328E  Topics in Elements of Computing  3 Hours  
C S 429  Computer Organization and Architecture  4 Hours  
An introduction to low-level computer design ranging from the basics of digital design to the hardware/software interface for application programs. Includes basic systems principles of pipelining and caching, and requires writing and understanding programs at multiple levels.
C S 329E  Advanced Topics in Elements of Computing  3 Hours  
C S 429H  Computer Organization and Architecture: Honors  4 Hours  
An introduction to low-level computer design ranging from the basics of digital design to the hardware/software interface for application programs. Includes basic systems principles of pipelining and caching, and requires writing and understanding programs at multiple levels.
C S 129S, 229S, 329S, 429S, 529S, 629S, 729S, 829S, 929S  Topics in Computer Science  1-9 Hours  
This course is used to record credit the student earns while enrolled at another institution in a program administered by the University's Study Abroad Office. Credit is recorded as assigned by the study abroad adviser in the Department of Computer Science. University credit is awarded for work in an exchange program; it may be counted as coursework taken in residence. Transfer credit is awarded for work in an affiliated studies program.
C S 329W  Cooperative Computer Science  3 Hours  
This course covers the work period of computer science students in the Cooperative Education program, which provides supervised work experience by arrangement with the employer and the supervising instructor.
C S 330E  Elements of Software Engineering I  3 Hours  
Explore software engineering using various programming languages. Use tools to improve the quality of software development.
C S 330F  F1/10 Autonomous Driving  3 Hours  
Introduction to algorithms required for autonomous driving, and more generally, autonomous mobile robots. Discuss motion control (model-predictive control, time-optimal control), sensing (filtering, clustering), planning (local obstacle avoidance, heuristic search, RRTs), and state estimation (particle filters).
C S 330H  F1/10 Autonomous Driving: Honors  3 Hours  
Introduction to algorithms required for autonomous driving, and more generally, autonomous mobile robots. Discuss motion control (model-predictive control, time-optimal control), sensing (filtering, clustering), planning (local obstacle avoidance, heuristic search, RRTs), and state estimation (particle filters).
C S 331  Algorithms and Complexity  3 Hours  
An investigation of algorithmic paradigms: divide and conquer, dynamic programming, greedy algorithms, graph algorithms, randomized algorithms, undecidability, NP-completeness, and approximation algorithms.
C S 331E  Elements of Software Engineering II  3 Hours  
Explore advanced aspects of software engineering using various programming languages. Use tools to improve the quality of software development.
C S 331H  Algorithms and Complexity: Honors  3 Hours  
An investigation of algorithmic paradigms: divide and conquer, dynamic programming, greedy algorithms, graph algorithms, randomized algorithms, undecidability; NP-completeness, approximation algorithm, sorting lower bound, selected topics from amortized analysis, network flow, and linear programming.
C S 333E  Elements of Data Integration  3 Hours  
Investigate data architectures and approaches for integrating siloed data with an emphasis on tooling and implementation of end-to-end solutions. Explore data sourcing, storage, ingestion, modeling, transformations, enrichment, aggregation, lineage, metadata, quality, and knowledge graphs.
C S 333P  Science of High-Performance Computing  3 Hours  
Explore aspects that impact high performance computing. Discuss goal-oriented programming" that derives programs hand-in-hand with their proof of correctness. Examine techniques for mapping the appropriate algorithms to computer architectures so that they can attain high performance.
C S 234  Technical Writing  2 Hours  
Application of techniques and strategies of effective technical writing, and of conventions used in documents such as letters, memos, proposals, abstracts, and reports.
C S 337  Theory in Programming Practice  3 Hours  
Application of program-analysis theory to program design. Methodologies for large-scale program design. Designed to help students bring together theoretical and programming skills.
C S 337H  Theory in Programming Practice: Honors  3 Hours  
Application of program-analysis theory to program design. Methodologies for large-scale program design. Designed to help students bring together theoretical and programming skills.
C S 439  Principles of Computer Systems  4 Hours  
An introduction to computer systems software abstractions with an emphasis on the connection of these abstractions to underlying computer hardware. Key abstractions include threads, virtual memory, protection, and I/O. Requires writing of synchronized multithreaded programs and pieces of an operating system.
C S 439H  Principles of Computer Systems: Honors  4 Hours  
An introduction to computer systems software abstractions with an emphasis on the connection of these abstractions to underlying computer hardware. Key abstractions include threads, virtual memory, protection, and I/O. Requires writing of synchronized multithreaded programs and pieces of an operating system.
C S 340D  Debugging Verifying Programs  3 Hours  
Basic concepts of formal methods with emphasis on using and applying mathematical logic plus finite state systems theory to program verification and debugging.
C S 341  Automata Theory  3 Hours  
An introduction to the formal study of automata and of related formal languages with applications in computer science.
C S 341H  Automata Theory: Honors  3 Hours  
An introduction to the formal study of automata and of related formal languages with applications in computer science.
C S 342  Neural Networks  3 Hours  
An introduction to deep learning covering basic building blocks and intuitions behind designing, training, and tuning of deep networks. Explore application areas including computer vision, sequence modeling in natural language processing, deep reinforcement learning, generative modeling, and adversarial learning.
C S 342C  Computational Brain  3 Hours  
An examination of the brain as a computational system composed of different layers of abstraction. Focus on scientific writing, with weekly reviews of relevant scientific papers.
C S 342S  Introduction to Speech and Audio Processing  3 Hours  
Explore the theory and practice that underlies modern automatic speech recognition (ASR) systems and related technologies. Analyze the acoustic theory of speech production, digital signal processing for speech signals, Hidden Markov Models, Gaussian Mixture Models, language models, finite state transducers, decoding algorithms, and deep neural networks.
C S 343  Artificial Intelligence  3 Hours  
An introduction to the field of artificial intelligence (AI), starting from foundations in search and knowledge representation, and then sampling from major AI topics such as probabilistic reasoning, intelligent agents (including for games), machine learning, planning, natural language processing, robotics, computer vision, and philosophical foundations. Programming projects are required.
C S 343H  Artificial Intelligence: Honors  3 Hours  
An introduction to the field of artificial intelligence (AI), starting from foundations in search and knowledge representation, and then sampling from major AI topics such as probabilistic reasoning, intelligent agents (including for games), machine learning, planning, natural language processing, robotics, computer vision, and philosophical foundations. Programming projects are required.
C S 344M  Autonomous Multiagent Systems  3 Hours  
An introduction to autonomous agents, with an emphasis on multiagent systems. Students use a robotics simulator. Emphasis on computer science research activities, including speaking, writing, programming, and working in groups.
C S 344R  Robotics  3 Hours  
A survey of methods and techniques important for intelligent robotics. Students work in teams, applying these methods to get intelligent behavior from physical robots.
C S 345  Programming Languages  3 Hours  
Survey of significant concepts underlying modern programming languages, including syntax, functions, expressions, types, polymorphism, assignment, procedures, pointers, encapsulation, classes, and inheritance, with some discussion of implementation issues. Prominent programming paradigms, such as sequential, concurrent, object-oriented, functional, and logic programming. Illustrative examples drawn from a variety of current languages.
C S 345H  Programming Languages: Honors  3 Hours  
A survey of significant concepts underlying modern programming languages, including syntax, functions, expressions, types, polymorphism, assignment, procedures, pointers, encapsulation, classes, and inheritance, with some discussion of implementation issues. Prominent programming paradigms, such as sequential, concurrent, object-oriented, functional, and logic programming. Illustrative examples drawn from a variety of current languages.
C S 346  Cryptography  3 Hours  
A theoretical introduction to cryptography. Subjects include private key cryptosystems, public key cryptosystems, digital signatures, secret sharing schemes, and the necessary mathematical background.
C S 347  Data Management  3 Hours  
Concepts of database design and database system implementation. Data models, query processing, database design theory, crash recovery, concurrent control, and distributed databases.
C S 349  Contemporary Issues in Computer Science  3 Hours  
An examination of social, professional, and ethical issues involved in the use of computer technology. Subjects may include software engineering ethics, computer safety and reliability, constitutional issues, intellectual property, computer crime, societal impact, emerging technologies, and philosophical issues.
C S 350C  Advanced Computer Architecture  3 Hours  
Relationships between programming and hardware design, high performance and low power microarchitectures, memory system design, technology and workload constraints on design, special techniques for coding, addressing, and control, and evaluation of design alternatives will be explored.
C S 350F  Operating Systems  3 Hours  
Advanced coverage of core operating systems (virtual memory, file systems, scheduling), and intermediate and advanced operating systems concepts: multiprocessing, multi-core computing, linking, kernel design, virtual machines, and security.
C S 350M  Energy-Efficient Computing  3 Hours  
Explore the technical aspects related to energy efficiency. Focus on hardware techniques for managing energy, operating system interfaces, cloud computing, high-performance computing, and Blockchain technology.
C S 353  Theory of Computation  3 Hours  
An introduction to computability theory and computational complexity, focusing on the limits of computation. Subjects include undecidability, NP-completeness, time and space complexity, circuit complexity, and randomized complexity.
C S 354  Computer Graphics  3 Hours  
Introduction to techniques for human-machine communication through imagery. Subjects include display hardware, transformations, interactive techniques, geometric modeling, two- and three-dimensional display algorithms, graphics software systems architecture, and hidden-line and surface elimination. Projects are assigned and in-depth exploration is encouraged.
C S 354H  Computer Graphics: Honors  3 Hours  
Introduction to techniques for human-machine communication through imagery. Explore display hardware, transformations, interactive techniques, geometric modeling, two- and three-dimensional display algorithms, graphics software systems architecture, and hidden-line and surface elimination.
C S 354P  Game Programming Paradigms  3 Hours  
Explore game programming paradigms in C++ using the Unreal Engine. Examine event-driven, component-oriented and object-oriented programming, as well as collaborative software development using source control, bug-tracking, and code documentation. Develop and apply skills towards building a game on the Unreal Engine.
C S 354R  Game Technology  3 Hours  
Examine major technological components of computer games and their integration, modeling and animation, physics simulation, networking for games, interface and interaction techniques, and special effects.
C S 354S  Game Development Capstone: Two-Dimensional Games  3 Hours  
Participation in an interdisciplinary team to gain a thorough understanding of the two-dimensional game development process, through modeling of the environment and practices that are used in game studios.
C S 354T  Game Development Capstone: Three-Dimensional Games  3 Hours  
Participation in interdisciplinary teams to gain a thorough understanding of the three-dimensional game development process, through modeling of the environment and practices that are used in game studios.
C S 356  Computer Networks  3 Hours  
Introduction to computer networks with emphasis on the Internet.
C S 356R  Introduction to Wireless Networks  3 Hours  
An introduction to basic knowledge in wireless networks ranging from the physical layer to the application layer, and across different types of wireless networks such as WiFi, cellular, and multihop networks.
C S 358H  Introduction to Quantum Information Science: Honors  3 Hours  
Introduction to the theory of quantum computing and information. Explore the rules of quantum mechanics (qubits, unitary transformations, measurements, density matrices); quantum gates and circuits; entanglement; the Bell inequality; protocols for teleportation, quantum key distribution, and other tasks; basic quantum algorithms such as Shor's and Grover's; basic quantum complexity theory; basic quantum error correction; decoherence and the measurement problem; and the challenges of building scalable quantum computers. Previous exposure to quantum mechanics is not required.
C S 360V  Virtualization  3 Hours  
Examine the latest in virtualization technologies such as virtual machines, containers and serverless computing.
C S 361  Introduction to Computer Security  3 Hours  
An introduction to computer security, both in the abstract and in the context of real systems, including recognizing potential threats to confidentiality, integrity and availability, and developing familiarity with current security-related issues in computer science.
C S 361C  Information Assurance and Security  3 Hours  
Selected subjects from the broad area of information assurance, including computer security, communications security, operations security, and risk assessment.
C S 361S  Network Security and Privacy  3 Hours  
An examination of common computer security threats; fundamental techniques for implementing secure software systems and networks; practical experience in attacking and defending networked systems.
C S 363G  Geometric Foundations of Machine Learning  3 Hours  
Explore geometric foundations of modern deep and reinforcement learning. Examine the mathematical, statistical, and computational optimization fundamentals that are the basis of computational, data driven machine learning models and Markov decision making processes. Discuss how data efficient and continuous action spaces are harnessed to learn the free energy Hamiltonian underlying dynamical systems, and multi-player games.
C S 363H  Principles of Machine Learning I: Honors  3 Hours  
Introduction to machine learning: data processing, regression, classification, clustering, dimensionality reduction, and neural networks.
C S 363M  Principles of Machine Learning I  3 Hours  
Introduction to machine learning: data processing, regression, classification, clustering, dimensionality reduction, and neural networks.
C S 364M  Principles of Machine Learning II  3 Hours  
Introduction to advanced machine learning: optimization methods, statistical inference and probabilistic modeling, generalization, and uncertainty quantification.
C S 365T  Trustworthy Machine Learning  3 Hours  
Explore ways in which contemporary machine learning (ML) algorithms can be untrustworthy, along with algorithmic approaches to mitigate these trust issues. Discuss algorithmic fairness, privacy in ML, ML security, and interpretability/explicability in ML. Examine fairness, security, and privacy issues in ML.
C S 367  Numerical Methods  3 Hours  
Subjects include systems of linear equations, numerical integration, ordinary differential equations, and nonlinear equations. Construction and use of large numerical systems. Influence of data representation and computer architecture on algorithm choice and development.
C S 369  Systems Modeling  3 Hours  
Introduction to performance modeling, with emphasis on computer systems. Modeling methodology, queueing network models, simulation, analysis of results.
C S 370  Undergraduate Reading and Research  3 Hours  
Supervised study of selected problems in computer science, by individual arrangement with supervising instructor.
C S 370F  Undergraduate Reading and Research: Writing  3 Hours  
Supervised study of selected problems in computer science, by individual arrangement with supervising instructor.
C S 371D  Distributed Computing  3 Hours  
Investigation of models, principles, and fundamental protocols, including event ordering and global predicate detection, atomic commit, state-machine replication, rollback recovery, primary backup, consensus for synchronous and asynchronous systems, and byzantine fault-tolerance.
C S 371G  Generic Programming and the STL  3 Hours  
C S 371L  iOS Mobile Computing  3 Hours  
Overview of mobile computing with an emphasis on developing applications for the iOS operating system.
C S 371M  Mobile Computing  3 Hours  
Overview of mobile computing. Emphasis on mobile application development. Use of mobile capabilities: sensors, location, telephony, and multimedia.
C S 371N  Natural Language Processing  3 Hours  
Explore modern natural language processing using machine learning and deep learning approaches. Examine linguistics fundamentals (syntax, semantics, distributional properties of language), machine learning models (classifiers, sequence taggers, deep neural networks), key algorithms for inference, and a range of applications. Build systems to do tasks including sentiment classification, text generation, and more.
C S 371P  Object-Oriented Programming  3 Hours  
Programming using class derivation, inheritance, and dynamic polymorphism. Application of a simple object-oriented design methodology to several software development problems.
C S 371R  Information Retrieval and Web Search  3 Hours  
Introduction to traditional and recent methodologies for indexing, processing, querying, and classifying unstructured and semi-structured textual data, including hypertext and World Wide Web documents.
C S 371S  Object-Oriented Software Engineering  3 Hours  
Object-oriented formulations of software systems as executable specifications, object-oriented analysis, design of software architectures, translation of high-level specification systems.
C S 373  Software Engineering  3 Hours  
Introduction to current knowledge, techniques, and theories in large software system design and development.
C S 173G  Social Impact Capstone  1 Hour  
Supervised study of social-impact related problems in computer science.
C S 373S  Software Design  3 Hours  
Model-driven engineering, UML metamodels and constraints, model transformatons, object-oriented refactorings, design patterns, object-oriented frameworks and plug-ins, layered and dataflow architectural styles, map-reduce parallel software architectures, and service-oriented architectures.
C S 374H  Advanced Undergraduate Supervised Research: Honors  3 Hours  
Engage in directed research in areas of computer science, under supervision of a faculty member, leading to a presentation.
C S 374L  Longhorn Startup  3 Hours  
Focus on skill development and mentoring in startup formation, technology development, market validation, marketing, sales, operations, human resources, program management, and finance. Emphasis on written and oral presentation of startup activities.
C S 174S  Longhorn Startup Seminar  1 Hour  
An introduction to the world of startups through the experiences of people who have built successes and learned from failures.
C S 375  Compilers  3 Hours  
An examination of formal description of languages, lexical analysis, syntax analysis, syntax-directed translation, run-time system management, code generation, code optimization, compiler-building tools.
C S 376  Computer Vision  3 Hours  
Explores computer vision, a discipline that develops methods that enable machines to interpret or analyze images and videos. Includes the study of image formation, feature detection, segmentation, multiple-view geometry, recognition and learning, and motion and tracking.
C S 377  Principles and Applications of Parallel Programming  3 Hours  
Models of parallel computation, fundamental concepts for representation of parallel computation structures, study of representative parallel programming systems, and programming of parallel algorithms and computations.
C S 377P  Programming for Performance  3 Hours  
Investigation on the performance-critical features of modern computer architectures and how applications can take advantage of them to obtain high performance.
C S 178, 378  Undergraduate Topics in Computer Science  1,3 Hours  
C S 178.1, 378.1  Quantum Computing II  1,3 Hours  
Introduction to quantum algorithms and programming.
C S 178H, 378H  Undergraduate Topics in Computer Science: Honors  1,3 Hours  
C S 379C  History and Computer Science Capstone  3 Hours  
Investigate questions at the intersection of history and computer science through collaborative projects. Develop computational tools and methods to study history. Explore how ideas in history and computer science can inform each other.
C S 379H  Computer Science Honors Thesis  3 Hours  
Conduct directed research in areas of computer science leading to an honors thesis.
C S 379N  Neuroscience and Computer Science Capstone  3 Hours  
Investigate questions at the intersection of neuroscience and computer science through collaborative projects. Develop computational tools and methods to study the brain and behavior. Explore how ideas from neuroscience and computer science can inform each other.
C S 380C  Compilers  3 Hours  
Basics of static analysis and transformation techniques; exploration in depth of one aspect of compilation and optimization.
C S 380D  Distributed Computing I  3 Hours  
Models of distributed systems; language issues, proving properties of distributed systems; time, clocks, partial ordering of events; deadlock and termination detection; diffusing computations; computing in hostile environments; distributed resource management.
C S 380I  Structure and Implementation of Modern Programming Languages  3 Hours  
Explore the breadth of these technologies for translating high-level program text to binary machine code within a unified cost-benefit-risk analysis framework. Illustrate system integration by building a series of compilers for LiveOak, a pedagogical, object-oriented language. Discuss lexical analysis, syntactic analysis, code generation, register allocation, language-level virtual machines, dynamic memory management, linking, and interoperability.
C S 380J  Operating Systems Implementation  3 Hours  
Seminar about how operating systems work. Readings and discussion about classic and recent research papers. Intensive programming assignments in the construction of a prototype operating system.
C S 380L  Advanced Operating Systems  3 Hours  
Study of the formal structure, design principles, organization, implementation, and performance analysis of multiprogramming and/or multiprocessor computer systems.
C S 380N  Systems Modeling  3 Hours  
Theory and applications of Markovian models: birth-death models, queueing models, and networks of queues. Numerical methods: computational algorithms, approximation techniques, discrete-event simulation. Performance of scheduling disciplines: priority, time-sharing, multiple access.
C S 380P  Parallel Systems  3 Hours  
Explores parallel systems, from languages to hardware, from large-scale parallel computers to multicore chips, and from traditional parallel scientific computing to modern uses of parallelism. Includes discussion of and research methods in graphics, languages, compilers, architecture, and scientific computing.
C S 380S  Theory and Practice of Secure Systems  3 Hours  
Survey of modern security, designed to introduce the basic techniques used in the design and analysis of secure systems.
C S 380V  Virtualization  3 Hours  
Discuss the latest in virtualization technologies, such as virtual machines, containers, serverless, etc. Explore CPU virtualization, memory virtualization, networking virtualization, storage virtualization, paravirtualization, containers, unikernels, and serverless computing.
C S 381K  Artificial Intelligence  3 Hours  
Use of computers in problem solving, game playing, theorem proving, natural language understanding, and related tasks; methods of search, knowledge representation, learning, and other topics.
C S 381S  Spoken Language Technologies  3 Hours  
Explore the theory and practice that underlies modern automatic speech recognition (ASR) systems and related spoken language technologies. Discuss the acoustic theory of speech production, digital signal processing for speech signals, Hidden Markov Models, Gaussian Mixture Models, language models, finite state transducers, decoding algorithms, and deep neural networks.
C S 381V  Visual Recognition  3 Hours  
Subjects include fundamental representations, learning approaches, matching-based algorithms, human activity models for video, and large-scale recognition.
C S 382M  Advanced Computer Architecture  3 Hours  
Algorithms and their realizations, special techniques for coding, addressing, and control; integration of computer units; relations between programming and design considerations.
C S 383C  Numerical Analysis: Linear Algebra  3 Hours  
Survey of numerical methods in linear algebra: floating-point computation, solution of linear equations, least squares problems, algebraic eigenvalue problems.
C S 383D  Numerical Analysis: Interpolation, Approximation, Quadrature, and Differential Equations  3 Hours  
Survey of numerical methods for interpolation, functional approximation, integration, and solution of differential equations.
C S 384G  Computer Graphics  3 Hours  
Advanced material in computer graphics, including in-depth treatments of techniques for realistic image synthesis, advanced geometric modeling methods, animation and dynamic simulation, scientific visualization, and high-performance graphics architectures.
C S 384M  Multimedia Systems  3 Hours  
Theoretical and practical issues in advanced systems, including multimedia systems, digital audio and video compression techniques, operating system and network support for digital audio and video, and multimedia conferencing systems.
C S 384P  Physical Simulation of Computer Graphics  3 Hours  
Explore the key concepts and algorithms for simulating physical systems; starting from the ground up with particle systems and mass-spring networks, rigid and elastic bodies, collisions, cloth, and fluids.
C S 384R  Geometric Modeling and Visualization  3 Hours  
Computational image processing, computational geometry and geometric modeling algorithms with an emphasis on spatial realism, and the programmatic use of physiological simulation and visualization to quantitatively depict how things work at the molecular, cellular, tissue, organ, and system levels.
C S 384V  Introduction to VLSI Design  3 Hours  
Basic techniques required to design custom negative metal oxide semiconductor digital integrated circuits.
C S 386C  Dependable Computing Systems  3 Hours  
System models from synchronous to asynchronous, with emphasis on in-between models such as the timed asynchronous model. Control structures such as timed state-transition systems, and constraints in temporal and real-time logics. Analysis techniques such as model checking of timed systems, and extended Presburger arithmetic. Basic building blocks such as clock synchronization, synchronous atomic broadcast, time-bounded membership protocols, real-time scheduling theory, and state recovery methods. Practical implementation issues such as special operating system data structures and algorithms, open system design, and security concerns.
C S 386D  Database Systems  3 Hours  
Introduction to the principles of database systems, including fundamental ideas and algorithms used in the construction of centralized database management systems, distributed database management systems, and database machines and their roles in Internet infrastructure. Topics include data storage and indexing algorithms, query processing and optimization, concurrency control, recovery, XML and object-oriented databases, database evaluation and tuning, and recent directions in database research.
C S 386K  Numerical Treatment of Differential Equations  3 Hours  
The analysis of numerical methods for solving ordinary and partial differential equations.
C S 386L  Programming Languages  3 Hours  
Topics include formal syntax representations, program correctness, typing, and data abstraction. Features and problems in languages that allow parallelism. Exploration of different programming styles, such as imperative, functional, logic, data flow, and object-oriented programming.
C S 386M  Communication Networks  3 Hours  
Switching techniques, network and protocol architectures, communication protocols, resource allocation problems, internetworking, design and analysis methods.
C S 386P  Android Programming  3 Hours  
Study Android APIs and learn to build significant Android applications. Explore general principles of software engineering and mobile app development.
C S 386S  Network Protocol Security  3 Hours  
Techniques and research in Internet and network security.
C S 386W  Wireless Networking  3 Hours  
Fundamental concepts and principles of wireless network technologies and protocol design, ranging from physical layer to application layer, and in-depth studies of current wireless research.
C S 388  Natural Language Processing  3 Hours  
Computational methods for syntactic and semantic analysis of structures representing meanings of natural language; study of current natural language processing systems; methods for computing outlines and discourse structures of descriptive text.
C S 388C  Combinatorics and Graph Theory  3 Hours  
Counting, matching theory, extremal set theory, Ramsey theory, probabilistic method, linear algebra method, coding theory. Applications to computer science, including randomized algorithms.
C S 388D  Data-Driven Algorithm Design  3 Hours  
Analyze recent developments on the role of machine learning in designing algorithms from the dual viewpoints of tailoring algorithm design to exploit the availability of data as well as tailoring learning to optimize for algorithm performance.
C S 388E  Approximation Algorithms and Complexity  3 Hours  
Explore approximation algorithms for NP-hard problems, online algorithms, approximation in P, and other subjects related to approximation algorithms and their limitations. Examine combinatorial algorithms, as well as algorithms based on linear programming and semidefinite programming. Identify the Probabilistically Checkable Proofs (PCP) Theorem, discuss its applications, and prove a weak version of it.
C S 388F  Automata and Formal Languages  3 Hours  
Formal grammars, languages and related classes of automata, language hierarchies, operations on languages, decidability, related complexity issues, closure properties, other classes of automata.
C S 388G  Algorithms: Techniques and Theory  3 Hours  
Explore advanced subjects in algorithm design and analysis including algorithmic paradigms, data structures, maximum flow, randomized algorithms, NP-completeness, and approximation algorithms.
C S 388H  Cryptography  3 Hours  
Surveys the foundations of cryptography from formal notions of security to fundamental protocols, including one-way functions, encryption, pseudorandom generators, signature schemes, and zero-knowledge.
C S 388J  Optimization  3 Hours  
Explore the background on convex sets and functions, linear programming, convex programming, and iterative first-order and second-order methods.
C S 388K  Online Learning and Optimization  3 Hours  
Explore algorithms for convex optimization and algorithms for online learning. Focus on algorithms for large scale convex optimization. Discuss problems in machine learning. Apply these ideas to online learning.
C S 388L  Introduction to Mathematical Logic  3 Hours  
Introduction to some of the principal topics of mathematical logic: propositional and predicate calculus; Goedel's completeness theorem; first-order theories; formalizing mathematical reasoning; first-order arithmetic; recursive functions; Goedel's incompleteness theorems; axiomatic set theory.
C S 388M  Communication Complexity  3 Hours  
Covers the most important models of communication complexity and their applications, including recent research results and various open problems.
C S 388P  Parallel Algorithms  3 Hours  
Theory of parallel computation: Parallel algorithm design and analysis on shared memory machines; parallel complexity; other models of parallel computation; lower bounds.
C S 388Q  Quantum Information Science  3 Hours  
Introduction to the theory of quantum computing and information. Examine the rules of quantum mechanics (qubits, unitary transformations, density matrices); quantum gates and circuits; entanglement; the Bell inequality; protocols for teleportation, quantum key distribution, quantum money and other tasks; basic quantum algorithms such as Shor's and Grover's; basic quantum complexity theory; and the challenges of building scalable quantum computers.
C S 388R  Randomized Algorithms  3 Hours  
The design and analysis of efficient randomized algorithms.
C S 388S  Formal Semantics and Verification  3 Hours  
Sequential execution: partial and total correctness; deductive, operational, and denotational semantics; formal derivation of programs; parallel execution: partial correctness, deadlock, and starvation; methodology, parallel versus distributed execution.
C S 388T  Theory of Computation  3 Hours  
Examine polynomial hierarchy, circuit lower bounds, randomized computation, approximability, communication complexity, pseudorandom generators, and probabilistically checkable proofs.
C S 388U  Planning, Search, and Reasoning Under Uncertainty  3 Hours  
Introduction to three key foundational problems in AI: planning, search, and reasoning under uncertainty. Investigate how to define planning domains, including representations for world states and actions, covering both symbolic and path planning. Study algorithms to efficiently find valid plans with or without optimality, and partially ordered, or fully specified solutions.
C S 389C  Continuous Algorithms  3 Hours  
Explore the design and analysis of algorithms for continuous spaces, focusing on optimization, numerical linear algebra, sampling, and applications to machine learning.
C S 389L  Automated Logical Reasoning  3 Hours  
Subjects include automated reasoning techniques for propositional logic, first-order logic, linear arithmetic over reals and integers, theory of uninterpreted functions, and combinations of these theories. Examines automated logical reasoning both from a theoretical and practical perspective, giving a hands-on experience building useful tools, such as SAT and SMT solvers.
C S 389M  Principles of Object-Oriented Software Technology  3 Hours  
Fundamental principles of object-oriented software engineering, including design and implementation of object-oriented analysis methods, software architectures, translators of high-level programming language representations, translations to multiple-software architectures.
C S 389R  Recursion and Induction I  3 Hours  
The development of a formal theory for reasoning about computer programs, with emphasis on recursively defined functions in the LISP style and proof by mathematical induction. Heavy emphasis on student discovery and presentation of proofs.
C S 390D  Distributed Computing II  3 Hours  
Synchronous and asynchronous algorithms, with particular emphasis on notations for expressing the algorithms and logics for reasoning about them. Algorithms from a variety of application areas and for a variety of architectures.
C S 390S  Sublinear Algorithms  3 Hours  
Study algorithms that can process very large data sets, with a focus on streaming algorithms, compressed sensing, and property testing.
C S 391D  Data Mining: A Mathematical Perspective  3 Hours  
Mathematical and statistical aspects of data mining. Topics include supervised learning (regression, classification, support vector machines) and unsupervised learning (clustering, principal components analysis, dimensionality reduction). Uses technical tools that draw from linear algebra, multivariate statistics, and optimization.
C S 391K  Artificial Intelligence II  3 Hours  
Advanced course in artificial intelligence. Topics include planning, probabilistic reasoning, truth maintenance, abduction, model-based diagnosis, and speech recognition.
C S 391L  Machine Learning  3 Hours  
Computing systems that automatically improve their performance with experience, including various approaches to inductive classification such as version space, decision tree, rule-based, neural network, Bayesian, and instance-based methods; as well as computational learning theory, explanation-based learning, and knowledge refinement.
C S 391M  Case Studies in Machine Learning  3 Hours  
Explore major concepts, techniques, algorithms, and applications in machine learning. Evaluate machine learning methods and discuss practical case studies to produce solutions for real-world data analysis problems.
C S 391R  Robot Learning  3 Hours  
Survey a wide range of modern techniques in robotics that learn from data, largely focusing on robot perception and decision making. Explore 3D vision, representation learning, active perception, reinforcement learning, imitation learning, and applications in robot manipulation.
C S 392C  Methods and Techniques for Parallel Programming  3 Hours  
Models of parallel fundamental concepts for representation of parallel computation structures, study of representative parallel programming languages, formulation of languages and translation methods, translation of parallel programs to multiple targets, laboratory exercises in parallel programming.
C S 392F  Automated Software Design  3 Hours  
Model-driven engineering; UML metamodels and constraints, model transformations, software product lines, feature models, feature modularity, feature algebras, feature interactions, multi-dimensional separation of concerns, design-by-transformation, parallel software architectures, correct-by-construction, architecture refinement, optimization, and extension, program refactorings, design patterns, refactoring scripts, category theory, functors, commuting diagrams.
C S 393C  Agent-Based Electronic Commerce  3 Hours  
Focuses on the intersection of computer science (including multiagent systems and machine learning), economics, and game theory. Explores economic mechanisms of exchange suitable for use by automated intelligent agents, including auctions and auction theory, game theory and mechanism design, and autonomous bidding agents. Students demonstrate programming proficiency in a trading agent competition.
C S 393D  Topics in Numerical Analysis  3 Hours  
Recent topics have included numerical methods in ordinary differential equations, numerical methods in partial differential equations, computational problems in linear algebra, numerical solution of systems of equations, numerical methods in functional approximation, numerical integration.
C S 393N  Numerical Solution of Elliptic Partial Differential Equations  3 Hours  
The numerical solution of large systems of linear algebraic equations arising in the solution of elliptic partial differential equations by discretization methods.
C S 393P  Program Synthesis  3 Hours  
Study the methods for automatically discovering programs that implement given high-level specifications, which can take many forms, including formal constraints, input-output examples, demonstrations, and natural language. Examine contemporary algorithms for program synthesis to bring together symbolic techniques for pruning and search, numerical techniques for finding optimal parameters, and statistical techniques for interpreting ambiguous specifications and learning to search.
C S 393R  Autonomous Robots  3 Hours  
Explore an advanced overview of autonomous mobile robotics, including control, perception, and planning. Examine algorithms and data structures related to these, cover widely adopted and state of the art techniques. Implement and extend such algorithms on real robots.
C S 394C  Algorithms for Computational Biology  3 Hours  
Algorithm design in computational molecular biology, with a focus on multiple sequence alignment and phylogeny (evolutionary history) reconstruction. Topics include the design and analysis of algorithms under probabilistic models of evolution, heuristics, and exact solutions for NP-hard optimization problems.
C S 394D  Deep Learning  3 Hours  
Explore the basic building blocks and intuitions behind designing, training, tuning, and monitoring of deep networks. Examine both the theory of deep learning, as well as hands-on implementation sessions in pytorch. Explore a series of application areas of deep networks in: computer vision, sequence modeling in natural language processing, deep reinforcement learning, generative modeling, and adversarial learning.
C S 394F  Knowledge Representation and Reasoning  3 Hours  
Surveys the research and practice of building knowledge systems, including knowledge representation, automated reasoning, knowledge acquisition, and explanation generation.
C S 394N  Neural Networks  3 Hours  
Biological information processing; architectures and algorithms for supervised learning, self-organization, reinforcement learning, and neuro-evolution; theoretical analysis; hardware implementations and simulators; applications in engineering, artificial intelligence, and cognitive science.
C S 394P  Automatic Programming  3 Hours  
Automatic generation of computer programs from high-level specifications. Program analysis, optimization, and transformation; partial evaluation; object-oriented programming; transformation of formal specifications; specialization of generic procedures; views.
C S 394R  Reinforcement Learning: Theory and Practice  3 Hours  
Introduces the theory and practice of modern reinforcement learning, with emphasis on temporal difference learning algorithms.
C S 195, 295, 395  Topics in Conference Course  1-3 Hours  
C S 195L, 295L, 395L  Topics in Conference Course  1-3 Hours  
C S 195T, 395T  Topics in Computer Science  1,3 Hours  
From eight to fifteen topics are offered each semester.
C S 195T.1, 395T.1  Parallel Computations  1,3 Hours  
C S 195T.10, 395T.10  Foundational Techniques of Machine Learning and Data Sciences  1,3 Hours  
Introduction to computational and mathematical tools of data science. Cover statistical estimation and optimization algorithms, neural networks, geometry of high dimensional spaces, randomized methods, sparse approximation, and dimension reduction techniques.
C S 195T.9, 395T.9  Introduction to Ethical AI and Robotics  1,3 Hours  
Introduction to ethical issues and challenges that could and do arise when creating AI-based systems. Explore case studies anchored by readings illustrating the current and future possible uses of robots as well as the broad themes of ethical and responsible AI. Address how things have gone wrong in the past and open debates regarding how best to design, deploy, and regulate AI systems.
C S 396  Research Practice and Experience  3 Hours  
Designed to provide an early research experience for new doctoral students in computer science. Students conduct an independent research project and present the results.
C S 396M  Advanced Networking Protocols  3 Hours  
Topics include routing, multiple access, internetworking, security, performance models, and verification methods.
C S 698  Thesis  6 Hours  
C S 398T  Supervised Teaching in Computer Science  3 Hours  
Supervised teaching experience, and seminar focused on curriculum construction and teaching methods.
C S 399W, 699W, 999W  Dissertation  3,6,9 Hours