| A | B | C | D | E | F | G | H | I | J | K | L | M | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | UA Computer Science and Artificial Intelligence Major Courses | |||||||||||||
2 | Not all courses are offered every semester. | |||||||||||||
3 | Contact your Computer Science major advisor if you have questions. | |||||||||||||
4 | See "Class Search" on UAccess for current offerings. | CS BS students also need 1 from each category: Paradigms, Systems, and Theory & Writing | ||||||||||||
5 | ||||||||||||||
6 | CS BA need 2, CS BS need 1 | CS BA and CS BS need 2 | AI BS need 2 (see cross-list options below) | AI BS need 4 (also see cross-list options below) | ||||||||||
7 | Course Number | Units | Course Description | Prereqs | CS Foundational | CS Major Core | AI Foundational | AI Major Core | 300+ level | 400+ level | (BS degree category) | AI 300+ Major Electives | Advanced AI Electives | |
8 | CSC 101 Introduction to Computer Science NOTE: Does not count in the CS major. Can be a prerequisite to CSC 110. | 3 | This course introduces students to some of the big ideas in computer science. It will excite students about the application of computer science to various disciplines, and show the social impact possible through the use of technology in developing regions, politics, medicine, and other fields. | none | ||||||||||
9 | CSC 110 Introduction to Computer Programming I | 4 | An introduction to programming with an emphasis on solving problems drawn from a variety of domains. Topics include basic control and data structures, problem solving strategies, and software development tools and techniques. | PPL 60+ or SAT I MSS 640+ or ACT MATH 26+ or (C or higher in CSC 101 or MATH 112 or MATH 108) or one course from MATH 113, 116, 120R, 122A, 122B, or 125. Test scores expire after 2 years. | x | x | ||||||||
10 | CSC 120 Introduction to Computer Programming II | 4 | Provides a continuing introduction to programming with an emphasis on problem solving. It considers problems drawn from a variety of domains (including Computer Science) and emphasizes both the broader applicability of the relevant data structures and programming concepts, as well as the implementation of those structures and concepts in software. Topics include arrays, lists, stacks, queues, trees, searching and sorting, and exceptions. | C or higher in (CSC 110 or ISTA 130 or ECE 175) or appropriate score on department CSC 110 bypass exam. Contact CS advisor for bypass exam information. | x | x | ||||||||
11 | CSC 144 Discrete Mathematics for Computer Science I | 3 | The first of a two-course sequence introducing mathematical concepts for Computer Science. Topics include: sets, functions, and relations; propositional and predicate logic; foundational combinatorics; discrete probability; modular arithmetic; and proofs. | C or higher in(CSC 110 or ISTA 130 or ECE 175) or prior prog. lang. experience w/dept. approval] AND [PPL 60+ or SAT I MSS 640+ or ACT MATH 26+ or(C or higher in MATH 108 or 112) or 1 from MATH 113,116,120R,122A,122B,or125. Test scores exp. after 2 yrs | x | x | ||||||||
12 | CSC 196 Special Topics in Computer Science Seminar: Analyzing Data (Spring 2026) | 3 | This course provides a rigorous yet accessible introduction to the fundamental concepts of probability and statistics, equipping students with the tools to analyze and interpret data and to reason about uncertainty. Topics include probability rules and counting methods, discrete and continuous random variables, expectation and variance, sampling distributions, and the Central Limit Theorem. Statistical topics cover descriptive statistics, estimation, confidence intervals, correlation, and hypothesis testing. Throughout the course, students will apply theory to real-world problems using analytical methods and computational tools. By the end of the term, students will be able to design basic experiments, interpret data responsibly, and make informed decisions based on probabilistic reasoning. | CSC 110. Strongly recommend prior completion of Calculus 1 (MATH 122B or MATH 125) | x | x | ||||||||
13 | CSC 210 Software Development | 4 | An introduction to the development of largescale software. Topics include modularization, design patterns, documentation, unit testing, source code control, build systems, debuggers, and performance tuning; all of the tools necessary for developing software as opposed to writing small programs. | CS or AI Major or Minor; C or higher in CSC 120. | x | x | ||||||||
14 | CSC 244 Discrete Mathematics for Computer Science II | 3 | A second course in mathematical concepts for computer science. Topics include: recurrence relations; proofs in propositional and first-order predicate logic; mathematical induction; graphs and trees; regular expressions and finite state machines. | CS or AI Major; C or higher in CSC 120 and [C or higher in CSC 144 or MATH 243 or MATH 323]. | x | x | ||||||||
15 | CSC 252 Computer Organization | 3 | Basic machine organization; elementary hardware concepts; CPU internals. Machine operations and instructions; assembly language concepts and programming. | CS Advanced Standing; CSC 210; open to COSC minors after advanced standing declaration the week before each semester begins (if seats are available) | x | |||||||||
16 | CSC 296 Special Topics in Computer Science Seminar: Introduction to Artificial Intelligence (Fall 2025) NOTE: Contact your Academic Advisor to determine if it will count toward your CS major or minor. | 3 | This course introduces the very broad topic of intelligent technology. It will cover scientific questions regarding what it means to be intelligent and why we can build such systems, mathematical and computational approaches for doing so, factors that make them appealing for humans to interact with, and societal benefits and risks of the increasingly rapid deployment of AI. The course will lay the foundations for students wishing to pursue AI as a major, as well as serve students who want to learn the basics of AI. | CSC 120. Strongly recommend prior completion or concurrent enrollment in MATH 163 | x | |||||||||
17 | CSC 296B Seminar in Bioinformatics NOTE: Does not count in the CS major. | 1 | This seminar course provides an overview of and introduction to the field of bioinformatics. Talks by faculty who do research in bioinformatics and computational biology, as well as by scientists from the biotechnology industry, give a sense of the current directions in the field. | none | ||||||||||
18 | CSC 317 Mobile Application Programming | 3 | Students will learn how to develop applications for mobile devices. The course will cover the necessary programming language(s), development environment, and a number of platform-specific APIs commonly used in mobile applications such as maps, location services, notifications, camera, and local storage. Other mobile-specific software development topics will be considered such as programming with limited computational and battery resources, client/server architecture, and cloud synchronization. | CSC 210. Students may not have completed or be enrolled in CSCV 381. | x | |||||||||
19 | CSC 335 Object-Oriented Programming and Design | 3 | Fundamentals of object-oriented software development. Includes design principles, inheritance, polymorphism, Unified Modeling Language (UML), testing, event-driven programming with graphical user interfaces, applications of design patterns, and use of existing frameworks. Weekly laboratory. | CS Advanced Standing; CSC 210; open to COSC minors after advanced standing declaration the week before each semester begins (if seats are available) | x | |||||||||
20 | CSC 337 Web Programming | 3 | Introduction to the techniques and technologies for developing dynamic web sites. Topics include a web server, PHP as the server-side scripting language, the MySQL database, JavaScript and AJAX for enriching web services, and page layout with HTML and CSS. Security concerns will be considered with details for prevention of such vulnerabilities in web applications. This course includes a team project to deploy a dynamic website. Weekly laboratory. | CS Major or Minor; CSC 110 or ISTA 130 or ECE 175. | x | |||||||||
21 | CSC 343 Human Computer Interaction | 3 | The course is an implementation-based introduction to basic concepts of human-computer interaction. Students will learn principles and skills for designing, programming, and evaluating interactive systems and demonstrate these skills through coursework. Topics include: system architecture, algorithms, data structures, verification, and software engineering techniques for implementing and managing interactive interfaces; methods of design and evaluation; and capabilities and limits of both computing devices and humans and their effect on design and implementation. | CS or AI Advanced Standing; CSC 210 and CSC 244; open to COSC minors after advanced standing declaration the week before each semester begins (if seats are available) | x | x | Paradigms | |||||||
22 | CSC 345 Analysis of Discrete Structures | 3 | Introduction to and analysis of algorithms and characteristics of discrete structures. Course topics include algorithm analysis techniques, recurrence relations, structural induction, hierarchical structures, graphs, hashing, and sorting. | CS or AI Advanced Standing; CSC 210 and CSC 244; open to COSC minors after advanced standing declaration the week before each semester begins (if seats are available) | x | x | ||||||||
23 | CSC 346 Cloud Computing | 3 | This course focuses on cloud programming, with an emphasis on using the cloud to solve Big Data problems. The course will not only look at how distributed systems, databases, networks, etc. are used to implement cloud computing platforms and cloud applications, but also the impact of the infinite scalability and pay-as-you-go on the platforms and applications. | CSC 120 | x | |||||||||
24 | CSC 352 Systems Programming and Unix | 3 | Programming in C, including single and multi-dimensional arrays, lists, stacks, queues, trees, and bit manipulation. Unix topics, including debuggers, makefiles, shell programming, and other topics that support systems programming. | CS Advanced Standing; CSC 210, 252; open to COSC minors after advanced standing declaration the week before each semester begins (if seats are available) | x | |||||||||
25 | CSC 355 Discrete Structures and Basic Algorithms NOTE: Does NOT count in the CS major. Does count in CS Minor. | 3 | Introduction to and analysis of algorithms and characteristics of discrete structures. Course topics include algorithm analysis, discrete data structures, sorting, hashing, search structures, basic design techniques (divide-and-conquer, dynamic programming, and greed) and graph algorithms. | Advanced Standing: Engineering. ECE 275 and MATH 243. Students may not have completed or be enrolled in CSC 345 | Does NOT count in the CS major. Does count in CS Minor. | |||||||||
26 | CSC 372 Comparative Programming Languages | 3 | Introduction to several major high-level programming languages and their characteristics. Programming projects are required in at least three languages. | CS or AI Advanced Standing; CSC 210; open to COSC minors after advanced standing declaration the week before each semester begins (if seats are available) | x | x | Paradigms | |||||||
27 | CSC 380 Principles of Data Science | 3 | The course introduces students to principles of data science that are necessary for computer scientists to make effective decisions in their professional careers. A number of computer science sub-disciplines now rely on data collection and analysis. For example, computer systems are now complicated enough that comparing the execution performance of two different programs becomes a statistical estimation problem rather than a deterministic computation. This course teaches students the basic principles of how to properly collect and process data sources in order to derive appropriate conclusions from them. The course has three main components: data analysis, machine learning, and a project where students apply the concepts discussed in class to a substantial open-ended problem. | CS or AI Advanced Standing; CSC 210, 244, and Calculus I or higher; open to COSC minors after advanced standing declaration the week before each semester begins (if seats are available) | x (CS BS only) | x | can count as 300/400 level elective (if not required in the major core) | can count as 400 level elective (if not required in the major core) | ||||||
28 | CSC 382 Software Development in C++ | 3 | This course will build upon students' knowledge of C to become proficient at programming in C++. Topics include testing, classes, templates, inheritance, operator overloading, object-oriented design, the Standard Template Library (STL), and event-driven programming with graphical user interfaces. This course also examines features of the newer versions of C++. The course includes a large team project at the end of the semester. | CS or AI Advanced Standing; CSC 352 or ECE 275; open to COSC minors after advanced standing declaration the week before each semester begins (if seats are available) | x | |||||||||
29 | CSC 396 Special Topics in Computer Science Seminar: Introduction to Deep Learning with Applications to Natural Language Processing (Fall 2025) | Identifying instances of deep learning applications in the real world, e.g., classification of online reviews, question answering, chat bots, and examine deep learning techniques, e.g., feed-forward networks, sequence models, language models, which apply to the problem at hand. 2. Designing and implementation of deep learning systems that solve the above problems using known deep learning libraries such as PyTorch. 3. Analysis of the behavior of their implemented systems on the task addressed, and appraisal of the performance on real-world data. | CSC 120 and Calc I (Math 125 or 122B) | x | ||||||||||
30 | CSC 422 Intro to Parallel and Distributed Programming | 3 | Concepts and applications of parallel and distributed programs. Process interaction using shared variables and message passing; parallel computing; development of correct programs; general problem solving techniques; scientific computing; distributed systems. Programming assignments on multiple processor machines. | CS or AI Advanced Standing; CSC 252, 345, 352 | x | x | Paradigms | x | ||||||
31 | CSC 425 Computer Networking | 3 | Theory and practice of computer networks, emphasizing the principles underlying the design of network software and the role of the communications system in distributed computing. Topics include routing, flow and congestion control, end-to-end protocols, and multicast. | CS or AI Advanced Standing; CSC 252, 352 | x | x | ||||||||
32 | CSC 433 Computer Graphics | 3 | Theory and practice of computer graphics: basic graphics programming, 2D and 3D transformations, clipping, 2D and 3D viewing, hierarchical modeling, hidden surface removal, lighting and shading, color, ray-tracing, radiosity, curve and surface modeling, and animation. | CS or AI Advanced Standing; CSC 252, 335, 345, 352, and (MATH 215 or 313) | x | x | ||||||||
33 | CSC 436 Software Engineering | 3 | Introduces fundamental software engineering techniques for developing correct, efficient, reliable, maintainable, and evolvable software for large software projects. The class project gives an experience in using evolutionary software development processes for developing a high-quality, evolvable software product that addresses emerging customer requirements. | CS or AI Advanced Standing; CSC 252, 335, 345, 352 | x | x | x | |||||||
34 | CSC 437 Geometric Algorithms | 3 | The study of algorithms for geometric objects, using a computational geometry approach, with an emphasis on applications for graphics, VLSI, GIS, robotics, and sensor networks. Topics may include the representation and overlaying of maps, finding nearest neighbors, solving linear programming problems, and searching geometric databases. Writing Emphasis Course. | CS or AI Advanced Standing; CSC 345 | x | x | Theory & Writing | x | ||||||
35 | CSC 444 Data Visualization | 3 | This course will present the fundamentals of data visualization, the art and science of using a computer to generate visual depictions of data. The course will present the foundations of graphic design, perceptual psychology and cognitive science, as well as the algorithmic basis for many for the visualization techniques. While statistical techniques may determine correlations among the data, visualization helps us frame what questions to ask. The course is targeted at students looking for effective ways of understanding data from their own fields, as well as students interested in learning the fundamentals that will enable them to build and improve the state of the art. The successful student will learn to design, critique and improve data visualizations. | CS or AI Advanced Standing; CSC 335, 345 | x | x | x | |||||||
36 | CSC 445 Algorithms | 3 | Introduction to the design and analysis of algorithms: basic analysis techniques (asymptotics, sums, recurrences); basic design techniques (divide and conquer, dynamic programming, greedy, amortization); acquiring an algorithm repertoire (sorting, median finding, strong components, spanning trees, shortest paths, maximum flow, string matching); and handling intractability (approximation algorithms, branch and bound). Writing Emphasis Course. | CS or AI Advanced Standing; CSC 345 | x | x | Theory & Writing | x | ||||||
37 | CSC 447 Green Computing | 3 | This course covers fundamental principles of energy management faced by designers of hardware, operating systems, and data centers. We will explore basic energy management option in individual components such as CPUs, network interfaces, hard drives, memory. We will further present the energy management policies at the operating system level that consider performance vs. energy saving tradeoffs. Finally, we will consider large scale data centers where energy management is done at multiple layers from individual components in the system to shutting down entries subset of machines. We will also discuss energy generation and delivery and well as cooling issues in large data centers. | CS or AI Advanced Standing; CSC 252, 352 | x | x | x | |||||||
38 | CSC 450 Algorithms in Bioinformatics | 3 | This course introduces fundamental results in discrete algorithms for combinatorial problems in bioinformatics and computational biology. The emphasis is on realistic models of computational problems that arise in the analysis of biological data, and practical algorithms for their solution. The content has depth in the area of biological sequence analysis, and breadth in areas such as phylogeny construction, protein structure prediction, and genome rearrangement analysis. Grades are based on homeworks, exams, programming projects, and a class presentation. | CS or AI Advanced Standing; CSC 345 | x | x | Theory & Writing | x | ||||||
39 | CSC 452 Principles of Operating Systems | 3 | Concepts of modern operating systems; concurrent processes; process synchronization and communication; resource allocation; kernels; deadlock; memory management; file systems. | CS or AI Advanced Standing; CSC 252, 345, 352 | x | x | Systems | |||||||
40 | CSC 453 Compilers and Systems Software | 3 | Basic concepts of compilation and related systems software. Topics include lexical analysis, parsing, semantic analysis, code generation; assemblers, loaders, linkers; debuggers. | CS or AI Advanced Standing; CSC 252, 345, 352. CSC 372 recommended | x | x | Systems | x | ||||||
41 | CSC 460 Database Design | 3 | Functions of a database system. Data modeling and logical database design. Query languages and query optimization. Efficient data storage and access. Database access through standalone and web applications. | CS or AI Advanced Standing; CSC 335, 345 | x | x | Paradigms | x | ||||||
42 | CSC 465 Reverse Engineering vs. Software Protection | 3 | This course teaches tools and techniques for dissecting and understanding an unknown piece of (potentially malicious) low-level code. In particular, the course covers fundamental program analysis techniques, reverse engineering algorithms and tools, and algorithms for protecting software (such as computer games, mobile code, critical infrastructure, malware, and media) against reverse engineering attacks. Additionally, the course provides a strong foundation for the understanding of low-level programming, including assembly code, binary code, and executable file formats. | CS or AI Advanced Standing; CSC 252, CSC 352 | x | x | ||||||||
43 | CSC 466 Computer Security | 3 | This is an introductory course covering the fundamentals of computer security. In particular, the course will cover basic concepts of computer security such as threat models and security policies, and will show how these concepts apply to specific areas such as communication security, software security, operating systems security, network security, web security, and hardware-based security. | CS or AI Advanced Standing; CSC 252, 352 | x | x | x | |||||||
44 | CSC 473 Automata, Grammars and Languages | 3 | Introduction to models of computation (finite automata, pushdown automata, Turing machines), representations of languages (regular expressions, context-free grammars), and the basic hierarchy of languages (regular, context-free, decidable, and undecidable languages). Writing Emphasis Course. | CS or AI Advanced Standing; CSC 345 | x | x | Theory & Writing | x | ||||||
45 | CSC 477 Introduction to Computer Vision | 3 | Overview of algorithms for analyzing image data. Topics include image formation, physics-based vision, linear filtering, edge detection, multiple view geometry, segmentation, tracking, and recognition. | CS or AI Advanced Standing; CSC 252, 335, 345, 352, and (MATH 215 or 313). Knowledge of probability and CSC 433 (or computer graphics) helpful. | x | x | x | x | ||||||
46 | CSC 480 Principles of Machine Learning | 3 | Students will learn why machine learning is a fundamentally different way of writing computer programs from traditional programming, and why this is often an attractive way of solving practical problems. Machine learning is all about automatic ways for computers to collect and/or adapt to data to make better predictions and decisions or gain insight; students will learn both advantages and unique risks that this approach offers. They will learn the fundamental frameworks, computational methods, and algorithms that underlie current machine learning practice, and how to derive and implement many of them. | CS or AI Advanced Standing; (CSC 380 or DATA/MATH 363) and MATH 313. | x | x | x | |||||||
47 | CSC 483 Text Retrieval and Web Search | 3 | Most of the web data today consists of unstructured text. Of course, the fact that this data exists is irrelevant, unless it is made available such that users can quickly find information that is relevant for their needs. This course will cover the fundamental knowledge necessary to build these systems, such as web crawling, index construction and compression, Boolean, vector-based, and probabilistic retrieval models, text classification and clustering, link analysis algorithms such as PageRank, and computational advertising. The students will also complete one programming project, in which they will construct one complex application that combines multiple algorithms into a system that solves real-world problems. | CS or AI Advanced Standing; CSC 345 | x | x | x | x | ||||||
48 | CSC 496 Special Topics in Computer Science Seminar: Reinforcement Learning (Fall 2025) | 3 | In the course, you’ll learn foundational RL algorithms such as Q-learning and explore more advanced topics like deep reinforcement learning. The course includes practical exercises using Python, allowing you to apply what you learn in real-world scenarios. By the end of the course, you will have a solid understanding of RL principles and hands-on experience with tools that are used in academia and industry. | CSC 210 and CSC 380 or DATA/MATH 363 | x | x | x | x | ||||||
49 | CSC 498 AI Capstone Project | 3 | AI solutions to problems in a domain of interest. We expect many capstone projects will be in a field of Science, but Literature or History, among others, are also possible. Examples include processing massive datasets in the Astronomy domain to pinpoint the most relevant samples, build predictive models to answer questions in a specific domain (e.G., Literature, History), revealing personality and other traits from language samples and behavior, analyzinig decision processes and other topics relevant to cognitive science with AI techniques, building assistive robots for the elderly and other populations, intelligent tutoring systems, and finding evidence of possible diseases in medical images among others. | AI Advanced Standing | ||||||||||
50 | ||||||||||||||
51 | cross listed classes are listed on other tabs below | |||||||||||||
52 | ||||||||||||||
53 | ||||||||||||||
54 | ||||||||||||||
55 | ||||||||||||||
56 | ||||||||||||||
57 | ||||||||||||||
58 | ||||||||||||||
59 | ||||||||||||||
60 | ||||||||||||||
61 | ||||||||||||||
62 | ||||||||||||||
63 | ||||||||||||||
64 | ||||||||||||||
65 | ||||||||||||||
66 | ||||||||||||||
67 | ||||||||||||||
68 | ||||||||||||||
69 | ||||||||||||||
70 | ||||||||||||||
71 | ||||||||||||||
72 | ||||||||||||||
73 | ||||||||||||||
74 | ||||||||||||||
75 | ||||||||||||||
76 | ||||||||||||||
77 | ||||||||||||||
78 | ||||||||||||||
79 | ||||||||||||||