UTexas

Computer Science (C S)

C S 301K  Foundations of Logical Thought  3 Hours  

3 Lecture Hours  0 Lab Hours  
Introductory logic in the context of computing; introduction to formal notations; basic proof techniques; sets, relations, and functions. Three lecture hours a week for one semester. Some sections also require one discussion hour a week.
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Lower Division  

C S 302  Computer Fluency  3 Hours  

3 Lecture Hours  0 Lab 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. Credit for Computer Science 302 may not be earned after a student has received credit for Computer Science 303E, 312, 312H, 314, or 314H. May not be counted toward a degree in computer science. Three lecture hours or two lecture hours and one discussion hour a week for one semester.
Core Curriculum: 093  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Lower Division  

C S 303E  Elements of Computers and Programming  3 Hours  

3 Lecture Hours  0 Lab 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. Only one of the following may be counted: Computer Science 303E, 312, 312H. Credit for Computer Science 303E may not be earned after a student has received credit for Computer Science 314, or 314H. May not be counted toward a degree in computer science. The equivalent of three lecture hours a week for one semester.
Core Curriculum: 093  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Lower Division  

C S 103F  Ethical Foundations of Computer Science  1 Hour  

1 Lecture Hours  0 Lab Hours  
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. Computer Science 103F and 109 (Topic: Ethical Foundations of Computer Science) may not both be counted. One lecture hour a week for one semester.
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Lower Division  

C S 104C  Competitive Programming  1 Hour  

1 Lecture Hours  0 Lab Hours  
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. Computer Science 104 and 109 (Topic: Competitive Programming) may not both be counted. One lecture hour a week for one semester.
Pre/Corequisites: Computer Science 311 or 311H with a grade of at least C-, and registration or credit in Computer Science 314 or 314H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Lower Division  

C S 304I  Essentials of AI for Life and Society  3 Hours  

3 Lecture Hours  0 Lab Hours  
Examine fundamental concepts for AI literacy, as well as the ethical and societal implications of AI technologies. Only one of the following may be counted: Computer Science 304I, 109 (Topic: Essentials of AI: Life/Soc), 309 (Topic: AI Literacy: Essent of AI). Three lecture hours a week for one semester.
Core Curriculum: 093  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Lower Division  

C S 105C  Computer Programming: C++  1 Hour  

1 Lecture Hours  0 Lab Hours  
Explores the syntax and concepts needed to program in C++. One lecture hour a week for one semester.
Pre/Corequisites: Computer Science 313E, 314, 314H, or Electrical Engineering 422C, with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Lower Division  

C S 105P  Topics In Computer Programming Languages  1 Hour  

1 Lecture Hours  0 Lab Hours  
An introduction to programming in a particular computer language. Includes designing and implementing programs. One lecture hour a week for one semester.
Pre/Corequisites: Computer Science 313E, 314, 314H, or Electrical Engineering 422C, with a grade of at least C-, and consent of instructor.  
Grading: Student Option  
Repeatable for credit: May be repeated for credit when the topics vary.  
Academic Level: Lower Division  

C S 108  Topics in Software Systems  1 Hour  

1 Lecture Hours  0 Lab Hours  
Introduction to the use of a particular software system. Students build applications that exploit the system being studied. One lecture hour a week for one semester.
Pre/Corequisites: Computer Science 313E, 314, 314H, or Electrical Engineering 422C, with a grade of at least C-.  
Grading: Pass/Fail  
Repeatable for credit: May be repeated for credit when the topics vary.  
Academic Level: Lower Division  

C S 109, 209, 309  Topics in Computer Science  1-3 Hours  

1,2,3 Lecture Hours  0 Lab Hours  
For each semester hour of credit earned, one lecture hour a week for one semester.
Pre/Corequisites: Varies with the topic.  
Grading: Student Option  
Repeatable for credit: May be repeated for credit when the topics vary.  
Academic Level: Lower Division  
Topic 1: Quantum Computing I. Introduction to quantum information and communication. Computer Science 309 (Topic: Quantum Computing-FRI) and 309 (Topic 1) may not both be counted.
  

C S 109.1, 209.1, 309.1  Quantum Computing I  1-3 Hours  

1,2,3 Lecture Hours  0 Lab Hours  
Introduction to quantum information and communication. Computer Science 309 (Topic: Quantum Computing-FRI) and 309 (Topic 1) may not both be counted.
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Lower Division  

C S 311  Discrete Mathematics for Computer Science  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 311 and 311H may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: The following coursework with a grade of at least C- in each: Computer Science 312 or 312H; and Mathematics 408C, 408K, or 408N, or registration for Mathematics 408C.  
Restrictions: Restricted to computer science majors.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Lower Division  

C S 311H  Discrete Mathematics for Computer Science: Honors  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 311 and 311H may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Mathematics 408K or 408N with a grade of at least C-; or registration or credit with at least C- in M 408C.  
Restrictions: Restricted to honors computer science majors.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Lower Division  

C S 312  Introduction to Programming  3 Hours  

4 Lecture Hours  0 Lab 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. Only one of the following courses may be counted: Computer Science 303E, 312, 312H. Credit for Computer Science 312 may not be earned after a student has received credit for Computer Science 314 or 314H. Three lecture hours and one discussion hour a week for one semester.
Core Curriculum: 093  
Pre/Corequisites: Credit with a grade of at least C- or registration for Mathematics 408C, 408K, or 408N.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Lower Division  

C S 312H  Introduction to Programming: Honors  3 Hours  

4 Lecture Hours  0 Lab 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. Only one of the following courses may be counted: Computer Science 303E, 312, 312H. Credit for Computer Science 312H may not be earned after a student has received credit for Computer Science 314 or 314H. Three lecture hours and one discussion hour a week for one semester.
Pre/Corequisites: Credit with a grade of at least C- or registration for Mathematics 305G, or a passing score on the College of Natural Sciences mathematics placement examination; and consent of the honors director.  
Restrictions: Restricted to computer science majors.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Lower Division  

C S 313E  Elements of Software Design  3 Hours  

3 Lecture Hours  0 Lab 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. May not be counted toward a degree in computer science. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 303E, 312, or 312H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Lower Division  

C S 314  Data Structures  3 Hours  

4 Lecture Hours  0 Lab 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. Computer Science 314 and 314H may not both be counted. Three lecture hours and one discussion hour a week for one semester.
Pre/Corequisites: Computer Science 312 or 312H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Lower Division  

C S 314H  Data Structures: Honors  3 Hours  

4 Lecture Hours  0 Lab 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. Computer Science 314 and 314H may not both be counted. Three lecture hours and one discussion hour a week for one semester.
Core Curriculum: 093  
Pre/Corequisites: Consent of honors faculty advisor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Lower Division  

C S 118H  Introduction to Computer Science Research: Honors  1 Hour  

1 Lecture Hours  0 Lab Hours  
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. Computer Science 118H and 178H (Topic: Intro to Comp Sci Rsch: Honors) may not both be counted. One lecture hour a week for one semester.
Pre/Corequisites: Consent of instructor.  
Restrictions: Restricted to computer science honors students.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Lower Division  

C S 119S, 219S, 319S, 419S, 519S, 619S, 719S, 819S, 919S  Topics in Computer Science  1-9 Hours  

0 Lecture Hours  0 Lab 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.
Grading: Student Option  
Repeatable for credit: May be repeated for credit when the topics vary.  

C S 120N, 220N, 320N  Topics in Computer Science for Nonmajors  1-3 Hours  

1,2,3 Lecture Hours  0 Lab Hours  
May not be counted toward a degree in computer science. For each semester hour of credit earned, one lecture hour a week for one semester.
Pre/Corequisites: Varies with the topic.  
Grading: Student Option  
Repeatable for credit: May be repeated for credit when the topics vary.  
Academic Level: Upper Division  

C S 323E  Elements of Scientific Computing  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 323E and 323H may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: The following with a grade of at least C-: Computer Science 313E, 314, or 314H; and Mathematics 408C, 408K, 408N, 408Q or 408R.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 323H  Elements of Scientific Computing: Honors  3 Hours  

3 Lecture Hours  0 Lab 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. May not be counted toward a degree in computer science. Computer Science 323E and 323H may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 303E, 312, or 312H with a grade of at least C-; credit with a grade of at least C- or registration for Mathematics 340L, or 341; and consent of the honors director.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 324E  Elements of Graphics and Visualization  3 Hours  

3 Lecture Hours  0 Lab 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. May not be counted toward a degree in computer science. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 313E, 314, or 314H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 326E  Elements of Networking  3 Hours  

3 Lecture Hours  0 Lab 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. May not be counted toward a degree in computer science. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 313E, 314, or 314H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 327E  Elements of Databases  3 Hours  

3 Lecture Hours  0 Lab 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. May not be counted toward a degree in computer science. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 313E, 314, or 314H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 328E  Topics in Elements of Computing  3 Hours  

3 Lecture Hours  0 Lab Hours  
May not be counted toward a degree in computer science. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 303E, 312, or 312H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: May be repeated for credit when the topics vary.  
Academic Level: Upper Division  

C S 429  Computer Organization and Architecture  4 Hours  

6 Lecture Hours  0 Lab 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. Computer Science 429 and 429H may not both be counted. Four lecture hours and two discussion hours a week for one semester.
Pre/Corequisites: The following courses with a grade of at least C-: Computer Science 311 or 311H; and Computer Science 314 or 314H.  
Restrictions: Restricted to computer science majors.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 329E  Advanced Topics in Elements of Computing  3 Hours  

3 Lecture Hours  0 Lab Hours  
May not be counted toward a degree in computer science. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 313E, 314, or 314H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: May be repeated for credit when the topics vary.  
Academic Level: Upper Division  

C S 429H  Computer Organization and Architecture: Honors  4 Hours  

6 Lecture Hours  0 Lab 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. Only one of the following may be counted: Computer Science 310, 310H, 429, 429H. Four lecture hours and two discussion hours a week for one semester.
Pre/Corequisites: The following coursework with a grade of at least C- in each: Computer Science 311 or 311H; Computer Science 314 or 314H.  
Restrictions: Restricted to computer science majors.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 129S, 229S, 329S, 429S, 529S, 629S, 729S, 829S, 929S  Topics in Computer Science  1-9 Hours  

0 Lecture Hours  0 Lab 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.
Grading: Student Option  
Repeatable for credit: May be repeated for credit when the topics vary.  

C S 329W  Cooperative Computer Science  3 Hours  

0 Lecture Hours  40 Lab 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. The student must repeat the course each work period and must take it twice to receive credit toward the degree; at least one of these registrations must be during a fall or spring semester. However, no more than three semester hours may be counted toward the major requirement. The student's first registration must be on the pass/fail basis; the second must be on the letter-grade basis. Forty laboratory hours a week for one semester.
Pre/Corequisites: The following coursework with a grade of at least C- in each: Computer Science 311 or 311H; 314 or 314H; 429, or 429H; and consent of the undergraduate adviser.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 330E  Elements of Software Engineering I  3 Hours  

3 Lecture Hours  0 Lab Hours  
Explore software engineering using various programming languages. Use tools to improve the quality of software development. Computer Science 329E (Topic: Elems of Software Engineering) and 330E may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 313E, 314, or 314H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 330F  F1/10 Autonomous Driving  3 Hours  

3 Lecture Hours  0 Lab 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). Only one of the following may be counted: Computer Science 330F, 330H, 378 (Topic: F1/10 Autonomous Driving), 378H (Topic: F1/10 Autonomous Driving: Hon). Three lecture hours a week for one semester.
Pre/Corequisites: For computer science majors, Computer Science 429 or 429H with a grade of at least C-; for others, consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 330H  F1/10 Autonomous Driving: Honors  3 Hours  

3 Lecture Hours  0 Lab 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). Only one of the following may be counted: Computer Science 330F, 330H, 378 (Topic: F1/10 Autonomous Driving), 378H (Topic: F1/10 Autonomous Driving: Hon). Three lecture hours a week for one semester.
Pre/Corequisites: For computer science majors, Computer Science 429 or 429H with a grade of at least C-; for others, consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 331  Algorithms and Complexity  3 Hours  

4 Lecture Hours  0 Lab Hours  
An investigation of algorithmic paradigms: divide and conquer, dynamic programming, greedy algorithms, graph algorithms, randomized algorithms, undecidability, NP-completeness, and approximation algorithms. Only one of the following may be counted: Computer Science 331, 331H, 378 (Topic: Algorithms and Complexity). Three lecture hours and one discussion hour a week for one semester.
Pre/Corequisites: The following coursework with a grade of at least C-: Computer Science 429 or 429H; Mathematics 362K or Statistics and Data Sciences 321; and credit with a grade of at least C- or registration for: Mathematics 340L, 341, or Statistics and Data Sciences 329C.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 331E  Elements of Software Engineering II  3 Hours  

3 Lecture Hours  0 Lab Hours  
Explore advanced aspects of software engineering using various programming languages. Use tools to improve the quality of software development. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 330E with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 331H  Algorithms and Complexity: Honors  3 Hours  

4 Lecture Hours  0 Lab 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. Only one of the following may be counted: Computer Science 331, 331H, 378 (Topic: Algorithms and Complexity). Three lecture hours and one hour of discussion a week for one semester.
Pre/Corequisites: The following coursework with a grade of at least C-: Computer Science 429 or 429H; Mathematics 362K or Statistics and Data Sciences 321; and credit with a grade of at least C- or registration for: Mathematics 340L, 341, or Statistics and Data Sciences 329C.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 333E  Elements of Data Integration  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 329E (Topic: Elements of Data Integration) and 333E may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 327E with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 333P  Science of High-Performance Computing  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 333P and 378 (Topic: Prog Correctness/Performnc) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: The following coursework with a grade of at least C-: Computer Science 429 or 429H; Mathematics 408D, 408M or 427L and Mathematics 340L, 341, or Statistics and Data Sciences 329C.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 234  Technical Writing  2 Hours  

2 Lecture Hours  0 Lab Hours  
Application of techniques and strategies of effective technical writing, and of conventions used in documents such as letters, memos, proposals, abstracts, and reports. Computer Science 234 and 178 (Topic: Technical Writing) may not both be counted. May not be counted toward the number of hours in computer science required for the Bachelor of Science in Computer Science degree. Two lecture hours a week for one semester.
Pre/Corequisites: Computer Science 429, or 429H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 337  Theory in Programming Practice  3 Hours  

4 Lecture Hours  0 Lab 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. Computer Science 337 and 337H may not both be counted. Three lecture hours and one discussion hour a week for one semester.
Pre/Corequisites: The following coursework with a grade of at least C-: Computer Science 429 or 429H; and 331, 331H, 341, or 341H.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 337H  Theory in Programming Practice: Honors  3 Hours  

4 Lecture Hours  0 Lab 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. Computer Science 337 and 337H may not both be counted. Three lecture hours and one discussion hour a week for one semester.
Pre/Corequisites: The following coursework with a grade of at least C-: Computer Science 429 or 429H; and 331, 331H, 341, or 341H.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 439  Principles of Computer Systems  4 Hours  

6 Lecture Hours  0 Lab 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. Computer Science 439 and 439H may not both be counted. Four lecture hours and two discussion hours a week for one semester.
Pre/Corequisites: Computer Science 429, or 429H with a grade of at least C-.  
Restrictions: Restricted to computer science majors.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 439H  Principles of Computer Systems: Honors  4 Hours  

6 Lecture Hours  0 Lab 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. Computer Science 439 and 439H may not both be counted. Four lecture hours and two discussion hours a week for one semester.
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least C-.  
Restrictions: Restricted to computer science majors.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 340D  Debugging Verifying Programs  3 Hours  

3 Lecture Hours  0 Lab Hours  
Basic concepts of formal methods with emphasis on using and applying mathematical logic plus finite state systems theory to program verification and debugging. Computer Science 340D and 378 (Topic: Debugging and Verifying Programs) may not both be counted. Three lecture hours a week for one semester.
Core Curriculum: 010  
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 341  Automata Theory  3 Hours  

3 Lecture Hours  0 Lab Hours  
An introduction to the formal study of automata and of related formal languages with applications in computer science. Computer Science 341 and 341H may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 341H  Automata Theory: Honors  3 Hours  

3 Lecture Hours  0 Lab Hours  
An introduction to the formal study of automata and of related formal languages with applications in computer science. Computer Science 341 and 341H may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least C-, and consent of the honors director.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 342  Neural Networks  3 Hours  

3 Lecture Hours  0 Lab 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. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 342C  Computational Brain  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 342C and 378 (Topic: Computational Brain) may not both be counted. Three lecture hours a week for one semester
Pre/Corequisites: The following coursework with a grade of at least C- in each: Computer Science 429 or 429H; and Mathematics 362K or Statistics and Data Sciences 321.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 342S  Introduction to Speech and Audio Processing  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 342S and 378 (Topic: Intro to Speech and Audio Proces) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: The following coursework with a grade of at least C-: Computer Science 429 or 429H; Mathematics 362K or Statistics and Data Sciences 321; and Mathematics 340L, 341, or Statistics and Data Sciences 329C.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 343  Artificial Intelligence  3 Hours  

3 Lecture Hours  0 Lab 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. Only one of the following may be counted: Computer Science 343, 343H, 378H (Topic: Artificial Intelligence: Honors). Three lecture hours a week for one semester.
Pre/Corequisites: The following coursework with a grade of at least C- in each: Computer Science 429 or 429H; and Mathematics 362K or Statistics and Data Sciences 321.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 343H  Artificial Intelligence: Honors  3 Hours  

3 Lecture Hours  0 Lab 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. Only one of the following may be counted: Computer Science 343, 343H, 378H (Topic: Artificial Intelligence: Honors). Three lecture hours a week for one semester.
Pre/Corequisites: The following coursework with a grade of at least C- in each: Computer Science 429 or 429H; and Mathematics 362K or Statistics and Data Sciences 321.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 344M  Autonomous Multiagent Systems  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 344M and 378 (Topic: Autonomous Multiagent Systems) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: The following coursework with a grade of at least C- in each: Computer Science 429 or 429H; and Mathematics 362K or Statistics and Data Sciences 321.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 344R  Robotics  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 344R and 378 (Topic: Robotics) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: The following coursework with a grade of at least C- in each: Computer Science 429 or 429H; and Mathematics 362K or Statistics and Data Sciences 321.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 345  Programming Languages  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 345 and 345H may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 345H  Programming Languages: Honors  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 345 and 345H may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 346  Cryptography  3 Hours  

3 Lecture Hours  0 Lab Hours  
A theoretical introduction to cryptography. Subjects include private key cryptosystems, public key cryptosystems, digital signatures, secret sharing schemes, and the necessary mathematical background. Three lecture hours a week for one semester.
Pre/Corequisites: The following coursework with a grade of at least C-: Computer Science 429 or 429H; 331, 331H, 341, or 341H; and credit with a grade of at least C- or registration for: Mathematics 340L, 341, or Statistics and Data Sciences 329C.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 347  Data Management  3 Hours  

3 Lecture Hours  0 Lab Hours  
Concepts of database design and database system implementation. Data models, query processing, database design theory, crash recovery, concurrent control, and distributed databases. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 349  Contemporary Issues in Computer Science  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 349 and 378 (Topic: Contemporary Issues in Computer Science) may not both be counted. Three lecture hours a week for one semester.
Core Curriculum: 010  
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 350C  Advanced Computer Architecture  3 Hours  

3 Lecture Hours  0 Lab 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. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 350F  Operating Systems  3 Hours  

3 Lecture Hours  0 Lab 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. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 439 or 439H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 350M  Energy-Efficient Computing  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 350M and 378 (Topic: Energy Efficient Computing) may not both be counted. The equivalent of three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 439 or 439H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 353  Theory of Computation  3 Hours  

3 Lecture Hours  0 Lab 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. Three lecture hours a week for one semester.
Pre/Corequisites: The following coursework with a grade of at least C-: Computer Science 331, 331H, 341 or 341H and Mathematics 408D, 408M or 427L.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 354  Computer Graphics  3 Hours  

3 Lecture Hours  0 Lab 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. Only one of the following may be counted: Computer Science 354, 354H, 378H (Topic: Computer Graphics Honors). Three lecture hours a week for one semester.
Pre/Corequisites: The following courses with a grade of at least a C-: Computer Science 439 or 439H and Mathematics 340L or Statistics and Data Sciences 329C or Mathematics 341.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 354H  Computer Graphics: Honors  3 Hours  

3 Lecture Hours  0 Lab 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. Only one of the following may be counted: Computer Science 354, 354H, 378H (Topic: Computer Graphics Honors). Three lecture hours a week for one semester.
Pre/Corequisites: The following courses with a grade of at least C-: Computer Science 439 or 439H and Mathematics 340L or Statistics and Data Sciences 329C or Mathematics 341.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 354P  Game Programming Paradigms  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 354P and 378 (Topic: Game Programming Paradigms) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least a C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 354R  Game Technology  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 354R and 378 (Topic: Game Technology) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: The following coursework with a grade of at least C-: Computer Science 439 or 439H.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 354S  Game Development Capstone: Two-Dimensional Games  3 Hours  

3 Lecture Hours  0 Lab 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. Only one of the following may be counted: Arts and Entertainment Technologies 376, Computer Science 354S, 378 (Topic: Game Devel Capstone: 2D Games), Music 354S, 376J (Topic: Game Devel Capstone: 2D Games), Theatre and Dance 354T (Topic 17), Radio-Television-Film 344N (Topic 6), 344T (Topic 1). Three lecture hours a week for one semester.
Same as: MUS 354S, T D 354T.17  
Pre/Corequisites: For computer science majors, Computer Science 354, 354H, 354P, or 354R with a grade of at least C-; for others, consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 354T  Game Development Capstone: Three-Dimensional Games  3 Hours  

3 Lecture Hours  0 Lab 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. Only one of the following may be counted: Computer Science 354T, Music 354T, 376J (Topic: Game Development Capstone: 3D Games), Theatre and Dance 354T (Topic 18). Three lecture hours a week for one semester.
Same as: MUS 354T, T D 354T.18  
Pre/Corequisites: For computer science majors, Computer Science 354, 354H, 354P, or 354R with a grade of at least C-; for others, consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 356  Computer Networks  3 Hours  

3 Lecture Hours  0 Lab Hours  
Introduction to computer networks with emphasis on the Internet. Three lecture hours a week for one semester.
Pre/Corequisites: The following coursework with a grade of at least C- in each: Computer Science 439 or 439H; and Mathematics 362K or Statistics and Data Sciences 321.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 356R  Introduction to Wireless Networks  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 356R and 378 (Topic: Introduction to Wireless Networks) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 358H  Introduction to Quantum Information Science: Honors  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 358H and 378H (Topic: Intro to Quantum Info Sci: Hon) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 331 or 331H with a grade of a least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 360V  Virtualization  3 Hours  

3 Lecture Hours  0 Lab Hours  
Examine the latest in virtualization technologies such as virtual machines, containers and serverless computing. Computer Science 360V and 378 (Topic: Virtualization) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 439 or 439H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 361  Introduction to Computer Security  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 361 and 378 (Topic: Introduction to Security) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 361C  Information Assurance and Security  3 Hours  

3 Lecture Hours  0 Lab Hours  
Selected subjects from the broad area of information assurance, including computer security, communications security, operations security, and risk assessment. Computer Science 361C and 378 (Topic: Information Assurance and Security) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 361S  Network Security and Privacy  3 Hours  

3 Lecture Hours  0 Lab 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. Only one of the following may be counted: Computer Science 361S, 378 (Topic: Network Security and Privacy), 378H (Topic: Network Security/Privacy:Hon). Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 439 or 439H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 363G  Geometric Foundations of Machine Learning  3 Hours  

3 Lecture Hours  0 Lab 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. Only one of the following may be counted: Computer Science 363G, 378 (Topic: Geometric Fndtns Of ML), 378 (Topic: Geometric Fndtns Of Data Sci). The equivalent of three lecture hours a week for one semester.
Pre/Corequisites: The following coursework with a grade of at least C-: Computer Science 429 or 429H; Mathematics 408D, 408M or 427L; Mathematics 362K or Statistics and Data Sciences 321; and Mathematics 340L, 341, or Statistics and Data Sciences 329C.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 363H  Principles of Machine Learning I: Honors  3 Hours  

3 Lecture Hours  0 Lab Hours  
Introduction to machine learning: data processing, regression, classification, clustering, dimensionality reduction, and neural networks. Only one of the following may be counted: Computer Science 363D, 363H, 363M, 378 (Topic: Introduction to Data Mining), 378H (Topic: Intro to Data Mining: Honors). Three lecture hours a week for one semester.
Pre/Corequisites: The following coursework with a grade of at least C-: Computer Science 429 or 429H; Mathematics 362K or Statistics and Data Sciences 321; and Mathematics 340L, 341, or Statistics and Data Sciences 329C.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 363M  Principles of Machine Learning I  3 Hours  

3 Lecture Hours  0 Lab Hours  
Introduction to machine learning: data processing, regression, classification, clustering, dimensionality reduction, and neural networks. Only one of the following may be counted: Computer Science 363D, 363H, 363M, 378 (Topic: Introduction to Data Mining), 378H (Topic: Intro to Data Mining: Honors). Three lecture hours a week for one semester.
Pre/Corequisites: The following coursework with a grade of at least C-: Computer Science 429 or 429H; Mathematics 408D, 408M or 427L; Mathematics 362K or Statistics and Data Sciences 321; and Mathematics 340L, 341, or Statistics and Data Sciences 329C.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 364M  Principles of Machine Learning II  3 Hours  

3 Lecture Hours  0 Lab Hours  
Introduction to advanced machine learning: optimization methods, statistical inference and probabilistic modeling, generalization, and uncertainty quantification. Computer Science 364D and 364M may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Upper-division standing and Computer Science 363D, 363M or 363H, and 331 or 331H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 365T  Trustworthy Machine Learning  3 Hours  

3 Lecture Hours  0 Lab 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. Only one of the following may be counted: Computer Science 365T, 378 (Topic: Trustworthy Machine Learning), 378 (Topic: Safe and Ethical AI). Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 331 or 331H with a grade of a least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 367  Numerical Methods  3 Hours  

3 Lecture Hours  0 Lab 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. Only one of the following may be counted: Computer Science 367, Mathematics 368K, Physics 329. Three lecture hours a week for one semester.
Pre/Corequisites: The following coursework with a grade of at least C-: Computer Science 429 or 429H; Mathematics 408D, 408M, or 427L; and Mathematics 340L, 341, or Statistics and Data Sciences 329C.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 369  Systems Modeling  3 Hours  

3 Lecture Hours  0 Lab Hours  
Introduction to performance modeling, with emphasis on computer systems. Modeling methodology, queueing network models, simulation, analysis of results. Three lecture hours a week for one semester.
Pre/Corequisites: The following coursework with a grade of at least C-: Computer Science 429 or 429H; and Mathematics 362K or Statistics and Data Sciences 321.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 370  Undergraduate Reading and Research  3 Hours  

3 Lecture Hours  0 Lab Hours  
Supervised study of selected problems in computer science, by individual arrangement with supervising instructor. Computer Science 370 and 370F may not both be counted. No more than three semester hours may be counted toward a degree in computer science. The equivalent of three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least C-, and consent of the undergraduate adviser.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 370F  Undergraduate Reading and Research: Writing  3 Hours  

3 Lecture Hours  0 Lab Hours  
Supervised study of selected problems in computer science, by individual arrangement with supervising instructor. Computer Science 370 and 370F may not both be counted. No more than three semester hours may be counted toward a degree in computer science. The equivalent of three lecture hours a week for one semester.
Core Curriculum: 010  
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least C-, and consent of the undergraduate adviser.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 371D  Distributed Computing  3 Hours  

3 Lecture Hours  0 Lab 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. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 439 or 439H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 371G  Generic Programming and the STL  3 Hours  

3 Lecture Hours  0 Lab Hours  
Computer Science 371G and 378 (Topic: Generic Programming and the STL) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 371L  iOS Mobile Computing  3 Hours  

3 Lecture Hours  0 Lab Hours  
Overview of mobile computing with an emphasis on developing applications for the iOS operating system. Computer Science 371L and 378 (Topic: iOS Mobile Computing) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Credit with a grade of at least C- or registration in Computer Science 439 or 439H.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 371M  Mobile Computing  3 Hours  

3 Lecture Hours  0 Lab Hours  
Overview of mobile computing. Emphasis on mobile application development. Use of mobile capabilities: sensors, location, telephony, and multimedia. Computer Science 371M and 378 (Topic: Mobile Computing) may not both be counted. Three lecture hours a week for one semester
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least C-; and credit with a grade of at least C- or registration for Computer Science 439 or 439H.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 371N  Natural Language Processing  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 371N and 378 (Topic: Natural Language Processing) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: For students seeking a Bachelor of Science in Linguistics and Computer Science, Linguistics 371 and Computer Science 331 or 331H with a grade of at least C-; for all others, Computer Science 331 or 331H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 371P  Object-Oriented Programming  3 Hours  

3 Lecture Hours  0 Lab Hours  
Programming using class derivation, inheritance, and dynamic polymorphism. Application of a simple object-oriented design methodology to several software development problems. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 371R  Information Retrieval and Web Search  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Sciences 371R and 378 (Topic: Intelligent Information Retrieval and Web Search) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 371S  Object-Oriented Software Engineering  3 Hours  

3 Lecture Hours  0 Lab Hours  
Object-oriented formulations of software systems as executable specifications, object-oriented analysis, design of software architectures, translation of high-level specification systems. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 373  Software Engineering  3 Hours  

3 Lecture Hours  0 Lab Hours  
Introduction to current knowledge, techniques, and theories in large software system design and development. Three lecture hours a week for one semester.
Core Curriculum: 010  
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 173G  Social Impact Capstone  1 Hour  

1 Lecture Hours  0 Lab Hours  
Supervised study of social-impact related problems in computer science. One lecture hour a week for one semester.
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least C- and consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 373S  Software Design  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 373S and 378 (Topic: Software Design) may not both be counted. Three lecture hours a week for one semester
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 374H  Advanced Undergraduate Supervised Research: Honors  3 Hours  

3 Lecture Hours  0 Lab Hours  
Engage in directed research in areas of computer science, under supervision of a faculty member, leading to a presentation. Computer Science 374H and 378H (Topic: Adv Undgr Supervised Research) may not both be counted. The equivalent of three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least C-, and consent of the undergraduate advisor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 374L  Longhorn Startup  3 Hours  

3 Lecture Hours  0 Lab 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. Only one of the following may be counted: Computer Science 374L, 378 (Topic: Longhorn Startup), Electrical and Computer Engineering 364E, Electrical Engineering 377E, Engineering Studies 377E, Management 337 (Topic 2), 372T (Topic 2). Three lecture hours a week for one semester.
Core Curriculum: 010  
Pre/Corequisites: Upper-division standing, Computer Science 429 or 429H with a grade of at least C-, and consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 174S  Longhorn Startup Seminar  1 Hour  

2 Lecture Hours  0 Lab Hours  
An introduction to the world of startups through the experiences of people who have built successes and learned from failures. Only one of the following may be counted: Biomedical Engineering 177T, 277T, 377T (Topic: Longhorn Startup Seminar), Computer Science 178, 174S, 378 (Topic: Longhorn Startup Seminar), Engineering Studies 177, 277, 377 (Topic: Longhorn Startup Seminar), 177, 277, 377 (Topic 1), Fine Arts 160, 260, 360 (Topic: Longhorn Startup Seminar), 170, 270, 370, Management 137, 237, 337 (Topic: Longhorn Startup Seminar), Communication 125, 225, 325 (Topic: Longhorn Startup Seminar). Two lecture hours a week for one semester.
Pre/Corequisites: Upper-division standing, Computer Science 429 or 429H with a grade of at least C-, and consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 375  Compilers  3 Hours  

3 Lecture Hours  0 Lab 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. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 376  Computer Vision  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 376 and 378 (Topic: Computer Vision) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: The following coursework with a grade of at least C-: Computer Science 429 or 429H; Mathematics 340L, 341, or Statistics and Data Sciences 329C; and Mathematics 362K or Statistics and Data Sciences 321.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 377  Principles and Applications of Parallel Programming  3 Hours  

3 Lecture Hours  0 Lab 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. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 439 or 439H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 377P  Programming for Performance  3 Hours  

3 Lecture Hours  0 Lab Hours  
Investigation on the performance-critical features of modern computer architectures and how applications can take advantage of them to obtain high performance. Computer Science 377P and 378 (Topic: Programming for Performance) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Computer Science 429 or 429H with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 178, 378  Undergraduate Topics in Computer Science  1,3 Hours  

1,3 Lecture Hours  0 Lab Hours  
Only one of the following may be counted unless the topics vary: Computer Science 178, 378, 178H, 378H. For each semester hour of credit earned, the equivalent of one lecture hour a week for one semester.
Pre/Corequisites: Upper-division standing; additional prerequisites vary with the topic.  
Grading: Student Option  
Repeatable for credit: May be repeated for credit when the topics vary.  
Academic Level: Upper Division  
Topic 1: Quantum Computing II. Introduction to quantum algorithms and programming. Computer Science 378 (Topic: Quantum Computing-FRI) and 378 (Topic 1) may not both be counted.
  

C S 178.1, 378.1  Quantum Computing II  1,3 Hours  

1,3 Lecture Hours  0 Lab Hours  
Introduction to quantum algorithms and programming. Computer Science 378 (Topic: Quantum Computing-FRI) and 378 (Topic 1) may not both be counted.
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 178H, 378H  Undergraduate Topics in Computer Science: Honors  1,3 Hours  

1,3 Lecture Hours  0 Lab Hours  
Only one of the following may be counted unless the topics vary: Computer Science 178, 378, 178H, 378H. For each semester hour of credit earned, one lecture hour a week for one semester.
Pre/Corequisites: Computer Science 429 (or 310) or 429H (or 310H) with a grade of at least C-.  
Grading: Student Option  
Repeatable for credit: May be repeated for credit when the topics vary.  
Academic Level: Upper Division  

C S 379C  History and Computer Science Capstone  3 Hours  

3 Lecture Hours  0 Lab 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. History 379C and Computer Science 379C may not both be counted. History 379C and 378W may not both be counted. Three lecture hours a week for one semester.
Same as: HIS 379C  
Pre/Corequisites: Computer Science 439 or 439H with a grade of at least C- and consent of History+CS faculty advisor or History 320W and twelve semester hours of coursework in history.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 379H  Computer Science Honors Thesis  3 Hours  

3 Lecture Hours  0 Lab Hours  
Conduct directed research in areas of computer science leading to an honors thesis. The equivalent of three lecture hours a week for one semester, by arrangement with a faculty member.
Core Curriculum: 010  
Pre/Corequisites: The following coursework with a grade of at least C- in each: Computer Science 311, or 311H; Computer Science 314, or 314H; Computer Science 429, or 429H; Mathematics 408C, 408K, or 408N; nine additional semester hours of upper-division coursework in computer science; and consent of the student's research supervisor and the departmental honors adviser.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 379N  Neuroscience and Computer Science Capstone  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 379N and Neuroscience 379N may not both be counted. Three lecture hours a week for one semester.
Same as: NEU 379N  
Pre/Corequisites: Computer Science 439 or 439H with a grade of at least C- and consent of Neuroscience+CS faculty advisor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Upper Division  

C S 380C  Compilers  3 Hours  

3 Lecture Hours  0 Lab Hours  
Basics of static analysis and transformation techniques; exploration in depth of one aspect of compilation and optimization. Computer Science 380C and 395T (Topic: Compilers) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing; Computer Science 375 are recommended.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 380D  Distributed Computing I  3 Hours  

3 Lecture Hours  0 Lab 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. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 380I  Structure and Implementation of Modern Programming Languages  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 380I and 395T (Topic: SIMPL) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing; and extensive experience programming in Java emphasizing the use, augmentation, refactoring, and integration of pre-existing components; prior courses in programming languages, assembly language, compilers, computer architecture, and automata theory are helpful but not required.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 380J  Operating Systems Implementation  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 380J and 395T (Topic: Operating Systems Implementation) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing; and an undergraduate course in operating systems, networking, or distributed systems, or consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 380L  Advanced Operating Systems  3 Hours  

3 Lecture Hours  0 Lab Hours  
Study of the formal structure, design principles, organization, implementation, and performance analysis of multiprogramming and/or multiprocessor computer systems. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing, and consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 380N  Systems Modeling  3 Hours  

3 Lecture Hours  0 Lab 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. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing and an undergraduate course in probability theory.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 380P  Parallel Systems  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 380P and 395T (Topic: Parallel Systems) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 380S  Theory and Practice of Secure Systems  3 Hours  

3 Lecture Hours  0 Lab Hours  
Survey of modern security, designed to introduce the basic techniques used in the design and analysis of secure systems. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing and prior undergraduate coursework in computer architecture and operating systems.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 380V  Virtualization  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 380V and 395T (Topic: Virtualization) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing and coursework in operating systems and computer architecture.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 381K  Artificial Intelligence  3 Hours  

3 Lecture Hours  0 Lab 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. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing, and Computer Science 351 or consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 381S  Spoken Language Technologies  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 381S and 395T (Topic: Spoken Language Technologies) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 381V  Visual Recognition  3 Hours  

3 Lecture Hours  0 Lab Hours  
Subjects include fundamental representations, learning approaches, matching-based algorithms, human activity models for video, and large-scale recognition. Computer Science 381V and 395T (Topic: Visual Recognition) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing; a background in basic computer vision and machine learning is recommended.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 382M  Advanced Computer Architecture  3 Hours  

3 Lecture Hours  0 Lab Hours  
Algorithms and their realizations, special techniques for coding, addressing, and control; integration of computer units; relations between programming and design considerations. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 383C  Numerical Analysis: Linear Algebra  3 Hours  

3 Lecture Hours  0 Lab Hours  
Survey of numerical methods in linear algebra: floating-point computation, solution of linear equations, least squares problems, algebraic eigenvalue problems. Only one of the following may be counted: Computational Science, Engineering, and Mathematics 383C, Computer Science 383C, Mathematics 383E, Statistics and Data Sciences 393C. Three lecture hours a week for one semester.
Same as: CSE 383C, M 383E, SDS 393C  
Pre/Corequisites: Graduate standing; Computer Science 367 or Mathematics 368K; and Mathematics 340L, 341, or consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 383D  Numerical Analysis: Interpolation, Approximation, Quadrature, and Differential Equations  3 Hours  

3 Lecture Hours  0 Lab Hours  
Survey of numerical methods for interpolation, functional approximation, integration, and solution of differential equations. Only one of the following may be counted: Computational Science, Engineering, and Mathematics 383D, Computer Science 383D, Mathematics 383F, Statistics and Data Sciences 393D. Three lecture hours a week for one semester.
Same as: CSE 383D, M 383F, SDS 393D  
Pre/Corequisites: Graduate standing; Computational Science, Engineering, and Mathematics 383C, Computer Science 383C, Mathematics 383E, or Statistics and Data Sciences 393C; and Mathematics 427K and 365C, or consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 384G  Computer Graphics  3 Hours  

3 Lecture Hours  0 Lab 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. Computational Science, Engineering, and Mathematics 382G and Computer Science 384G may not both be counted. Three lecture hours a week for one semester.
Same as: CSE 382G  
Pre/Corequisites: Graduate standing; and Computer Science 354 or another introductory course in computer graphics, or equivalent background and consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 384M  Multimedia Systems  3 Hours  

3 Lecture Hours  0 Lab 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. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing; and either Computer Science 356 or 380D and 380L.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 384P  Physical Simulation of Computer Graphics  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 384P and 395T (Topic: Physical Simulation) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing; and an introductory course in computer graphics, or equivalent background and consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 384R  Geometric Modeling and Visualization  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 384R and 395T (Topic: Graphics, Modeling, and Visualization) may not both be counted; Computer Science 384R and 395T (Topic: Multiscale Bio-Modeling and Visualization) may not both be counted; Computer Science 384R and 395T (Topic: Physically Based Geometric Modeling) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing, and Computer Science 354 or consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 384V  Introduction to VLSI Design  3 Hours  

3 Lecture Hours  0 Lab Hours  
Basic techniques required to design custom negative metal oxide semiconductor digital integrated circuits. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing, and consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 386C  Dependable Computing Systems  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 386C and 395T (Topic: Dependable Computing Systems) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing, and an undergraduate course in operating systems or consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 386D  Database Systems  3 Hours  

3 Lecture Hours  0 Lab 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. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing and Computer Science 347 and 375.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 386K  Numerical Treatment of Differential Equations  3 Hours  

3 Lecture Hours  0 Lab Hours  
The analysis of numerical methods for solving ordinary and partial differential equations. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing; and , Computer Science 383D, Mathematics 368K, 383F, or consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 386L  Programming Languages  3 Hours  

3 Lecture Hours  0 Lab 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. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing, and Computer Science 345 or consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 386M  Communication Networks  3 Hours  

3 Lecture Hours  0 Lab Hours  
Switching techniques, network and protocol architectures, communication protocols, resource allocation problems, internetworking, design and analysis methods. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 386P  Android Programming  3 Hours  

3 Lecture Hours  0 Lab Hours  
Study Android APIs and learn to build significant Android applications. Explore general principles of software engineering and mobile app development. Computer Science 386P and 395T (Topic: Android Programming) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing and knowledge of programming, object-oriented terminology, and Java.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 386S  Network Protocol Security  3 Hours  

3 Lecture Hours  0 Lab Hours  
Techniques and research in Internet and network security. Computer Science 386S and 395T (Topic: Secure Network Protocols) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 386W  Wireless Networking  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 386W and 395T (Topic: Wireless Networking) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 388  Natural Language Processing  3 Hours  

3 Lecture Hours  0 Lab 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. Only one of the following may be counted: Artificial Intelligence 388, Computer Science 388, Data Science 388, 395T (topic: Natural Language Processing) Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing, and a course in artificial intelligence or consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 388C  Combinatorics and Graph Theory  3 Hours  

3 Lecture Hours  0 Lab Hours  
Counting, matching theory, extremal set theory, Ramsey theory, probabilistic method, linear algebra method, coding theory. Applications to computer science, including randomized algorithms. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing, and consent of instructor. An understanding of elementary proof and counting techniques is assumed.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 388D  Data-Driven Algorithm Design  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 388D and 395T (Topic: Data-Driven Algorithm Design) may not both be counted. Three hours a week for one semester
Pre/Corequisites: Graduate standing and knowledge of undergraduate algorithms and complexity, and at least one graduate course in theoretical computer science. Prior knowledge in randomized algorithms and machine learning.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 388E  Approximation Algorithms and Complexity  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 388E and 395T (Topic: Approximtn Algorthms/Complexty) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing and knowledge of undergraduate-level algorithms and complexity.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 388F  Automata and Formal Languages  3 Hours  

3 Lecture Hours  0 Lab Hours  
Formal grammars, languages and related classes of automata, language hierarchies, operations on languages, decidability, related complexity issues, closure properties, other classes of automata. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing, and consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 388G  Algorithms: Techniques and Theory  3 Hours  

3 Lecture Hours  0 Lab Hours  
Explore advanced subjects in algorithm design and analysis including algorithmic paradigms, data structures, maximum flow, randomized algorithms, NP-completeness, and approximation algorithms. Data Science 388G and Computer Science 388G may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing and knowledge of algorithmic paradigms and discrete mathematics.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 388H  Cryptography  3 Hours  

3 Lecture Hours  0 Lab 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. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing, and Computer Science 353 or consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 388J  Optimization  3 Hours  

3 Lecture Hours  0 Lab Hours  
Explore the background on convex sets and functions, linear programming, convex programming, and iterative first-order and second-order methods. Only one of the following may be counted: Artificial Intelligence 388J, Computer Science 388J, 395T (Topic: Optimization). Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 388K  Online Learning and Optimization  3 Hours  

3 Lecture Hours  0 Lab 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. Only one of the following may be counted: Artificial Intelligence 388K, Computer Science 388K, 395T (Topic: Online Lrng/Optimization). Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 388L  Introduction to Mathematical Logic  3 Hours  

3 Lecture Hours  0 Lab 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. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing and experience in abstract mathematical thinking.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 388M  Communication Complexity  3 Hours  

3 Lecture Hours  0 Lab Hours  
Covers the most important models of communication complexity and their applications, including recent research results and various open problems. Computer Science 388M and 395T (Topic: Communication Complexity) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 388P  Parallel Algorithms  3 Hours  

3 Lecture Hours  0 Lab Hours  
Theory of parallel computation: Parallel algorithm design and analysis on shared memory machines; parallel complexity; other models of parallel computation; lower bounds. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing; and Computer Science 388G, or consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 388Q  Quantum Information Science  3 Hours  

3 Lecture Hours  0 Lab 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. Computer science 388Q and 395T (Topic: Quantum Information Science) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing; and coursework in linear algebra and some exposure to classical algorithms and programming; and an understanding of complex numbers and linear algebra: vector spaces, bases, eigenvalues, rank, inner product, etc; previous exposure to quantum mechanics is not required.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 388R  Randomized Algorithms  3 Hours  

3 Lecture Hours  0 Lab Hours  
The design and analysis of efficient randomized algorithms. Computer Science 388R and 395T (Topic: Randomized Algorithms) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 388S  Formal Semantics and Verification  3 Hours  

3 Lecture Hours  0 Lab 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. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing and consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 388T  Theory of Computation  3 Hours  

3 Lecture Hours  0 Lab Hours  
Examine polynomial hierarchy, circuit lower bounds, randomized computation, approximability, communication complexity, pseudorandom generators, and probabilistically checkable proofs. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing; and a course in computational complexity or theory of computation, or equivalent background and consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 388U  Planning, Search, and Reasoning Under Uncertainty  3 Hours  

3 Lecture Hours  0 Lab 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. Only one of the following may be counted: Artificial Intelligence 388U, Computer Science 388U, 395T (Topic: Planning Search and Reasoning). Three hours a week for one semester
Pre/Corequisites: Graduate standing; and knowledge of undergraduate data structures, algorithms, and complexity; and prior knowledge in probability theory or statistics.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 389C  Continuous Algorithms  3 Hours  

3 Lecture Hours  0 Lab Hours  
Explore the design and analysis of algorithms for continuous spaces, focusing on optimization, numerical linear algebra, sampling, and applications to machine learning. Computer Science 389C and 395T (Topic: Continuous Algorithms) may not both be counted. The equivalent of three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing and a strong background in algorithms, real analysis, probability, and linear algebra.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 389L  Automated Logical Reasoning  3 Hours  

3 Lecture Hours  0 Lab 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. Only one of the following may be counted: Computer Science 389L, 395T (Topic: Automated Logical Reasoning), Artificial Intelligence 389L. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 389M  Principles of Object-Oriented Software Technology  3 Hours  

3 Lecture Hours  0 Lab 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. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing, Computer Science 371S or the equivalent, and consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 389R  Recursion and Induction I  3 Hours  

3 Lecture Hours  0 Lab 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. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 390D  Distributed Computing II  3 Hours  

3 Lecture Hours  0 Lab 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. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing and Computer Science 380D.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 390S  Sublinear Algorithms  3 Hours  

3 Lecture Hours  0 Lab Hours  
Study algorithms that can process very large data sets, with a focus on streaming algorithms, compressed sensing, and property testing. Computer Science 390S and 395T (Topic: Sublinear Algorithms) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing and knowledge of algorithms, probability, and linear algebra.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 391D  Data Mining: A Mathematical Perspective  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 391D and 395T (Topic: Data Mining: A Statistical Learning Perspective) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing, and Mathematics 341 or the equivalent.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 391K  Artificial Intelligence II  3 Hours  

3 Lecture Hours  0 Lab Hours  
Advanced course in artificial intelligence. Topics include planning, probabilistic reasoning, truth maintenance, abduction, model-based diagnosis, and speech recognition. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing, and Computer Science 381K or equivalent knowledge of artificial intelligence and LISP.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 391L  Machine Learning  3 Hours  

3 Lecture Hours  0 Lab 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. Only one of the following may be counted: Artificial Intelligence 391L, Computer Science 391L, Data Science 391L. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing, and Computer Science 381K or equivalent knowledge of artificial intelligence and LISP.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 391M  Case Studies in Machine Learning  3 Hours  

3 Lecture Hours  0 Lab 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. Only one of the following may be counted: Artificial Intelligence 395T (Topic: Case Studies/Machine Learn), 391M, Computer Science 395T (Topic: Case Studies/Machine Learn), 391M. Three lecture hours a week for one semester
Pre/Corequisites: Graduate standing.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 391R  Robot Learning  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 391R and 395T (Topic: Robot Learning) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing, and experience in machine learning and computer vision.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 392C  Methods and Techniques for Parallel Programming  3 Hours  

3 Lecture Hours  0 Lab 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. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing and consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 392F  Automated Software Design  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 392F and 395T (Topic: Feature-Oriented Programming) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing, and a basic knowledge of Java, compilers and grammars, and object-oriented design methods.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 393C  Agent-Based Electronic Commerce  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 393C and 395T (Topic: Agent-Based Electronic Commerce) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 393D  Topics in Numerical Analysis  3 Hours  

3 Lecture Hours  0 Lab 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. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing and consent of instructor.  
Grading: Student Option  
Repeatable for credit: May be repeated for credit when the topics vary.  
Academic Level: Doctoral  

C S 393N  Numerical Solution of Elliptic Partial Differential Equations  3 Hours  

3 Lecture Hours  0 Lab Hours  
The numerical solution of large systems of linear algebraic equations arising in the solution of elliptic partial differential equations by discretization methods. Computational Science, Engineering and Mathematics 393N and Mathematics 393N may not both be counted. Three lecture hours a week for one semester.
Same as: M 393N  
Pre/Corequisites: Graduate standing; and Computational Science, Engineering, and Mathematics 383K , Computer Science 386K, Mathematics 387C, or consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 393P  Program Synthesis  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 393P and 395T (Topic: Program Synthesis) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing, and undergrad-level expertise in algorithms and discrete mathematics and the ability to program.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 393R  Autonomous Robots  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 393R and 395T (Topic: Autonomous Robots) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 394C  Algorithms for Computational Biology  3 Hours  

3 Lecture Hours  0 Lab 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. Computer Science 394C and 395T (Topic: Algorithms for Computational Biology) may not both be counted. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 394D  Deep Learning  3 Hours  

3 Lecture Hours  0 Lab 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. Only one of the following may be counted: Artificial Intelligence 394D, Computer Science 394D, Data Science 394D, 395T (Topic: Deep Learning). Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing, and experience in artificial intelligence and machine learning.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 394F  Knowledge Representation and Reasoning  3 Hours  

3 Lecture Hours  0 Lab Hours  
Surveys the research and practice of building knowledge systems, including knowledge representation, automated reasoning, knowledge acquisition, and explanation generation. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing; and Computer Science 381K or the equivalent or consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 394N  Neural Networks  3 Hours  

3 Lecture Hours  0 Lab 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. Only one of the following may be counted: Computer Science 394N, Neuroscience 394N, 394P (Topic: Neural Networks). Three lecture hours a week for one semester.
Same as: NEU 394N  
Pre/Corequisites: Graduate standing.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 394P  Automatic Programming  3 Hours  

3 Lecture Hours  0 Lab 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. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing. Computer Science 375 and 381K are recommended.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 394R  Reinforcement Learning: Theory and Practice  3 Hours  

3 Lecture Hours  0 Lab Hours  
Introduces the theory and practice of modern reinforcement learning, with emphasis on temporal difference learning algorithms. Only one of the following may be counted: Artificial Intelligence 394R, Computer Science 394R, Data Science 394R, 395T (topic: Reinforcement Learning) Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 195, 295, 395  Topics in Conference Course  1-3 Hours  

1,2,3 Lecture Hours  0 Lab Hours  
Offered on the credit/no credit basis only. For each semester hour of credit earned, one lecture hour a week for one semester.
Pre/Corequisites: Graduate standing and consent of instructor.  
Grading: Credit No Credit  
Repeatable for credit: May be repeated for credit when the topics vary.  
Academic Level: Doctoral  

C S 195L, 295L, 395L  Topics in Conference Course  1-3 Hours  

1,2,3 Lecture Hours  0 Lab Hours  
For each semester hour of credit earned, one lecture hour a week for one semester.
Pre/Corequisites: Graduate standing and consent of instructor.  
Grading: Student Option  
Repeatable for credit: May be repeated for credit when the topics vary.  
Academic Level: Doctoral  

C S 195T, 395T  Topics in Computer Science  1,3 Hours  

1,3 Lecture Hours  0 Lab Hours  
From eight to fifteen topics are offered each semester. For each semester hour of credit earned, the equivalent of one lecture hour a week for one semester.
Pre/Corequisites: Graduate standing; additional prerequisites vary with the topic.  
Grading: Student Option  
Repeatable for credit: May be repeated for credit when the topics vary.  
Academic Level: Doctoral  
Topic 1: Parallel Computations.

Topic 9: Introduction to Ethical AI and Robotics. 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. Additional prerequisite: Graduate standing or consent of instructor.

Topic 10: Foundational Techniques of Machine Learning and Data Sciences. 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. Only one of the following may be counted: Computer Science 395T (Topic 10), 395T (Topic: Fdtnl Tchnq Mchn Lrng/Data Sci), Mathematics 393C (Topic: Fdtnl Tchnq Mchn Lrng/Data Sci), Computational Science, Engineering, and Mathematics 382M, 383M.
  

C S 195T.1, 395T.1  Parallel Computations  1,3 Hours  

1,3 Lecture Hours  0 Lab Hours  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 195T.10, 395T.10  Foundational Techniques of Machine Learning and Data Sciences  1,3 Hours  

1,3 Lecture Hours  0 Lab 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. Only one of the following may be counted: Computer Science 395T (Topic 10), 395T (Topic: Fdtnl Tchnq Mchn Lrng/Data Sci), Mathematics 393C (Topic: Fdtnl Tchnq Mchn Lrng/Data Sci), Computational Science, Engineering, and Mathematics 382M, 383M.
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 195T.9, 395T.9  Introduction to Ethical AI and Robotics  1,3 Hours  

1,3 Lecture Hours  0 Lab 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.
Pre/Corequisites: Graduate standing or consent of instructor.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 396  Research Practice and Experience  3 Hours  

3 Lecture Hours  0 Lab 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. May not be counted toward a master's degree in computer science. Individual instruction.
Pre/Corequisites: Graduate standing.  
Restrictions: Open only to those in their first two years as graduate students in computer science.  
Grading: Credit No Credit  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 396M  Advanced Networking Protocols  3 Hours  

3 Lecture Hours  0 Lab Hours  
Topics include routing, multiple access, internetworking, security, performance models, and verification methods. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing.  
Grading: Student Option  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 698  Thesis  6 Hours  

3 Lecture Hours  0 Lab Hours  
The equivalent of three lecture hours a week for two semesters.
Pre/Corequisites: For 698A, graduate standing in computer science and consent of the graduate adviser; for 698B, Computer Science 698A.  
Grading: Credit No Credit  
Repeatable for credit: No  
Academic Level: Master's  

C S 398T  Supervised Teaching in Computer Science  3 Hours  

3 Lecture Hours  0 Lab Hours  
Supervised teaching experience, and seminar focused on curriculum construction and teaching methods. Three lecture hours a week for one semester.
Pre/Corequisites: Graduate standing and appointment as a teaching assistant.  
Grading: Credit No Credit  
Repeatable for credit: No  
Academic Level: Doctoral  

C S 399W, 699W, 999W  Dissertation  3,6,9 Hours  

0 Lecture Hours  0 Lab Hours  
Pre/Corequisites: Admission to candidacy for the doctoral degree.  
Grading: Credit No Credit  
Repeatable for credit: Yes (Unlimited)  
Academic Level: Doctoral