Departmental Advisors
Undergraduate Studies Office
Vicki Jackson
MEB 3190
Graduate Studies Office
Jill Wilson
MEB 3190
Departmental Notes
For course descriptions and pre-requisite information click on the subject column next to the appropriate catalog number.
THIS DEPARTMENT ENFORCES UNDERGRADUATE PREREQUISITES. Please note that the registration system may not factor in transfer work when determining if prerequisites have been met. If you are unable to register for a course and think you have met the prerequisite(s), please contact an advisor from this department to inquire about obtaining a permission code. You may be administratively dropped from a course if the prerequisite has not been met.
Attention: Classroom assignments may change between the time you
register and when classes begin. Please check your class schedule for the latest classroom location
information before attending class.
CS 1400 - 001 Intro Comp Programming
This course requires registration for a lab and/or discussion section. Students will be automatically registered for this lecture section when registering for the pertinent lab and/or discussion section. Students may take CS 1400 or CS 1420 as a their first CS course. For a guide on choosing a course, see https://handbook.cs.utah.edu/2021-2022/Prospective_Students/choosing_between_1030_1400_1420.php.
CS 1400 - 001 Intro Comp Programming
- Class Number:
- Instructor: BROWN, NOELLE
- Component: Lecture
- Type: In Person
- Units: 4.0
- Requisites: Yes
- Wait List: No
- Seats Available: 146
This course requires registration for a lab and/or discussion section. Students will be automatically registered for this lecture section when registering for the pertinent lab and/or discussion section. Students may take CS 1400 or CS 1420 as a their first CS course. For a guide on choosing a course, see https://handbook.cs.utah.edu/2021-2022/Prospective_Students/choosing_between_1030_1400_1420.php.
CS 1400 - 003 Intro Comp Programming
CS 1400 - 003 Intro Comp Programming
- Class Number: 11410
- Instructor: BROWN, NOELLE
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 16
CS 1400 - 004 Intro Comp Programming
CS 1400 - 004 Intro Comp Programming
- Class Number: 11411
- Instructor: BROWN, NOELLE
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 17
CS 1400 - 005 Intro Comp Programming
CS 1400 - 005 Intro Comp Programming
- Class Number: 11412
- Instructor: BROWN, NOELLE
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 14
CS 1400 - 006 Intro Comp Programming
CS 1400 - 006 Intro Comp Programming
- Class Number: 11413
- Instructor: BROWN, NOELLE
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 23
CS 1400 - 007 Intro Comp Programming
CS 1400 - 007 Intro Comp Programming
- Class Number: 11414
- Instructor: BROWN, NOELLE
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 16
CS 1410 - 001 Object-Oriented Prog
This course requires registration for a lab and/or discussion section. Students will be automatically registered for this lecture section when registering for the pertinent lab and/or discussion section.
CS 1410 - 001 Object-Oriented Prog
- Class Number:
- Instructor: MARTIN, TRAVIS B
- Component: Lecture
- Type: In Person
- Units: 4.0
- Requisites: Yes
- Wait List: No
- Seats Available: 70
This course requires registration for a lab and/or discussion section. Students will be automatically registered for this lecture section when registering for the pertinent lab and/or discussion section.
CS 1410 - 003 Object-Oriented Prog
CS 1410 - 003 Object-Oriented Prog
- Class Number: 11420
- Instructor: MARTIN, TRAVIS B
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 0
CS 1410 - 004 Object-Oriented Prog
CS 1410 - 004 Object-Oriented Prog
- Class Number: 11421
- Instructor: MARTIN, TRAVIS B
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 0
CS 1410 - 005 Object-Oriented Prog
CS 1410 - 005 Object-Oriented Prog
- Class Number: 12256
- Instructor: MARTIN, TRAVIS B
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 0
CS 1410 - 006 Object-Oriented Prog
CS 1410 - 006 Object-Oriented Prog
- Class Number: 11422
- Instructor: MARTIN, TRAVIS B
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 0
CS 1410 - 007 Object-Oriented Prog
CS 1410 - 007 Object-Oriented Prog
- Class Number: 11423
- Instructor: MARTIN, TRAVIS B
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 0
CS 1410 - 008 Object-Oriented Prog
CS 1410 - 008 Object-Oriented Prog
- Class Number: 11424
- Instructor: MARTIN, TRAVIS B
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 3
CS 1410 - 009 Object-Oriented Prog
CS 1410 - 009 Object-Oriented Prog
- Class Number: 11425
- Instructor: MARTIN, TRAVIS B
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 7
CS 1420 - 001 Accel Obj-Orient Prog
This course requires registration for a lab and/or discussion section. Students will be automatically registered for this lecture section when registering for the pertinent lab and/or discussion section. Students may take CS 1400 or CS 1420 as a their first CS course. For a guide on choosing a course, seehttps://handbook.cs.utah.edu/2024-2025/CS/Prospective_Students/choosing_between_1400_1420.php
CS 1420 - 001 Accel Obj-Orient Prog
- Class Number:
- Instructor: JONES, BEN
- Component: Lecture
- Type: In Person
- Units: 4.0
- Requisites: Yes
- Wait List: No
- Seats Available: 155
This course requires registration for a lab and/or discussion section. Students will be automatically registered for this lecture section when registering for the pertinent lab and/or discussion section. Students may take CS 1400 or CS 1420 as a their first CS course. For a guide on choosing a course, seehttps://handbook.cs.utah.edu/2024-2025/CS/Prospective_Students/choosing_between_1400_1420.php
CS 1420 - 003 Accel Obj-Orient Prog
CS 1420 - 003 Accel Obj-Orient Prog
- Class Number: 4796
- Instructor: JONES, BEN
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 20
CS 1420 - 004 Accel Obj-Orient Prog
CS 1420 - 004 Accel Obj-Orient Prog
- Class Number: 4797
- Instructor: JONES, BEN
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 18
CS 1420 - 005 Accel Obj-Orient Prog
CS 1420 - 005 Accel Obj-Orient Prog
- Class Number: 4798
- Instructor: JONES, BEN
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 23
CS 1420 - 006 Accel Obj-Orient Prog
CS 1420 - 006 Accel Obj-Orient Prog
- Class Number: 4799
- Instructor: JONES, BEN
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 19
CS 1420 - 007 Accel Obj-Orient Prog
CS 1420 - 007 Accel Obj-Orient Prog
- Class Number: 4800
- Instructor: JONES, BEN
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 15
CS 1810 - 001 Intro to Comp Systems
CS 1810 - 001 Intro to Comp Systems
- Class Number:
- Instructor: PARKER, ERIN
- Component: Lecture
- Type: In Person
- Units: 3.0
- Wait List: No
- Seats Available: 35
CS 1810 - 002 Intro to Comp Systems
CS 1810 - 002 Intro to Comp Systems
- Class Number: 14908
- Instructor: PARKER, ERIN
- Component: Laboratory
- Type: In Person
- Units: --
- Wait List: No
- Seats Available: 11
CS 1810 - 003 Intro to Comp Systems
CS 1810 - 003 Intro to Comp Systems
- Class Number: 14893
- Instructor: PARKER, ERIN
- Component: Laboratory
- Type: In Person
- Units: --
- Wait List: No
- Seats Available: 4
CS 2100 - 001 Discrete Structures
This course requires registration for a lab and/or discussion section. Students will be automatically registered for this lecture section when registering for the pertinent lab and/or discussion section.
CS 2100 - 001 Discrete Structures
- Class Number:
- Component: Lecture
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Fees: $20.00
- Seats Available: 44
This course requires registration for a lab and/or discussion section. Students will be automatically registered for this lecture section when registering for the pertinent lab and/or discussion section.
CS 2420 - 001 Intro Alg & Data Struct
This course requires registration for a lab section. Students will be automatically registered for this lecture section when registering for the pertinent lab section.
CS 2420 - 001 Intro Alg & Data Struct
CS 3011 - 001 Industry Forum
CS 3011 - 001 Industry Forum
- Class Number: 5306
- Instructor: WIESE, Jason
- Component: Lecture
- Type: In Person
- Units: 1.0
- Requisites: Yes
- Wait List: No
- Seats Available: 38
CS 3090 - 001 Ethics in Computing
CS 3090 - 001 Ethics in Computing
- Class Number: 12892
- Instructor: BROWN, NOELLE
- Component: Lecture
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 17
CS 3100 - 001 Models Of Computation
The course fee covers digital course materials through the Inclusive Access program. Students may request to opt out here: https://portal.verba.io/utah/login
CS 3100 - 001 Models Of Computation
- Class Number: 10307
- Instructor: WANG, HAITAO
- Component: Lecture
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Fees: $45.65
- Seats Available: 0
The course fee covers digital course materials through the Inclusive Access program. Students may request to opt out here: https://portal.verba.io/utah/login
CS 3130 - 001 Eng Prob Stats
CS 3130 - 001 Eng Prob Stats
- Class Number: 6544
- Instructor: Zhe, Shandian
- Component: Lecture
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 159
CS 3200 - 001 Intro Sci Comp
CS 3200 - 001 Intro Sci Comp
- Class Number: 4813
- Instructor: BERZINS, MARTIN
- Component: Lecture
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 42
CS 3500 - 001 Software Practice
This course requires registration for a lab and/or discussion section. Students will be automatically registered for this lecture section when registering for the pertinent lab and/or discussion section.
CS 3500 - 001 Software Practice
- Class Number:
- Component: Lecture
- Type: In Person
- Units: 4.0
- Requisites: Yes
- Wait List: No
- Seats Available: 101
This course requires registration for a lab and/or discussion section. Students will be automatically registered for this lecture section when registering for the pertinent lab and/or discussion section.
CS 3505 - 001 Software Practice II
This course requires registration for a lab and/or discussion section. Students will be automatically registered for this lecture section when registering for the pertinent lab and/or discussion section.
CS 3505 - 001 Software Practice II
- Class Number:
- Instructor: HEISLER, ERIC
- Component: Lecture
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 37
This course requires registration for a lab and/or discussion section. Students will be automatically registered for this lecture section when registering for the pertinent lab and/or discussion section.
CS 3505 - 002 Software Practice II
CS 3505 - 002 Software Practice II
- Class Number: 4815
- Instructor: HEISLER, ERIC
- Component: Discussion
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 1
CS 3505 - 003 Software Practice II
CS 3505 - 003 Software Practice II
- Class Number: 4816
- Instructor: HEISLER, ERIC
- Component: Discussion
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 0
CS 3505 - 004 Software Practice II
CS 3505 - 004 Software Practice II
- Class Number: 4817
- Instructor: HEISLER, ERIC
- Component: Discussion
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 0
CS 3505 - 005 Software Practice II
CS 3505 - 005 Software Practice II
- Class Number: 4818
- Instructor: HEISLER, ERIC
- Component: Discussion
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 0
CS 3505 - 006 Software Practice II
CS 3505 - 006 Software Practice II
- Class Number: 5025
- Instructor: HEISLER, ERIC
- Component: Discussion
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 0
CS 3505 - 007 Software Practice II
CS 3505 - 007 Software Practice II
- Class Number: 6430
- Instructor: HEISLER, ERIC
- Component: Discussion
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 0
CS 3505 - 008 Software Practice II
CS 3505 - 008 Software Practice II
- Class Number: 13601
- Instructor: HEISLER, ERIC
- Component: Discussion
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 6
CS 3540 - 001 Design Human Center Sys
CS 3540 - 001 Design Human Center Sys
- Class Number: 13213
- Instructor: WIESE, Jason
- Component: Lecture
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 52
CS 3550 - 001 Web Software Dev I
CS 3550 - 001 Web Software Dev I
- Class Number: 18975
- Instructor: JOHNSON, DAVID
- Component: Lecture
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: Yes
- Seats Available: -1
CS 3700 - 001 Digital System Design
Section 2 belongs to this lecture. This course requires registration for a lab and/or discussion section. Students will be automatically registered for this lecture section when registering for the pertinent lab and/or discussion section. The course fee covers digital course materials through the Inclusive Access program. Students may request to opt out here: https://portal.verba.io/utah/login
CS 3700 - 001 Digital System Design
- Class Number:
- Instructor: GARCIA, LUIS
- Component: Lecture
- Type: In Person
- Units: 4.0
- Requisites: Yes
- Wait List: No
- Fees: $105.88
- Seats Available: 10
Section 2 belongs to this lecture. This course requires registration for a lab and/or discussion section. Students will be automatically registered for this lecture section when registering for the pertinent lab and/or discussion section. The course fee covers digital course materials through the Inclusive Access program. Students may request to opt out here: https://portal.verba.io/utah/login
CS 3700 - 002 Digital System Design
This class meets in MEB 3133.
CS 3700 - 002 Digital System Design
- Class Number: 5050
- Instructor: GARCIA, LUIS
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 10
This class meets in MEB 3133.
CS 3810 - 001 Computer Organization
CS 3810 - 001 Computer Organization
- Class Number: 7333
- Instructor: BALASUBRAMONIAN, RAJEEV
- Component: Seminar
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 173
CS 3960 - 001 Human-Centered Data Management
This course will cover recent trends and practices in data management with a particular focus on human-centered aspects. We will emphasizes the central role of humans in data management. The course will cover: spreadsheet systems, data cleaning and transformation systems, notebook-centric analysis tools, explanation and provenance systems, data discovery systems, approximate query processing systems, speech and natural language querying systems, text and video analysis systems, semi-structured data systems. The emphasis will be on a mix of human-centric concerns, interface ideas, and scalable data processing ideas with a focus towards the end user. Topics will include NoSQL and other structured data systems, data systems usability and accessibility tools such as visual query languages, speech-based query languages, query by example, etc. The course will cover best practices for user interface (UI) design for data-management systems, user interactions, user modeling, and user experience (UX). The course will also cover recent tools and techniques for enhancing data quality such data cleaning, wrangling, transformation, meta-data management, and tools and techniques for data discovery, exploration, visualization, debugging, and data provenance. The course will have an emphasis on building usable tools for data analysis tasks and how data systems should be designed to assist their users in computation and analysis. The pre-requisite is CS 3500.
CS 3960 - 001 Human-Centered Data Management
- Class Number: 13039
- Instructor: FARIHA, ANNA
- Component: Special Topics
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 0
This course will cover recent trends and practices in data management with a particular focus on human-centered aspects. We will emphasizes the central role of humans in data management. The course will cover: spreadsheet systems, data cleaning and transformation systems, notebook-centric analysis tools, explanation and provenance systems, data discovery systems, approximate query processing systems, speech and natural language querying systems, text and video analysis systems, semi-structured data systems. The emphasis will be on a mix of human-centric concerns, interface ideas, and scalable data processing ideas with a focus towards the end user. Topics will include NoSQL and other structured data systems, data systems usability and accessibility tools such as visual query languages, speech-based query languages, query by example, etc. The course will cover best practices for user interface (UI) design for data-management systems, user interactions, user modeling, and user experience (UX). The course will also cover recent tools and techniques for enhancing data quality such data cleaning, wrangling, transformation, meta-data management, and tools and techniques for data discovery, exploration, visualization, debugging, and data provenance. The course will have an emphasis on building usable tools for data analysis tasks and how data systems should be designed to assist their users in computation and analysis. The pre-requisite is CS 3500.
CS 3992 - 002 Pre-Thesis/Clinic/Proj
CS 3992 - 002 Pre-Thesis/Clinic/Proj
- Class Number: 16043
- Instructor: PATWARI, NEAL
- Component: Seminar
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 12
CS 4000 - 001 Senior Capstone Design
CS 4000 - 001 Senior Capstone Design
- Class Number: 7850
- Instructor: DE ST GERMAIN, JOHN
- Instructor: WANG, FENGJIAO
- Component: Lecture
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 4
CS 4150 - 001 Algorithms
CS 4150 - 001 Algorithms
- Class Number: 4847
- Instructor: MARTIN, TRAVIS B
- Component: Lecture
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 41
CS 4400 - 001 Computer Systems
This course requires registration for a lab and/or discussion section. Students will be automatically registered for this lecture section when registering for the pertinent lab and/or discussion section.
CS 4400 - 001 Computer Systems
- Class Number:
- Instructor: REGEHR, JOHN
- Component: Lecture
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: Yes
- Fees: $41.18
- Seats Available: 63
This course requires registration for a lab and/or discussion section. Students will be automatically registered for this lecture section when registering for the pertinent lab and/or discussion section.
CS 4400 - 002 Computer Systems
CS 4400 - 002 Computer Systems
- Class Number: 8383
- Instructor: REGEHR, JOHN
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: Yes
- Seats Available: 22
CS 4400 - 003 Computer Systems
CS 4400 - 003 Computer Systems
- Class Number: 8384
- Instructor: REGEHR, JOHN
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: Yes
- Seats Available: 0
CS 4400 - 004 Computer Systems
CS 4400 - 004 Computer Systems
- Class Number: 8385
- Instructor: REGEHR, JOHN
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: Yes
- Seats Available: 0
CS 4400 - 005 Computer Systems
CS 4400 - 005 Computer Systems
- Class Number: 8386
- Instructor: REGEHR, JOHN
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: Yes
- Seats Available: 18
CS 4400 - 006 Computer Systems
CS 4400 - 006 Computer Systems
- Class Number: 12283
- Instructor: REGEHR, JOHN
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: Yes
- Seats Available: 8
CS 4400 - 007 Computer Systems
CS 4400 - 007 Computer Systems
- Class Number: 13605
- Instructor: REGEHR, JOHN
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: Yes
- Seats Available: -1
CS 4400 - 008 Computer Systems
CS 4400 - 008 Computer Systems
- Class Number: 14552
- Instructor: REGEHR, JOHN
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 15
CS 4440 - 001 Computer Security
CS 4470 - 001 Compilers
CS 4470 - 001 Compilers
- Class Number: 18984
- Instructor: GREENMAN, BENJAMIN
- Component: Lecture
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 13
CS 4480 - 001 Computer Networks
CS 4480 - 001 Computer Networks
- Class Number: 5640
- Instructor: VAN DER MERWE, Jacobus
- Component: Lecture
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: Yes
- Fees: $36.71
- Seats Available: 78
CS 4500 - 001 Senior Capstone Project
CS 4500 - 001 Senior Capstone Project
- Class Number: 4841
- Instructor: BEAN, DAVID
- Instructor: DE ST GERMAIN, H. James 'Jim'
- Instructor: LEX, ALEXANDER
- Instructor: STUTSMAN, Ryan
- Component: Lecture
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 12
CS 4530 - 001 Mobile App Programming
CS 4530 - 001 Mobile App Programming
- Class Number: 8379
- Instructor: JONES, BEN
- Component: Lecture
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: Yes
- Seats Available: 107
CS 4550 - 001 Web Software Dev II
CS 4550 - 001 Web Software Dev II
- Class Number: 14558
- Instructor: WOOD, AARON
- Component: Lecture
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 51
CS 4960 - 001 Theory of Machine Learning
Learning algorithms are ubiquitous in our daily lives, but as it turns out, reasoning about them can be very challenging. In this course, we will study some of the fundamental notions in ML such as learnability and generalization. We will also study optimization algorithms, which are the backbone of modern ML. Finally, we will look at some modern (and not so modern) architectures used in learning and discuss how we can reason about them, their robustness, etc. A couple of notes on pre-requisites and logistics: the course will assume a background in calculus, probability, and linear algebra. Some knowledge of implementing common ML algorithms will help, though it is not required.
CS 4960 - 001 Theory of Machine Learning
- Class Number: 11877
- Instructor: BHASKARA, ADITYA
- Component: Special Topics
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 3
Learning algorithms are ubiquitous in our daily lives, but as it turns out, reasoning about them can be very challenging. In this course, we will study some of the fundamental notions in ML such as learnability and generalization. We will also study optimization algorithms, which are the backbone of modern ML. Finally, we will look at some modern (and not so modern) architectures used in learning and discuss how we can reason about them, their robustness, etc. A couple of notes on pre-requisites and logistics: the course will assume a background in calculus, probability, and linear algebra. Some knowledge of implementing common ML algorithms will help, though it is not required.
CS 4961 - 001 Parallel Num Software Crctness
ParFloat : Formal Reasoning and Testing Approaches Safeguarding Parallelism and Numerics Varieties in HPC and AI/ML. Prerequisites for CS 4961: CS 3100 and CS 4400, plus wanting to do cool explorations as in this book: https://smt.st/ . Today's levels of performance in high-performance computing (HPC), artificial intelligence, and machine learning (AI/ML) are being achieved through increasing usage of parallelism models (message passing, threading, tasking, etc.) and ``numerics'' (number representation schemes from hardware through libraries and applications). While performance is always the central goal in HPC and AI/ML, ignoring correctness causes significant losses of productivity: a scientist may be pulled away from doing science to debug a software issue for a month. Debugging tools – always a step behind being able to support programmer aspirations and needs – are more steps behind in HPC and AI/ML. A typical Grad or Undergrad may not have encountered these situations in core classes, and this course is designed to correct that. A recent DOE/NSF national study (https://arxiv.org/abs/2312.15640) further highlights the importance of this subject. In the first half of this course, we will discuss conceptual models such as happens-before relations (parallelism) and automatic differentiation (floating-point error). In the second half of this course, you'll be able to do a project either targeting HPC and AI/ML correctness, or use AI/ML within newer forms of correctness tools (active research area).
CS 4961 - 001 Parallel Num Software Crctness
- Class Number: 14904
- Instructor: GOPALAKRISHNAN, GANESH
- Component: Special Topics
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 19
ParFloat : Formal Reasoning and Testing Approaches Safeguarding Parallelism and Numerics Varieties in HPC and AI/ML. Prerequisites for CS 4961: CS 3100 and CS 4400, plus wanting to do cool explorations as in this book: https://smt.st/ . Today's levels of performance in high-performance computing (HPC), artificial intelligence, and machine learning (AI/ML) are being achieved through increasing usage of parallelism models (message passing, threading, tasking, etc.) and ``numerics'' (number representation schemes from hardware through libraries and applications). While performance is always the central goal in HPC and AI/ML, ignoring correctness causes significant losses of productivity: a scientist may be pulled away from doing science to debug a software issue for a month. Debugging tools – always a step behind being able to support programmer aspirations and needs – are more steps behind in HPC and AI/ML. A typical Grad or Undergrad may not have encountered these situations in core classes, and this course is designed to correct that. A recent DOE/NSF national study (https://arxiv.org/abs/2312.15640) further highlights the importance of this subject. In the first half of this course, we will discuss conceptual models such as happens-before relations (parallelism) and automatic differentiation (floating-point error). In the second half of this course, you'll be able to do a project either targeting HPC and AI/ML correctness, or use AI/ML within newer forms of correctness tools (active research area).
CS 4962 - 001 Introduction to Graph Theory
Prerequisites: Full Major Status in Computer Science, Data Science, Software Development or Mathematics and CS 2100 or Math 2200. Introduction to graph theory. Starting from the fundamentals, this course will cover essential theorems and algorithms from across the field of graphtheory. Topics will include Connectivity, Matchings, Planar Graphs, Coloring, Directed Graphs, Extremal Problems, Ramsey Theory, Random Graphs, and (time permitting) Structural Graph Theory. Where relevant, applications and algorithmic considerations, including data structures, will be highlighted.
CS 4962 - 001 Introduction to Graph Theory
- Class Number: 18966
- Instructor: Sullivan, Blair
- Component: Special Topics
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 16
Prerequisites: Full Major Status in Computer Science, Data Science, Software Development or Mathematics and CS 2100 or Math 2200. Introduction to graph theory. Starting from the fundamentals, this course will cover essential theorems and algorithms from across the field of graphtheory. Topics will include Connectivity, Matchings, Planar Graphs, Coloring, Directed Graphs, Extremal Problems, Ramsey Theory, Random Graphs, and (time permitting) Structural Graph Theory. Where relevant, applications and algorithmic considerations, including data structures, will be highlighted.
CS 4963 - 001 Instructional Design for Comp
This course is about how students learn computing, how we can design effective instruction, and how we can draw on research to help us understand both of those things. We will start with a scientific foundation of how learning happens in general, across topics. We will proceed to computing-specific instructional strategies, including for incorporating ethics, and learn a process for instructional design. The centerpiece of the course is a semester-long instructional design project on a computing topic of your choice. This course is highly interactive and collaborative: you will annotate readings with your peers, discuss ideas in class, and give each other constructive feedback on your projects. This course involves lots of writing, reading, and class participation. The 4963 and 6965 expectations will be the same except that 6965 students will be required to incorporate ethics into their instructional design projects, and will have an additional annotated bibliography assignment. Pre-requisites: CS 3540 or instructor permission and full major status in Computer Science OR Software Development
CS 4963 - 001 Instructional Design for Comp
- Class Number: 18967
- Instructor: WIESE, ELIANE S
- Component: Special Topics
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 14
This course is about how students learn computing, how we can design effective instruction, and how we can draw on research to help us understand both of those things. We will start with a scientific foundation of how learning happens in general, across topics. We will proceed to computing-specific instructional strategies, including for incorporating ethics, and learn a process for instructional design. The centerpiece of the course is a semester-long instructional design project on a computing topic of your choice. This course is highly interactive and collaborative: you will annotate readings with your peers, discuss ideas in class, and give each other constructive feedback on your projects. This course involves lots of writing, reading, and class participation. The 4963 and 6965 expectations will be the same except that 6965 students will be required to incorporate ethics into their instructional design projects, and will have an additional annotated bibliography assignment. Pre-requisites: CS 3540 or instructor permission and full major status in Computer Science OR Software Development
CS 4964 - 001 Manage Data for & with ML
This course provides a broad exploration of the practical skills essential for handling, preparing, ingesting, indexing, and analyzing large datasets for machine learning applications. Students will explore various topics, including relational databases, optimizing dataset storage, data cleansing techniques, and large-scale data processing systems (e.g., Spark). The class also covers learned indexes and large-scale data visualization. This hands-on course aims to equip participants with the knowledge and proficiency to effectively manage and analyze vast datasets for machine learning applications. The prerequisite is CS 3500.
CS 4964 - 001 Manage Data for & with ML
- Class Number: 13780
- Instructor: REZIG, EL KINDI
- Component: Special Topics
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: -2
This course provides a broad exploration of the practical skills essential for handling, preparing, ingesting, indexing, and analyzing large datasets for machine learning applications. Students will explore various topics, including relational databases, optimizing dataset storage, data cleansing techniques, and large-scale data processing systems (e.g., Spark). The class also covers learned indexes and large-scale data visualization. This hands-on course aims to equip participants with the knowledge and proficiency to effectively manage and analyze vast datasets for machine learning applications. The prerequisite is CS 3500.
CS 4992 - 001 CE Senior Thesis II
CS 4992 - 001 CE Senior Thesis II
- Class Number: 4851
- Instructor: STEVENS, KENNETH S
- Component: Special Projects
- Type: In Person
- Units: 2.0
- Requisites: Yes
- Wait List: No
- Seats Available: 20
CS 5140 - 001 Data Mining
CS 5140 - 001 Data Mining
- Class Number: 18971
- Instructor: PHILLIPS, JEFF
- Component: Lecture
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Fees: $15.00
- Seats Available: 26
CS 5460 - 001 Operating Systems
CS 5460 - 001 Operating Systems
- Class Number: 6370
- Instructor: BURTSEV, ANTON
- Component: Lecture
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: Yes
- Seats Available: 3
CS 5530 - 090 Database Systems
This is an online course, which does not have a specific meeting time or location throughout the semester. For additional information, please visit https://online.utah.edu/about-online-learning/
CS 5530 - 090 Database Systems
- Class Number: 5592
- Instructor: KOPTA, DANIEL
- Component: Lecture
- Type: Online
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 0
This is an online course, which does not have a specific meeting time or location throughout the semester. For additional information, please visit https://online.utah.edu/about-online-learning/
CS 5610 - 001 Interactive Comp Graph
CS 5610 - 001 Interactive Comp Graph
- Class Number: 7334
- Instructor: YUKSEL, CEM
- Component: Lecture
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 11
CS 5635 - 001 Vis for Scientific Data
CS 5635 - 001 Vis for Scientific Data
- Class Number: 9201
- Instructor: JOHNSON, CHRISTOPHER
- Component: Lecture
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 4
CS 5780 - 001 Embedded Sys Design
Sections 2-4 belong to this lecture. This course requires registration for a lab and/or discussion section. Students will be automatically registered for this lecture section when registering for the pertinent lab and/or discussion section.
CS 5780 - 001 Embedded Sys Design
- Class Number:
- Instructor: GAILLARDON, PIERRE-EMMANUEL J
- Component: Lecture
- Type: In Person
- Units: 4.0
- Requisites: Yes
- Wait List: Yes
- Fees: $35.00
- Seats Available: 0
Sections 2-4 belong to this lecture. This course requires registration for a lab and/or discussion section. Students will be automatically registered for this lecture section when registering for the pertinent lab and/or discussion section.
CS 5780 - 002 Embedded Sys Design
CS 5780 - 002 Embedded Sys Design
- Class Number: 6605
- Instructor: GAILLARDON, PIERRE-EMMANUEL J
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 1
CS 5780 - 003 Embedded Sys Design
CS 5780 - 003 Embedded Sys Design
- Class Number: 6606
- Instructor: GAILLARDON, PIERRE-EMMANUEL J
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 0
CS 5780 - 004 Embedded Sys Design
CS 5780 - 004 Embedded Sys Design
- Class Number: 6607
- Instructor: GAILLARDON, PIERRE-EMMANUEL J
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 1
CS 5780 - 005 Embedded Sys Design
CS 5780 - 005 Embedded Sys Design
- Class Number: 7485
- Instructor: GAILLARDON, PIERRE-EMMANUEL J
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: -1
CS 5780 - 006 Embedded Sys Design
CS 5780 - 006 Embedded Sys Design
- Class Number: 9383
- Instructor: GAILLARDON, PIERRE-EMMANUEL J
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Seats Available: 1
CS 5955 - 001 Adv Artificial Intelligence
Prerequisites: CS 4300 OR CS 5350 OR CS 5353 and Full Major Status in Computer Science OR Software Development OR Data Science This course focuses on advanced algorithms for intelligent sequential decision making with a focus on modern deep learning-based methods. The class will cover both the theory and practical details of the algorithms behind recent breakthroughs in many types of AI decision making, including game playing, robotics, recommendation systems, and large language models. Topics include bandit algorithms, Markov decision processes, partially observable Markov decision processes, reinforcement learning, imitation learning, inverse reinforcement learning, and reinforcement learning from human feedback.
CS 5955 - 001 Adv Artificial Intelligence
- Class Number: 18968
- Instructor: BROWN, DANIEL
- Component: Special Topics
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 6
Prerequisites: CS 4300 OR CS 5350 OR CS 5353 and Full Major Status in Computer Science OR Software Development OR Data Science This course focuses on advanced algorithms for intelligent sequential decision making with a focus on modern deep learning-based methods. The class will cover both the theory and practical details of the algorithms behind recent breakthroughs in many types of AI decision making, including game playing, robotics, recommendation systems, and large language models. Topics include bandit algorithms, Markov decision processes, partially observable Markov decision processes, reinforcement learning, imitation learning, inverse reinforcement learning, and reinforcement learning from human feedback.
CS 5956 - 001 Intro to Machine Learning
'C-' or better in CS 3190 Found. of Data Analysis AND CS 3500 Software Practice. Full Major status in Computer Science OR Software Development OR Data Science. This course is designed to build a groundwork for both machine learning and deep learning early on in undergraduate studies. Each lecture is grounded in practical application, using Python and machine learning libraries such as PyTorch to implement and experiment with the discussed concepts; including various training paradigms, loss functions, optimization, evaluation measurements, hyperparameter tuning, generalization, overfitting, simple neural networks, backpropagation, featurization, and more. The course will cover topics in probability and linear algebra which are fundamental to understanding machine learning basics. By the end of the course, students will be prepared to take more advanced courses to deepen their theoretical and applied knowledge of machine learning and deep learning.
CS 5956 - 001 Intro to Machine Learning
- Class Number: 19439
- Instructor: TAO, GUANHONG
- Component: Special Topics
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 60
'C-' or better in CS 3190 Found. of Data Analysis AND CS 3500 Software Practice. Full Major status in Computer Science OR Software Development OR Data Science. This course is designed to build a groundwork for both machine learning and deep learning early on in undergraduate studies. Each lecture is grounded in practical application, using Python and machine learning libraries such as PyTorch to implement and experiment with the discussed concepts; including various training paradigms, loss functions, optimization, evaluation measurements, hyperparameter tuning, generalization, overfitting, simple neural networks, backpropagation, featurization, and more. The course will cover topics in probability and linear algebra which are fundamental to understanding machine learning basics. By the end of the course, students will be prepared to take more advanced courses to deepen their theoretical and applied knowledge of machine learning and deep learning.
CS 5963 - 001 Applied S/W Secur Test
This class will prepare students to become effective software testers capable of automating vulnerability discovery in today’s large and complex software systems. This course will cover the fundamental design considerations behind today’s state-of-the-art software testing tools, and equip students with the know-how to soundly evaluate their results and effectiveness. Students will team up to target a software or system of their choice, and devise their own testing strategies to find new vulnerabilities in it, analyze their severity, and report them to its developers. Prerequisites CS 3505 and CS 4400
CS 5963 - 001 Applied S/W Secur Test
- Class Number: 14578
- Instructor: NAGY, STEFAN
- Component: Special Topics
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 6
This class will prepare students to become effective software testers capable of automating vulnerability discovery in today’s large and complex software systems. This course will cover the fundamental design considerations behind today’s state-of-the-art software testing tools, and equip students with the know-how to soundly evaluate their results and effectiveness. Students will team up to target a software or system of their choice, and devise their own testing strategies to find new vulnerabilities in it, analyze their severity, and report them to its developers. Prerequisites CS 3505 and CS 4400
CS 5968 - 001 Designing Digital Health Sys
Pre-requisites: Full Major Status in Computer Science OR Data Science. This special topics class in Human-centered Computing (HCC) will provide PhD, MS, and BS students (in Computing and other fields) with the concepts and skills to answer the question "How might digital tools augment existing healthcare processes?" Our goals in this class are threefold: 1) Understand how healthcare processes work; 2) Identify possibilities for digital tools; 3) Imagine new designs and create prototypes. Programming skills are useful but not required. We will critically evaluate research literature and build background knowledge in fields including human-computer interaction, neurology, microbiome, public health, occupational health, and medical sociology. We will work on concrete problems for health disorders like Parkinsonism, ALS, cognitive disorders, gastrointestinal disorders, chronic pain, and sleep issues. We will understand processes including clinical examination, diagnosis, treatment, self-experimentation, and clinical research. After taking this course, students will be able to develop digital tools that intervene at an appropriate point in the healthcare process in ways that benefit all stakeholders. For topics, class structure, and methods, see https://vineetp13.github.io/DesigningHealth.html
CS 5968 - 001 Designing Digital Health Sys
- Class Number: 13487
- Instructor: PANDEY, VINEET
- Component: Special Topics
- Type: In Person
- Units: 3.0
- Wait List: No
- Seats Available: 15
Pre-requisites: Full Major Status in Computer Science OR Data Science. This special topics class in Human-centered Computing (HCC) will provide PhD, MS, and BS students (in Computing and other fields) with the concepts and skills to answer the question "How might digital tools augment existing healthcare processes?" Our goals in this class are threefold: 1) Understand how healthcare processes work; 2) Identify possibilities for digital tools; 3) Imagine new designs and create prototypes. Programming skills are useful but not required. We will critically evaluate research literature and build background knowledge in fields including human-computer interaction, neurology, microbiome, public health, occupational health, and medical sociology. We will work on concrete problems for health disorders like Parkinsonism, ALS, cognitive disorders, gastrointestinal disorders, chronic pain, and sleep issues. We will understand processes including clinical examination, diagnosis, treatment, self-experimentation, and clinical research. After taking this course, students will be able to develop digital tools that intervene at an appropriate point in the healthcare process in ways that benefit all stakeholders. For topics, class structure, and methods, see https://vineetp13.github.io/DesigningHealth.html
CS 6013 - 001 MSD: Computer Systems
CS 6013 - 001 MSD: Computer Systems
- Class Number:
- Instructor: DE ST GERMAIN, JOHN
- Component: Lecture
- Type: In Person
- Units: 4.0
- Wait List: No
- Seats Available: 7
CS 6013 - 002 MSD: Computer Systems
CS 6013 - 002 MSD: Computer Systems
- Class Number: 9203
- Instructor: DE ST GERMAIN, JOHN
- Component: Laboratory
- Type: In Person
- Units: --
- Wait List: No
- Seats Available: 7
CS 6014 - 001 MSD: Netwrks & Security
CS 6014 - 001 MSD: Netwrks & Security
- Class Number:
- Instructor: FLATT, Matthew
- Component: Lecture
- Type: In Person
- Units: 4.0
- Wait List: No
- Seats Available: 7
CS 6014 - 002 MSD: Netwrks & Security
CS 6014 - 002 MSD: Netwrks & Security
- Class Number: 9205
- Instructor: FLATT, Matthew
- Component: Laboratory
- Type: In Person
- Units: --
- Wait List: No
- Seats Available: 7
CS 6015 - 001 MSD: Software Engineer
CS 6015 - 001 MSD: Software Engineer
- Class Number:
- Instructor: MAKAREM, NABIL
- Component: Lecture
- Type: In Person
- Units: 4.0
- Wait List: No
- Seats Available: 7
CS 6015 - 002 MSD: Software Engineer
CS 6015 - 002 MSD: Software Engineer
- Class Number: 9200
- Instructor: MAKAREM, NABIL
- Component: Laboratory
- Type: In Person
- Units: --
- Wait List: No
- Seats Available: 7
CS 6019 - 001 MSD Project
CS 6019 - 001 MSD Project
- Class Number: 13628
- Instructor: FLATT, Matthew
- Instructor: JONES, BEN
- Instructor: MAKAREM, NABIL
- Instructor: SHANKAR, VARUN
- Component: Lecture
- Type: In Person
- Units: 4.0
- Wait List: No
- Seats Available: 46
CS 6020 - 001 Early-Career Research
CS 6020 - 001 Early-Career Research
- Class Number: 5741
- Instructor: LEX, ALEXANDER
- Component: Lecture
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 7
CS 6140 - 001 Data Mining
CS 6140 - 001 Data Mining
- Class Number: 18972
- Instructor: PHILLIPS, JEFF
- Component: Lecture
- Type: In Person
- Units: 3.0
- Wait List: No
- Fees: $15.00
- Seats Available: 14
CS 6330 - 001 Robotics II: Control
CS 6330 - 001 Robotics II: Control
- Class Number: 6611
- Instructor: MASCARO, STEPHEN A
- Component: Lecture
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Fees: $40.00
- Seats Available: 5
CS 6350 - 001 Machine Learning
CS 6350 - 001 Machine Learning
- Class Number: 12894
- Instructor: SRIKUMAR, Vivek
- Component: Lecture
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: Yes
- Seats Available: 46
CS 6370 - 001 Motion Planning
CS 6370 - 001 Motion Planning
- Class Number: 18990
- Instructor: KUNTZ, ALAN
- Component: Lecture
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 4
CS 6460 - 001 Operating Systems
CS 6460 - 001 Operating Systems
- Class Number: 6435
- Instructor: BURTSEV, ANTON
- Component: Lecture
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 78
CS 6490 - 090 Network Security
CS 6490 - 090 Network Security
- Class Number: 10817
- Instructor: KASERA, SNEHA K
- Component: Lecture
- Type: Online
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Fees: $36.71
- Seats Available: 8
CS 6491 - 001 Software & Sys Security
CS 6610 - 001 Interactive Comp Graph
CS 6610 - 001 Interactive Comp Graph
- Class Number: 7335
- Instructor: YUKSEL, CEM
- Component: Lecture
- Type: In Person
- Units: 3.0
- Wait List: No
- Seats Available: 14
CS 6635 - 001 Vis for Scientific Data
CS 6635 - 001 Vis for Scientific Data
- Class Number: 9206
- Instructor: JOHNSON, CHRISTOPHER
- Component: Lecture
- Type: In Person
- Units: 3.0
- Wait List: No
- Seats Available: 48
CS 6660 - 001 Physics-based Animation
CS 6780 - 001 Embed Sys Design
Sections 2-4 belong to this lecture. This course requires registration for a lab and/or discussion section. Students will be automatically registered for this lecture section when registering for the pertinent lab and/or discussion section.
CS 6780 - 001 Embed Sys Design
- Class Number:
- Instructor: GAILLARDON, PIERRE-EMMANUEL J
- Component: Lecture
- Type: In Person
- Units: 4.0
- Requisites: Yes
- Wait List: No
- Fees: $35.00
- Seats Available: 4
Sections 2-4 belong to this lecture. This course requires registration for a lab and/or discussion section. Students will be automatically registered for this lecture section when registering for the pertinent lab and/or discussion section.
CS 6780 - 002 Embed Sys Design
CS 6780 - 002 Embed Sys Design
- Class Number: 6608
- Instructor: GAILLARDON, PIERRE-EMMANUEL J
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Fees: $35.00
- Seats Available: 1
CS 6780 - 004 Embed Sys Design
CS 6780 - 004 Embed Sys Design
- Class Number: 6610
- Instructor: GAILLARDON, PIERRE-EMMANUEL J
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Fees: $35.00
- Seats Available: 1
CS 6780 - 005 Embed Sys Design
CS 6780 - 005 Embed Sys Design
- Class Number: 7486
- Instructor: GAILLARDON, PIERRE-EMMANUEL J
- Component: Laboratory
- Type: In Person
- Units: --
- Requisites: Yes
- Wait List: No
- Fees: $35.00
- Seats Available: 1
CS 6953 - 001 Deep Learning Capstone
CS 6953 - 001 Deep Learning Capstone
- Class Number: 13051
- Instructor: HENDERSON, THOMAS
- Component: Practicum
- Type: In Person
- Units: 3.0
- Wait List: No
- Seats Available: 6
CS 6955 - 001 Adv Artificial Intelligence
This course focuses on advanced algorithms for intelligent sequential decision making with a focus on modern deep learning-based methods. The class will cover both the theory and practical details of the algorithms behind recent breakthroughs in many types of AI decision making, including game playing, robotics, recommendation systems, and large language models. Topics include bandit algorithms, Markov decision processes, partially observable Markov decision processes, reinforcement learning, imitation learning, inverse reinforcement learning, and reinforcement learning from human feedback.
CS 6955 - 001 Adv Artificial Intelligence
- Class Number: 18969
- Instructor: BROWN, DANIEL
- Component: Special Topics
- Type: In Person
- Units: 3.0
- Wait List: No
- Seats Available: 10
This course focuses on advanced algorithms for intelligent sequential decision making with a focus on modern deep learning-based methods. The class will cover both the theory and practical details of the algorithms behind recent breakthroughs in many types of AI decision making, including game playing, robotics, recommendation systems, and large language models. Topics include bandit algorithms, Markov decision processes, partially observable Markov decision processes, reinforcement learning, imitation learning, inverse reinforcement learning, and reinforcement learning from human feedback.
CS 6956 - 001 Probabilistic Deep Learning
This course will cover both theoretical and practical aspects of probabilistic approaches to machine learning with contemporary neutral network architectures. Example topics that may be covered include ensembles, Bayesian neural networks, variational autoencoders, normalizing flows, active learning, and diffusion networks among others.
CS 6956 - 001 Probabilistic Deep Learning
- Class Number: 11404
- Instructor: HERMANS, Tucker
- Component: Special Topics
- Type: In Person
- Units: 3.0
- Wait List: No
- Seats Available: 15
This course will cover both theoretical and practical aspects of probabilistic approaches to machine learning with contemporary neutral network architectures. Example topics that may be covered include ensembles, Bayesian neural networks, variational autoencoders, normalizing flows, active learning, and diffusion networks among others.
CS 6959 - 001 Human-Centered Data Management
CS 6959 - 001 Human-Centered Data Management
- Class Number: 16108
- Instructor: FARIHA, ANNA
- Component: Special Topics
- Type: In Person
- Units: 3.0
- Wait List: No
- Seats Available: 8
CS 6960 - 001 Theory of Machine Learning
Learning algorithms are ubiquitous in our daily lives, but as it turns out, reasoning about them can be very challenging. In this course, we will study some of the fundamental notions in ML such as learnability and generalization. We will also study optimization algorithms, which are the backbone of modern ML. Finally, we will look at some modern (and not so modern) architectures used in learning and discuss how we can reason about them, their robustness, etc. A couple of notes on pre-requisites and logistics: the course will assume a background in calculus, probability, and linear algebra. Some knowledge of implementing common ML algorithms will help, though it is not required.
CS 6960 - 001 Theory of Machine Learning
- Class Number: 11910
- Instructor: BHASKARA, ADITYA
- Component: Special Topics
- Type: In Person
- Units: 3.0
- Wait List: No
- Seats Available: 3
Learning algorithms are ubiquitous in our daily lives, but as it turns out, reasoning about them can be very challenging. In this course, we will study some of the fundamental notions in ML such as learnability and generalization. We will also study optimization algorithms, which are the backbone of modern ML. Finally, we will look at some modern (and not so modern) architectures used in learning and discuss how we can reason about them, their robustness, etc. A couple of notes on pre-requisites and logistics: the course will assume a background in calculus, probability, and linear algebra. Some knowledge of implementing common ML algorithms will help, though it is not required.
CS 6961 - 001 Parallel Num Software Crctness
ParFloat : Formal Reasoning and Testing Approaches Safeguarding Parallelism and Numerics Varieties in HPC and AI/ML. Today's levels of performance in high-performance computing (HPC), artificial intelligence, and machine learning (AI/ML) are being achieved through increasing usage of parallelism models (message passing, threading, tasking, etc.) and ``numerics'' (number representation schemes from hardware through libraries and applications). While performance is always the central goal in HPC and AI/ML, ignoring correctness causes significant losses of productivity: a scientist may be pulled away from doing science to debug a software issue for a month. Debugging tools – always a step behind being able to support programmer aspirations and needs – are more steps behind in HPC and AI/ML. A typical Grad or Undergrad may not have encountered these situations in core classes, and this course is designed to correct that. A recent DOE/NSF national study (https://arxiv.org/abs/2312.15640) further highlights the importance of this subject. In the first half of this course, we will discuss conceptual models such as happens-before relations (parallelism) and automatic differentiation (floating-point error). In the second half of this course, you'll be able to do a project either targeting HPC and AI/ML correctness, or use AI/ML within newer forms of correctness tools (active research area).
CS 6961 - 001 Parallel Num Software Crctness
- Class Number: 14913
- Instructor: GOPALAKRISHNAN, GANESH
- Component: Special Topics
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 36
ParFloat : Formal Reasoning and Testing Approaches Safeguarding Parallelism and Numerics Varieties in HPC and AI/ML. Today's levels of performance in high-performance computing (HPC), artificial intelligence, and machine learning (AI/ML) are being achieved through increasing usage of parallelism models (message passing, threading, tasking, etc.) and ``numerics'' (number representation schemes from hardware through libraries and applications). While performance is always the central goal in HPC and AI/ML, ignoring correctness causes significant losses of productivity: a scientist may be pulled away from doing science to debug a software issue for a month. Debugging tools – always a step behind being able to support programmer aspirations and needs – are more steps behind in HPC and AI/ML. A typical Grad or Undergrad may not have encountered these situations in core classes, and this course is designed to correct that. A recent DOE/NSF national study (https://arxiv.org/abs/2312.15640) further highlights the importance of this subject. In the first half of this course, we will discuss conceptual models such as happens-before relations (parallelism) and automatic differentiation (floating-point error). In the second half of this course, you'll be able to do a project either targeting HPC and AI/ML correctness, or use AI/ML within newer forms of correctness tools (active research area).
CS 6962 - 001 Introduction to Graph Theory
Introduction to graph theory. Starting from the fundamentals, this course will cover essential theorems and algorithms from across the field of graphtheory. Topics will include Connectivity, Matchings, Planar Graphs, Coloring, Directed Graphs, Extremal Problems, Ramsey Theory, Random Graphs, and (time permitting) Structural Graph Theory. Where relevant, applications and algorithmic considerations, including data structures, will be highlighted.
CS 6962 - 001 Introduction to Graph Theory
- Class Number: 18985
- Instructor: Sullivan, Blair
- Component: Special Topics
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 7
Introduction to graph theory. Starting from the fundamentals, this course will cover essential theorems and algorithms from across the field of graphtheory. Topics will include Connectivity, Matchings, Planar Graphs, Coloring, Directed Graphs, Extremal Problems, Ramsey Theory, Random Graphs, and (time permitting) Structural Graph Theory. Where relevant, applications and algorithmic considerations, including data structures, will be highlighted.
CS 6963 - 001 Applied S/W Secur Test
This class will prepare students to become effective software testers capable of automating vulnerability discovery in today’s large and complex software systems. This course will cover the fundamental design considerations behind today’s state-of-the-art software testing tools, and equip students with the know-how to soundly evaluate their results and effectiveness. Students will team up to target a software or system of their choice, and devise their own testing strategies to find new vulnerabilities in it, analyze their severity, and report them to its developers.
CS 6963 - 001 Applied S/W Secur Test
- Class Number: 14579
- Instructor: NAGY, STEFAN
- Component: Special Topics
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 8
This class will prepare students to become effective software testers capable of automating vulnerability discovery in today’s large and complex software systems. This course will cover the fundamental design considerations behind today’s state-of-the-art software testing tools, and equip students with the know-how to soundly evaluate their results and effectiveness. Students will team up to target a software or system of their choice, and devise their own testing strategies to find new vulnerabilities in it, analyze their severity, and report them to its developers.
CS 6964 - 001 Manage Data for & with ML
This course provides a broad exploration of the practical skills essential for handling, preparing, ingesting, indexing, and analyzing large datasets for machine learning applications. Students will explore various topics, including relational databases, optimizing dataset storage, data cleansing techniques, and large-scale data processing systems (e.g., Spark). The class also covers learned indexes and large-scale data visualization. This hands-on course aims to equip participants with the knowledge and proficiency to effectively manage and analyze vast datasets for machine learning applications.
CS 6964 - 001 Manage Data for & with ML
- Class Number: 13779
- Instructor: REZIG, EL KINDI
- Component: Special Topics
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 2
This course provides a broad exploration of the practical skills essential for handling, preparing, ingesting, indexing, and analyzing large datasets for machine learning applications. Students will explore various topics, including relational databases, optimizing dataset storage, data cleansing techniques, and large-scale data processing systems (e.g., Spark). The class also covers learned indexes and large-scale data visualization. This hands-on course aims to equip participants with the knowledge and proficiency to effectively manage and analyze vast datasets for machine learning applications.
CS 6965 - 001 Instructional Design for Comp
This course is about how students learn computing, how we can design effective instruction, and how we can draw on research to help us understand both of those things. We will start with a scientific foundation of how learning happens in general, across topics. We will proceed to computing-specific instructional strategies, including for incorporating ethics, and learn a process for instructional design. The centerpiece of the course is a semester-long instructional design project on a computing topic of your choice. This course is highly interactive and collaborative: you will annotate readings with your peers, discuss ideas in class, and give each other constructive feedback on your projects. This course involves lots of writing, reading, and class participation. The 4963 and 6965 expectations will be the same except that 6965 students will be required to incorporate ethics into their instructional design projects, and will have an additional annotated bibliography assignment.
CS 6965 - 001 Instructional Design for Comp
- Class Number: 18962
- Instructor: WIESE, ELIANE S
- Component: Special Topics
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 13
This course is about how students learn computing, how we can design effective instruction, and how we can draw on research to help us understand both of those things. We will start with a scientific foundation of how learning happens in general, across topics. We will proceed to computing-specific instructional strategies, including for incorporating ethics, and learn a process for instructional design. The centerpiece of the course is a semester-long instructional design project on a computing topic of your choice. This course is highly interactive and collaborative: you will annotate readings with your peers, discuss ideas in class, and give each other constructive feedback on your projects. This course involves lots of writing, reading, and class participation. The 4963 and 6965 expectations will be the same except that 6965 students will be required to incorporate ethics into their instructional design projects, and will have an additional annotated bibliography assignment.
CS 6966 - 001 Advanced Data Visualization
CS 6966 - 001 Advanced Data Visualization
- Class Number: 18963
- Instructor: PHILLIPS, BEI WANG
- Component: Special Topics
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 35
This course aims to equip students with skills for critically analyzing data and data related systems in the context of human-computer interaction (HCI) and visualization research, as well as in computer science more broadly. Via readings, projects, and discussions students will develop conceptual tools for evaluating, interpreting, and critiquing data, interfaces, and systems—critical thinking in data writ large. Relevant questions include: what is data? How do we evaluate the quality and relevance of systems for interacting with data? What biases might be inherent in these designs? To serve this goal we will explore perspectives from critical theory, science and technology studies, and HCI/VIS research (such as Data Feminism). Students will gain experience in reading, understanding, and applying ideas from other fields to problems in familiar data domains.
- Class Number: 18964
- Instructor: MCNUTT, ANDREW
- Component: Special Topics
- Type: In Person
- Units: 3.0
- Wait List: No
- Seats Available: 3
This course aims to equip students with skills for critically analyzing data and data related systems in the context of human-computer interaction (HCI) and visualization research, as well as in computer science more broadly. Via readings, projects, and discussions students will develop conceptual tools for evaluating, interpreting, and critiquing data, interfaces, and systems—critical thinking in data writ large. Relevant questions include: what is data? How do we evaluate the quality and relevance of systems for interacting with data? What biases might be inherent in these designs? To serve this goal we will explore perspectives from critical theory, science and technology studies, and HCI/VIS research (such as Data Feminism). Students will gain experience in reading, understanding, and applying ideas from other fields to problems in familiar data domains.
CS 6968 - 001 Designing Digital Health Sys
This special topics class in Human-centered Computing (HCC) will provide PhD, MS, and BS students (in Computing and other fields) with the concepts and skills to answer the question "How might digital tools augment existing healthcare processes?" Our goals in this class are threefold: 1) Understand how healthcare processes work; 2) Identify possibilities for digital tools; 3) Imagine new designs and create prototypes. Programming skills are useful but not required. We will critically evaluate research literature and build background knowledge in fields including human-computer interaction, neurology, microbiome, public health, occupational health, and medical sociology. We will work on concrete problems for health disorders like Parkinsonism, ALS, cognitive disorders, gastrointestinal disorders, chronic pain, and sleep issues. We will understand processes including clinical examination, diagnosis, treatment, self-experimentation, and clinical research. After taking this course, students will be able to develop digital tools that intervene at an appropriate point in the healthcare process in ways that benefit all stakeholders. For topics, class structure, and methods, see https://vineetp13.github.io/DesigningHealth.html
CS 6968 - 001 Designing Digital Health Sys
- Class Number: 13490
- Instructor: PANDEY, VINEET
- Component: Special Topics
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: Yes
- Seats Available: 6
This special topics class in Human-centered Computing (HCC) will provide PhD, MS, and BS students (in Computing and other fields) with the concepts and skills to answer the question "How might digital tools augment existing healthcare processes?" Our goals in this class are threefold: 1) Understand how healthcare processes work; 2) Identify possibilities for digital tools; 3) Imagine new designs and create prototypes. Programming skills are useful but not required. We will critically evaluate research literature and build background knowledge in fields including human-computer interaction, neurology, microbiome, public health, occupational health, and medical sociology. We will work on concrete problems for health disorders like Parkinsonism, ALS, cognitive disorders, gastrointestinal disorders, chronic pain, and sleep issues. We will understand processes including clinical examination, diagnosis, treatment, self-experimentation, and clinical research. After taking this course, students will be able to develop digital tools that intervene at an appropriate point in the healthcare process in ways that benefit all stakeholders. For topics, class structure, and methods, see https://vineetp13.github.io/DesigningHealth.html
CS 6969 - 001 HCC Research Methods
This course will focus on common quantitative research methods for human-centered computing, including statistics and study design, and the role of quantitative methods in mixed-methods approaches. This course complements 6540 and 6545, which focus on qualitative methods.
CS 6969 - 001 HCC Research Methods
- Class Number: 18965
- Instructor: KOGAN, MARINA
- Component: Special Topics
- Type: In Person
- Units: 3.0
- Requisites: Yes
- Wait List: No
- Seats Available: 19
This course will focus on common quantitative research methods for human-centered computing, including statistics and study design, and the role of quantitative methods in mixed-methods approaches. This course complements 6540 and 6545, which focus on qualitative methods.
Frontier AI models, such as large language models (LLMs), function as black boxes: their solutions are hidden in internal parameters rather than explicitly specified, preventing us from testing them like conventional code and from applying established safety engineering. Mechanistic interpretability aims to reverse-engineer frontier AI models by breaking their functionality into basic components—effectively writing the code for their solutions. This seminar is for anyone eager to learn mechanistic interpretability, collaboratively with others. Topics will include transformer circuits, superposition, monosemanticity, sparse autoencoders, distributed alignment search, activation patching, and narrow circuits. Each topic is explored over two weeks: the first features a detailed presentation on the core technical aspects, and the second-week shifts to a more interactive approach with a paper discussion. Expected background: A strong understanding of the transformer architecture and training stages of large language models (pretraining, instruction finetuning, alignment, finetuning).
- Class Number: 19846
- Instructor: MARASOVIC, ANA
- Component: Seminar
- Type: In Person
- Units: 1.0
- Requisites: Yes
- Wait List: No
- Seats Available: 16
Frontier AI models, such as large language models (LLMs), function as black boxes: their solutions are hidden in internal parameters rather than explicitly specified, preventing us from testing them like conventional code and from applying established safety engineering. Mechanistic interpretability aims to reverse-engineer frontier AI models by breaking their functionality into basic components—effectively writing the code for their solutions. This seminar is for anyone eager to learn mechanistic interpretability, collaboratively with others. Topics will include transformer circuits, superposition, monosemanticity, sparse autoencoders, distributed alignment search, activation patching, and narrow circuits. Each topic is explored over two weeks: the first features a detailed presentation on the core technical aspects, and the second-week shifts to a more interactive approach with a paper discussion. Expected background: A strong understanding of the transformer architecture and training stages of large language models (pretraining, instruction finetuning, alignment, finetuning).
CS 7931 - 001 Mental Health & Technology
CS 7931 - 001 Mental Health & Technology
- Class Number: 11175
- Instructor: IMEL, ZAC
- Instructor: SRIKUMAR, Vivek
- Component: Seminar
- Type: Remote Real-Time
- Units: 1.0
- Requisites: Yes
- Wait List: No
- Seats Available: 7
CS 7932 - 001 Human-Centered Computing
CS 7932 - 001 Human-Centered Computing
- Class Number: 10811
- Instructor: KOGAN, MARINA
- Component: Seminar
- Type: Remote Real-Time
- Units: 1.0
- Requisites: Yes
- Wait List: No
- Seats Available: 12
CS 7933 - 001 Graphics Seminar
CS 7934 - 001 Computer Systems Seminar
CS 7934 - 001 Computer Systems Seminar
- Class Number: 5347
- Instructor: EIDE, ERIC N
- Component: Seminar
- Type: In Person
- Units: 1.0
- Requisites: Yes
- Wait List: No
- Seats Available: 10
CS 7936 - 001 Types, Inference, & Proof Sear
CS 7936 - 001 Types, Inference, & Proof Sear
- Class Number: 20062
- Instructor: GREENMAN, BENJAMIN
- Component: Seminar
- Type: In Person
- Units: 1.0
- Requisites: Yes
- Wait List: No
- Seats Available: 12
CS 7937 - 001 Arch/VLSI
Meets in MEB 2170
CS 7937 - 001 Arch/VLSI
- Class Number: 6275
- Instructor: NAGARAJAN, VIJAYANAND
- Component: Seminar
- Type: In Person
- Units: 1.0
- Requisites: Yes
- Wait List: No
- Seats Available: 10
Meets in MEB 2170
CS 7938 - 001 Image Analysis Seminar
CS 7938 - 001 Image Analysis Seminar
- Class Number: 5527
- Instructor: JOSHI, SARANG
- Component: Seminar
- Type: In Person
- Units: 1.0
- Requisites: Yes
- Wait List: No
- Seats Available: 20
CS 7939 - 001 Robotics Seminar
CS 7939 - 001 Robotics Seminar
- Class Number: 5028
- Instructor: ZHANG, HAOHAN
- Component: Seminar
- Type: In Person
- Units: 1.0
- Requisites: Yes
- Wait List: No
- Seats Available: 7
CS 7941 - 001 Data Science Seminar
CS 7941 - 001 Data Science Seminar
- Class Number: 6441
- Instructor: BHASKARA, ADITYA
- Component: Seminar
- Type: In Person
- Units: 1.0
- Requisites: Yes
- Wait List: No
- Seats Available: 40
CS 7942 - 001 Visualization Seminar
This class meets in WEB 3780.
CS 7942 - 001 Visualization Seminar
- Class Number: 6476
- Instructor: PHILLIPS, BEI WANG
- Component: Seminar
- Type: In Person
- Units: 1.0
- Requisites: Yes
- Wait List: No
- Seats Available: 30
This class meets in WEB 3780.