People/Web Search Calendar Emergency Info A-Z Index UVA Email University of Virginia

About | Curriculum | Distinguished Majors | Integration Electives | People | Awards



Computer Science is the study of information processes. Computer scientists learn how to describe information processes, how to reason about and predict properties of information processes, and how to implement information processes elegantly and efficiently in hardware and software. The Computer Science curriculum concentrates on developing the deep understanding of computing and critical thinking skills that will enable graduates to pursue a wide variety of possible fields and to become academic, cultural, and industrial leaders. The core curriculum focuses on developing methods and tools for describing, implementing, and analyzing information processes and for managing complexity including abstraction, specification, and recursion. Computing connects closely with a wide range of disciplines including, but not limited to, the visual arts, music, life sciences including biology and cognitive science, the physical sciences, linguistics, mathematics, and the social sciences. The Computer Science major provides students with a strong foundation in computer science, combined with courses in arts, humanities, and sciences, in order to develop broad understanding of other areas and their connections to computing.


The Department of Computer Science is experiencing tremendous student interest in our courses and degree programs. Our goal is to accommodate as many students as possible. However, because of this rapid growth the Department has had to institute enrollment caps for the BACS major.  For information on how to apply, see this page:

Requirements for Major

The major requires the College Competency and Area Requirements as well as at least 27 credits in Computer Science courses and 12 credits in Integration Electives.

Major Subject Requirements

CS2110: Software Development Methods

Covers tools and techniques used to manage complexity needed to build, analyze, and test complex software systems including abstraction, analysis, and specification.

CS2110 Prerequisite: CS1110, CS1111, CS1112, or CS1113

CS2102: Discrete Mathematics I

Introduces discrete mathematics and proof techniques involving first order predicate logic and induction. Application areas include sets (finite and infinite), elementary combinatorial problems, and finite state automata. Development of tools and mechanisms for reasoning about discrete problems.

Prerequisite: CS1110, CS1111, CS1112, or CS1113

CS 2150: Program and Data Representation

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.

Prerequisite: CS 2110 and CS 2102 with grades of C- or higher.

CS 3330: Computer Architecture

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.

Prerequisite: CS2150 with a C- or higher

CS 4102: Algorithms (offered both semesters)

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 asymptotic worst
case, expected time, amortized analysis, and reductions between problems.

Prerequisite: CS 2102 and 2150 with grades of C- or higher, and APMA 1090 or MATH 1210 or MATH 1310

Computing Electives

Four computing-intensive electives selected from a list of approved courses. The list of approved courses will initially comprise current Computer Science courses at 3000-level or above. Additional courses that may be jointly offered by CLAS and CS departments will be added to the list of approved computing electives based on approval by the BA committee.

Integration Electives

Four courses selected with the approval of the student’s advisor from the list of computing-related courses approved by the BA CS committee. These courses are typically offered by departments other than Computer Science, and should either provide fundamental computing depth and background or explore applications of computing to arts and sciences fields. See for a list of approved integration electives.

Distinguished Majors Program

Distinguished majors complete the BA degree requirements in addition to a fourth-year thesis project that is approved by two advisors, typically one from Computer Science and one from Arts and Sciences. Both advisors must approve the student’s plan of study, thesis proposal, and thesis report.