55 courses with the subject CS, each shown exactly as we captured it from the college's catalog, with every element we hold. Where the wording looks broken, that is our reading of the catalog, not the college's text.
CS 1010Introduction to Information Technology3
Effective Date 05/01/2020 How computers create, preserve, manipulate and communicate information and the concepts and tools used to that end. Units include how computers work, web technologies, creating web pages, algorithms and logic, basic programming, and solving problems with spreadsheets. Students will learn to recognize computational problems and develop basic skill sets to solve future problems in their discipline of study. No prior programming experience required. Cannot be taken for credit by students in SEAS.
Effective Date 01/01/2024 A first course in programming, software development, and computer science. Introduces computing fundamentals and an appreciation for computational thinking. No previous programming experience required.
Effective Date 01/01/2024 A first course in programming, software development, and computer science. Introduces computing fundamentals and an appreciation for computational thinking.
Students should have some experience with programming.
CS 1112Introduction to Programming3
Effective Date 01/01/2024 A first course in programming, software development, and computer science. Introduces computing fundamentals and an appreciation for computational thinking.
Students must have no previous programming experience.
CS 1113Introduction to Programming3
Effective Date 01/01/2024 A first course in programming, software development, and computer science. Introduces computing fundamentals and an appreciation for computational thinking. Special domain topics and materials will differ by section and semester.
Effective Date 06/27/2017 Content varies, depending on instructor interests and the needs of the Department. Taught strictly at the undergraduate level.
Instructor permission; additional specific requirements vary with topics. Credits: 3
CS 2100Data Structures and Algorithms 14
Effective Date 08/01/2025 A second course in computing with an emphasis on foundational data structures and program analysis. The course provides a introduction to object oriented programming and the Java programming language, concurrency, and inheritance / polymorphism. Additionally, foundational data structures and related algorithms / analysis are studied. These include lists, stacks, queues, trees, hash tables, and priority queues. Prereq: CS 1110 or CS 1111 or CS 1112 or CS 1113 or place out test for CS 1110 or CS 2100 Requisites Must have completed CS 1110 or CS 1111 or CS 1112 or CS 1113 with a grade of C- or better OR successfully completed the CS 1110 or CS 2100 place out test.
Effective Date 08/01/2021 A second course in computing with an emphasis on modern software development and principles central to computer science. Topics include software requirements, testing, object-oriented design, abstraction, encapsulation, recursion, and time-complexity.
CS 1110, 1111, 1112, 1113, or 1120 with a grade of C- or higher; or the CS 1110 placement test. Requisites Must have completed CS 1110 or CS 1111 or CS 1112 or CS 1113, or CS 1120 with a grade of C- or higher OR successfully completed the CS 1110 placement test Credits: 3
CS 2120Discrete Mathematics and Theory 13
Effective Date 08/01/2025 Introduces discrete mathematics and proof techniques involving first order predicate logic and induction. Application areas include sets, tuples, functions, relations, and combinatorial problems. Prereq: Must have completed CS 1110 or CS 1111 or CS 1112 or CS 1113 with a grade of C- or better OR successfully completed the CS 1110 or CS 2100 place out test. Requisites Must have completed CS 1110 or CS 1111 or CS 1112 or CS 1113 with a grade of C- or better OR successfully completed the CS 1110 or CS 2100 place out test.
Effective Date 05/01/2022 This course covers topics on the computer architecture abstraction hierarchy ranging from a step above silicon to a step below modern programming languages. Students in this course will learn to write low-level code in C and Assembly, how data is stored in memory, the basics of hardware design from gates and registers through general-purpose computers, and legal, ethical, and security issues related to these topics. CS 1100 - CS 1199 and either familiarity with Java, C++, or another C-like language, or concurrent enrollment in CS 2100 Requisites Must have completed CS 1110 or CS 1111 or CS 1112 or CS 1113 with a grade of C- or better OR successfully completed the CS 1110 or CS 2100 place out test.
Effective Date 08/01/2021 Introduces programs and data representation at the machine level. Data structuring techniques and the representation of data structures during program execution. Operations and control structures and their representation during program execution. Representations of numbers, arithmetic operations, arrays, records, recursion, hashing, stacks, queues, trees, graphs, and related concepts.
CS 2110 with grades of C- or higher, or the CS 2110 placement test
CS 2501Special Topics in Computer Science1
Effective Date 01/01/2026 Content varies, depending on instructor interests and the needs of the Department. Taught strictly at the undergraduate level.
Instructor permission; additional specific requirements vary with topics. Credits: 1 to 3
CS 2910CS Education Practicum1
Effective Date 01/01/2019 An overview of computer science education for undergraduate students. Topics include ethics, diversity, tutoring and teaching techniques, and classroom management. Students enrolled in this course serve as a teaching assistant for a computer science course as part of their coursework.
Effective Date 08/01/2025 In-depth study of a computer science or computer engineering problem by an individual student in close consultation with departmental faculty.
Effective Date 08/01/2025 Builds upon previous analysis of algorithms and the effects of data structures on them. Algorithms selected from areas such as searching, shortest paths, greedy algorithms, backtracking, divide-and-conquer, dynamic programming, and machine learning. Analysis techniques include asymptotic worst case, expected time, amortized analysis, and reductions.
CS 2100 & CS 2120. Background in topics covered in a first course in Calculus is required. CS 3140 is recommended. Requisites Completed CS 2120 and (CS 2100 or CS 2100 place out test) with a grade of C- or better. Credits: 3
CS 3102Theory of Computation3
Effective Date 08/01/2022 Introduces computation theory including grammars, finite state machines, pushdown automata, and Turing machines.
(CS 2102 or CS 2120) and (CS 2100 or CS 2110 or CS 2501 topic “DSA 2” or the CS 2110 placement test); both with grades of C- or higher. Requisites Must have completed (CS 2102 or CS 2120) and (CS 2100 or CS 2110 or CS 2501 topic DSA 2 or the CS 2110 placement test); both with grades of C- or higher. Credits: 3
CS 3120Discrete Mathematics and Theory 23
Effective Date 03/13/2025 The goal of this course is to understand the fundamental limits on what can be efficiently computed. These limits reveal properties about information, communication, and computing, as well as practical issues about how to solve problems. Introduces computation theory including grammars, automata, and Turing machines. Prereq: CS 3100 with a grade of C- or better Requisites Completed CS 3100 with a grade of C- or better
Effective Date 03/13/2025 A second course in computer systems, this course will explore a more realistic model of processors and how they and the operating system work together to provide various functionality we depend on as application programmers. Course topics include permission models, system architecture, concurrency, virtual memory, cryptographic primitives, and TCP/IP networking. Prereq CS 2100 and CS 2130 with a grade of C- or better Requisites Completed 2130 with a grade of C- or better AND (CS 2100 with a grade of C- or better OR completed place out test)
Effective Date 05/01/2022 A first course in software engineering and software construction, this course focuses on bringing the programming concepts learned in a first course in data structures and algorithms together to begin to teach students how to build more complex systems. The course covers introductory topics in testing, software design principles, design patterns, functional programming, and data storage and manipulation. Completed CS 2100 with a C- or better. Requisites Must have completed CS 2100 with a C- or better OR successfully completed the CS 2100 place out test.
Effective Date 08/01/2025 Human-computer interaction and user-centered design in the context of software engineering. Examines the fundamental principles of human-computer interaction. Includes evaluating a system’s usability based on well-defined criteria; user and task analysis, as well as conceptual models and metaphors; the use of prototyping for evaluating design alternatives; and physical design of software user-interfaces, including windows, menus, and commands.
CS 2100 with a grade of C- or better OR successfully completed the CS 2100 place out test. Requisites Must have completed CS 2100 with a C- or better OR successfully completed the CS 2100 place out test. Credits: 3
CS 3240Software Engineering3
Effective Date 08/01/2025 Analyzes modern software engineering practice for multi-person projects; methods for requirements specification, design, implementation, verification, and maintenance of large software systems; advanced software development techniques and large project management approaches; project planning, scheduling, resource management, configuration control, and documentation.
CS 3140 with a grade of C- or better Requisites Completed CS 3140 with a grade of C- or better Credits: 3
CS 3250Software Testing3
Effective Date 08/01/2025 An introduction to testing for assuring software quality. Covers concepts and techniques for testing software, including testing at the unit, module, subsystem, and system levels; automatic and manual techniques for generating and validating test data; the testing process; static vs. dynamic analysis; functional testing; inspections; testing in specific application domains; and reliability assessment.
CS 2100 and CS 2120 (OR CS 2100 place out test and CS 2120) with a grade of C- or better Requisites Must have completed CS 2120 AND (CS 2100 or CS 2100 place out test) with a grade of C- or better. Credits: 3
CS 3330Computer Architecture3
Effective Date 05/01/2022 Includes the organization and architecture of computer systems hardware; instruction set architectures; addressing modes; register transfer notation; processor design and computer arithmetic; memory systems; hardware implementations of virtual memory, and input/output control and devices.
CS 2150 or CS 3130 with a grade of C- or better Requisites Must have completed CS 2150 or CS 3130 with a grade of C- or better Credits: 3
CS 3501Special Topics in Computer Science1
Effective Date 01/01/2026 Content varies, depending on instructor interests and the needs of the Department. Taught strictly at the undergraduate level.
Instructor permission; additional specific requirements vary with topics. Credits: 1 to 3
CS 3710Introduction to Cybersecurity3
Effective Date 08/01/2025 Introduces students to the fields of cybersecurity. Both non-technical issues, such as ethics and policy, and technical issues are covered. Students see and experiment with a wide range of areas within cybersecurity, including: binary exploitation, encryption, digital forensics, networks, and modern threats.
CS 2100 and CS 2130 or (CS 2100 place out test and CS 2130) with a grade of C- or better. Requisites Must have completed CS 2130 AND (CS 2100 or CS 2100 place out test) with a grade of C- or better. Credits: 3
CS 4102Algorithms3
Effective Date 05/01/2022 Introduces the analysis of algorithms and the effects of data structures on them. Algorithms selected from areas such as sorting, searching, shortest paths, greedy algorithms, backtracking, divide-and-conquer, and dynamic programming. Data structures include heaps and search, splay, and spanning trees. Analysis techniques include asymtotic worst case, expected time, amortized analysis, and reductions between problems.
CS 2150 or CS 3120 with a grade of C- or better Requisites Must have complete CS 2150 or CS 3120 with a grade of C- or better Credits: 3
CS 4260Internet Scale Applications3
Effective Date 05/01/2022 A survey of methods for building large-scale internet websites and mobile apps, with a focus on how theory meets practice. Topics covered include performance engineering, scaling, security, and large team software engineering. Results in students building a working scalable online application.
CS 3240 with a grade of C- or better Requisites Students must have completed CS 3240 with a grade of C- or better Credits: 3
CS 4330Advanced Computer Architecture3
Effective Date 10/08/2024 Provides an overview of modern microprocessor design. The topics covered in the course will include the design of super-scalar processors and their memory systems, and the fundamentals of multi-core processor design.
CS 3330 with a grade of C- or better Requisites Completed CS 3130 with a grade of C- or better. Credits: 3
CS 4414Operating Systems3
Effective Date 01/01/2026 Analyzes process communication and synchronization; resource management; virtual memory management algorithms; file systems; and networking and distributed systems.
CS 3130 with a grade of C- or better. Requisites Completed CS 3130 with a grade of C- or better Credits: 3
CS 4434Dependable Computing Systems3
Effective Date 01/01/2026 Focuses on techniques for designing & analyzing dependable computer-based systems. Topics include basic dependability concepts & attributes, fault models & effects, combinatorial & state-space modeling, hardware redundancy, error detecting & correcting codes, time redundancy, software fault tolerance, checkpointing & recovery, reliable networked systems, error detection techniques, & experimental dependability evaluation techniques. Prereq: CS 3130 with a grade of C- or better. Background in topics covered in a first course in Probability is required. Requisites Completed CS 3130 with a grade of C- or better
Effective Date 01/01/2026 Introduces the student to the basics of high-performance parallel computing and application development for massively parallel processors (e.g., GPUs). The course will also introduce the internal architecture of these parallel processors and its impact on performance.
CS 3100 and CS 3130 with a grade of C- or better. Requisites Completed CS 3100 AND CS 3130 with a grade of C- or better. Credits: 3
CS 4457Computer Networks3
Effective Date 01/01/2026 A first course in communication networks for upper-level undergraduate students. Topics include the design of modern communication networks; point-to-point and broadcast network solutions; advanced issues such as Gigabit networks; ATM networks; and real-time communications.
CS 3130 with a grade of C- or better. Requisites Completed CS 3130 with a grade of C- or better Credits: 3
CS 4501Special Topics in Computer Science1
Effective Date 08/01/2026 Content varies annually, depending on instructor interests and the needs of the department. Similar to CS 5501 and CS 7501, but taught strictly at the undergraduate level.
Must have completed CS 2100 with a grade of C- or better or successfully completed the CS 2100 place out test. Additional specific requirements vary with topics. Requisites Completed CS 2100 with a grade of C- or better or successfully completed the CS 2100 place out test Credits: 1 to 3
CS 4610Programming Languages3
Effective Date 01/01/2026 Presents the fundamental concepts of programming language design and implementation. Emphasizes language paradigms and implementation issues. Develops working programs in languages representing different language paradigms. Many programs oriented toward language implementation issues.
CS 2120 and 3140 with a grade of C- or better Requisites Completed CS 2120 and CS 3140 with a grade of C- or better Credits: 3
CS 4620Compilers3
Effective Date 01/01/2026 Provides an introduction to the field of compilers, which translate programs written in high-level languages to a form that can be executed. The course covers the theories and mechanisms of compilation tools. Students will learn the core ideas behind compilation and how to use software tools such as lex/flex, yacc/bison to build a compiler for a non-trivial programming language.
CS 2120 and 3140 with a grade of C- or better Requisites Completed CS 2120 and CS 3140 with a grade of C- or better Credits: 3
CS 4630Defense Against the Dark Arts3
Effective Date 05/01/2022 Viruses, worms, and other malicious software are an ever-increasing threat to computer systems. There is an escalating battle between computer security specialists and the designers of malicious software. This course provides an essential understanding of the techniques used by both sides of the computer security battle.
CS 3710 with a grade of C- or better Requisites Must have completed CS 3710 with a grade of C- or better Credits: 3
CS 4640Programming Languages for Web Applications3
Effective Date 01/01/2026 Presents programming languages and implementations used in developing web applications. Both client and server side languages are presented as well as database languages. In addition, frameworks that enable interactive web pages are discussed as well as formatting languages. Language features and efficiencies including scoping, parameter passing, object orientation, just in time compilation and dynamic binary translation are included.
CS 3140 with a grade of C- or better Requisites Completed CS 3140 with a grade of C- or better Credits: 3
CS 4710Artificial Intelligence3
Effective Date 08/01/2025 Introduces artificial intelligence. Covers fundamental concepts and techniques and surveys selected application areas. Core material includes state space search, logic, and resolution theorem proving. Application areas may include expert systems, natural language understanding, planning, machine learning, or machine perception. Provides exposure to AI implementation methods, emphasizing programming in Common LISP.
CS 3100 with a grade of C- or better Requisites Completed CS 3100 with a grade of C- or better Credits: 3
CS 4720Mobile Application Development3
Effective Date 01/01/2026 Mobile computing devices have become ubiquitous in our communities. In this course, we focus on the creation of mobile solutions for various modern platforms, including major mobile operating systems. Topics include mobile device architecture, programming languages, software engineering, user interface design, and app distribution.
CS 3140 with a grade of C- or better Requisites Completed CS 3140 with a grade of C- or better Credits: 3
CS 4730Computer Game Design3
Effective Date 01/01/2026 This course will introduce students to the concepts and tools used in the development of modern 2-D and 3-D real-time interactive computer video games. Topics covered in this include graphics, parallel processing, human-computer interaction, networking, artificial intelligence, and software engineering.
CS 3140 with a grade of C- or better Requisites Completed 3140 with a grade of C- or better Credits: 3
CS 4740Cloud Computing3
Effective Date 01/01/2026 Investigates the architectural foundations of the various cloud platforms, as well as examining both current cloud computing platforms and modern cloud research. Student assignments utilize the major cloud platforms.
CS 3140 with a grade of C- or better Requisites Completed 3140 with a grade of C- or better Credits: 3
CS 4750Database Systems3
Effective Date 01/01/2026 Introduces the fundamental concepts for design and development of database systems. Emphasizes relational data model and conceptual schema design using ER model, practical issues in commercial database systems, database design using functional dependencies, and other data models. Develops a working relational database for a realistic application.
CS 2120 and 3140 with a grade of C- or better Requisites Completed CS 2120 and CS 3140 with a grade of C- or better Credits: 3
CS 4760Network Security3
Effective Date 05/01/2022 This course covers the principles of secure network communications and the application of network security. Topics include: attack types, attack surfaces, attack phases, network security devices.(a)symmetric key encryption, cryptographic hash function, authentication/identification techniques, key distribution, and data integrity assurance. Also, currently used security mechanisms and protocols will be discussed.
CS 3710 with a grade of C- or better Requisites Must have completed CS 3710 with a grade of C- or better Credits: 3
CS 4770Natural Language Processing3
Effective Date 08/01/2025 This course explores Natural Language Processing (NLP), examining how computers are trained to understand and process human language. Students will gain a thorough understanding of both core NLP concepts and advanced techniques, including text analysis, language modeling, machine translation, question answering, text generation, conversation modeling, and the latest advancements in large language models.
CS 3100 with a grade of a C- or better and APMA 3080 or equivalent. Requisites (Completed CS 3100 with a grade of C- or better) AND (Completed APMA 3080 or MATH 3350 or MATH 3351) Credits: 3
CS 4771Reinforcement Learning3
Effective Date 08/01/2025 This course aims to give an introduction to basic ideas and concepts of RL while avoiding deep dive in mathematical treatments. The course will help the student build an intuitive understanding of RL and give students hands-on experience on small-scale RL problems.
CS 2100 with a grade of C- or better or successfully complete the CS 2100 place out test. Requisites Completed CS 2100 with a grade of C- or better OR successfully completed the CS 2100 place out test Credits: 3
CS 4774Machine Learning3
Effective Date 01/01/2026 An introduction to machine learning: the study of algorithms that improve their performance through experience. Covers both machine learning theory and algorithms. Introduces algorithms, theory, and applications related to both supervised and unsupervised learning, including regression, classification, and optimization and major algorithm families for each.
CS 3100 with a grade of C- or better. Background in topics covered in Probability and Linear Algebra is required. Requisites Completed CS 3100 with a grade of C- or better Credits: 3
CS 4790Cryptocurrency3
Effective Date 10/17/2024 This course is a general introduction to cryptocurrencies and blockchain applications. Students will understand the theoretical concepts that underlay cryptocurrencies, and implement both their own cryptocurrencies as well as develop applications that run on existing cryptocurrencies. Students will see the ethics, legal, and policy aspects pertaining to the subject.
CS 3100 with a grade of C- or better Requisites Completed CS 3100:Data Structures and Algorithms 2 with a grade of C- or higher. Credits: 3
CS 4810Introduction to Computer Graphics3
Effective Date 01/01/2026 Introduces the fundamentals of three-dimensional computer graphics: rendering, modeling, and animation. Students learn how to represent three-dimensional objects (modeling) and the movement of those objects over time (animation). Students learn and implement the standard rendering pipeline, defined as the stages of turning a three-dimensional model into a shaded, lit, texture-mapped two-dimensional image.
CS 3100 and 3130 with a grade of C- or better Requisites Completed CS 3100 and CS 3130 with a grade of C- or better Credits: 3
CS 4970Capstone Practicum I3
Effective Date 01/01/2026 This course is one option in the CS fourth-year thesis track. Under the practicum track, students will take two 3-credit courses, CS 4970 and CS 4971. These courses would form a year-long group-based and project-based practicum class. There would be an actual customer, which could be either internal (the course instructor, other CS professors, etc.) or external (local companies, local non-profits, etc.).
CS 3140 with a grade of C- or better and BSCS major Requisites Must be a BSCS major and previously completed CS 3140 with a grade of C- or better Credits: 3
CS 4971Capstone Practicum3
Effective Date 08/01/2026 This course is one option for the BSCS capstone requirement. Under the practicum option, students work together on teams to build and evaluate a semester-long project. Practicum projects are intended to meet the needs of an actual customer, which could be either internal (the course instructor, other CS professors, etc.) or external (local companies, local non-profits, etc.).
CS 3240, BSCS major, and 4th year standing. Requisites Completed CS 3240. 4th year Computer Science (BS) majors only. Credits: 3
CS 4980Capstone Research1
Effective Date 12/09/2024 This course is one option in the CS fourth-year thesis track. Students will seek out a faculty member as an advisor, and do an independent project with said advisor. Instructors can give the 3 credits across multiple semesters, if desired. This course is designed for students who are doing research, and want to use that research for their senior thesis. Note that this track could also be an implementation project, including a group-based project.
CS 3140 with a grade of C- or higher, and BSCS major. Requisites Completed CS 3140 with a grade of C- or higher, and BS CS major (first or second major). Credits: 1 to 3
CS 4991Capstone Technical Report0
Effective Date 01/01/2026 Supports the writing of the technical report component of the fourth-year thesis, credit for which is given in STS 4600. Students will write the report assuming a non-technical audience. The course is part of the CS 4XXX elective option in the fourth-year CS thesis track. Student must be a 4th Year BS Computer Science (First or Second Major) and must have completed or be currently enrolled in STS 4500 Requisites Student must be a 4th Year BS Computer Science First or Second Major and must have completed or be currently enrolled in STS 4500
Effective Date 01/01/2010 In-depth study of a computer science or computer engineering problem by an individual student in close consultation with departmental faculty. The study is often either a thorough analysis of an abstract computer science problem or the design, implementation, and analysis of a computer system (software or hardware).
Effective Date 01/01/2026 Required for Distinguished Majors completing the Bachelor of Arts degree in the College of Arts and Sciences. An introduction to computer science research and the writing of a Distinguished Majors thesis.
CS 3100 with a grade of C- or higher, and a BACS major Requisites Must be a BACS major and previously completed CS 3100 with a grade of C- or higher Credits: 3
Source: University of Virginia-Main Campus's catalog, linked per course · table learning_unit · CourseShelf publish 59