CS BA Major in the College of Arts & Sciences

Starting in Spring 2006, the Computer Science Department has offered an interdisciplinary major in Computer Science leading to a BA degree for students in the College of Arts & Sciences. We accepted our first group of students in 2006 and held our first graduation ceremony in May 2008.

  • About the BA Major

    About the BA Major

    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 major 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 in areas that integrate the arts and sciences with computing. The Computer Science major is designed to provide students entering the University without previous background in computing with an opportunity to major in Computer Science, while taking courses in arts, humanities, and sciences to develop broad understanding of other areas and their connections to computing. 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 core curriculum focuses on developing methods and tools for describing, implementing, and analyzing information processes and for managing complexity including abstraction, specification, and recursion.

    Declaring a BA Major

    For information on how to declare a BA Major in Computer Science, please visit our Major and Minor Declaration page.

    More Information

    For information about the major, or to be added to an email list for further announcements, contact Tom Horton (horton@virginia.edu), Director of the Interdisciplinary Major in Computer Science.

    The information contained on this website is for informational purposes only.  The Undergraduate Record and Graduate Record represent the official repository for academic program requirements. These publications may be found at:

    Undergraduate Record: www.virginia.edu/registrar/catalog/ugrad.html 
    Graduate Record: www.virginia.edu/registrar/catalog/grad.html

  • BS vs. BA

    The Computer Science department offers two Computer Science degrees: the Interdisciplinary Major in Computer Science degree offered through the College of Arts & Sciences (BACS), and the Bachelor of Science in Computer Science degree offered through the School of Engineering and Applied Sciences. In addition to the two Computer Science degrees, we also offer a Bachelor of Science in Computer Engineering degree which is jointly administered with the Electrical and Computer Engineering Department .

    The main differences between the two Computer Science degrees are:

    1. The BACS degree is in the College of Arts & Sciences; the BSCS is in the School of Engineering and Applied Science. This means the degrees have different general requirements. The general requirements for the College of Arts & Sciences are the competency requirements (see the Undergraduate Record for details). They include two writing requirements, a foreign language, and area requirements in natural science and mathematics, social sciences, humanities, and historical studies. The general requirements for the School of Engineering and Applied Sciences include mathematics, chemistry, physics, technical electives, humanities electives, and science, technology, and society courses (see the curriculum for details). To enroll in the BACS major, students must be enrolled in the College of Arts & Sciences. To enroll in the BSCS major, students must be enrolled in the School of Engineering and Applied Science.
    2. Students in the BACS degree first take the CS1110-CS2110. After completing the first two courses, students are prepared for the same courses, and both BACS and BSCS take the same core courses (CS2102, CS2150, CS3330, and CS4102).
    3. The BSCS degree includes some additional required CS courses that are not required for the BACS degree. The additional courses required for the BSCS degree are CS2330 (Digital Logic Design), CS3102 (Theory of Computation), CS3240 (Advanced Software Development Techniques), and CS4414 (Operating Systems). CS2330 is currently restricted to SEAS students, but BACS students are welcome and encouraged to take the rest of these courses, which can count as CS electives for BACS students. But none of these are required for BACS students.
    4. The BACS degree requires four integration electives, which are not part of the BSCS degree. The integration electives are courses in other departments that have strong connections with computing. Click here or see below for a list of pre-approved integration electives.
    5. The BSCS degree (like all Engineering School degrees) requires a fourth-year thesis. This involves taking STS 4010 (in which students write a thesis proposal) and STS 4020 (in which students complete a thesis report), and working with a technical advisor on a thesis project. BACS students are not required to complete a thesis, but may enter the distinguished majors program. To complete a distinguished major, a BACS student must complete a fourth year thesis project that is approved by two readers.
  • Curriculum



    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. Students who wish to declare the BACS must apply in the spring semester. This is a selective process that takes into account the student's academic performance and application essay questions, as well as other factors. In recent years we have been able to increase our capacity and accept 90%-100% of the qualified students who applied.  For information on how to apply, see this page: https://engineering.virginia.edu/departments/computer-science/academics/apply/cs-ugrad-admissions

    In order to apply for the major, students must have taken one introductory computer science (either CS 1110, CS 1111, CS 1112, CS 1113, or CS 1120) with a grade of C+ or better, and must be enrolled in CS 2110 and CS 2102 (or must have already completed CS 2110 and CS 2102 with a grade of C+ or better). 

    There is no official math prerequisite to apply for the major, but note that one required course (CS4102) has a math prerequisite of APMA 1090 or MATH 1210 or MATH 1310 (or equivalent coursework in high school).


    Requirements for Major

    The major requires the College Competency and Area Requirements as well as at least 27 credits in Computer Science courses and 4 courses (12 credits, minimum) 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 "Integration Electives" below for more information. 


  • Integration Electives

    Integration Electives

    BACS students are required to complete a sequence of four integration electives. Integration electives are courses 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.

    Below is a list of the courses that are approved as integration electives. This list is not meant to be exhaustive, and you may find a course that is not on the list that appears to satisfy the goals of an integration elective.

    Other students have made petitions to have additional courses count, so it's possible a course you're interested in has been successfully petitioned (or unsuccessfully petitioned) by another student.  The following link shows a list of courses where students' petitions have been approved, and a list of courses for which we've said "no”: https://goo.gl/rPQGzW

    If you want one of these courses to count, you need to make the request and provide justification using this online form:


    Some of these courses are not offered regularly, and some courses may have prerequisites. Courses listed in bold are courses that are offered regularly and are among the most commonly taken integration electives.



    • ANTH 2430: Languages of the World
    • ANTH 3480: Language and Prehistory
    • ANTH 3490: Language and Thought
    • ANTH 5401: Linguistic Field Methods
    • ANTH 5410: Phonology
    • ANTH 5420: Theories of Language
    • ANTH 5440: Morphology

    Studio Art

    • ARTS 2220: Introduction to New Media I
    • ARTS 2222: Introduction to New Media II
    • ARTS 3222: Intermediate New Media II
    • ARTS 4220: Advanced New Media I
    • ARTS 4222: Advanced New Media II


    • BIOC 5080: Computer Analysis of DNA & Protein


    • BIOL 3170: Introduction to Neurobiology
    • BIOL 3240: Introduction to Immunology
    • BIOL 4010: Macroevolution
    • BIOL 4020: Ecol & Evolutionary Genetics
    • BIOL 4030: Evolutionary Biology Lab
    • BIOL 4050: Developmental Biology
    • BIOL 4080: Neuronal Organization of Behavior
    • BIOL 4130: Population Ecology and Conservation Biology
    • BIOL 4160: Functional Genomics Lab
    • BIOL 4170: Cellular Neurobiology
    • BIOL 4250: Human Genetics
    • BIOL 4480: Complex Macromolecules
    • BIOL 5080: Developmental Mechanisms


    • CHEM 4411: Biological Chemistry Lab I


    • DRAM 2110: Lighting Technology
    • DRAM 2210: Scenic Technology
    • DRAM 2240: Digital Design: Re-making and Re-imagining
    • DRAM 2620: Sound Design
    • DRAM 2630: Production Laboratory: Sound
    • DRAM 3210: Scene Design I
    • DRAM 4110: Lighting Design
    • DRAM 4410: Acting III


    • ECON 4010: Game Theory
    • ECON 4020: Auction Theory and Practice
    • ECON 4720: Econometric Methods
    • ECON 4880: Seminar in Policy Analysis

    Environmental Science

    • EVSC 3020: GIS Methods
    • EVSC 4010: Introduction to Remote Sensing
    • EVSC 4040: Climate Change: Science, Markets & Policy
    • EVSC 4070: Advanced GIS
    • EVSC 5020: GIS Methods
    • EVSC 5030: Applied Statistics for Environmental Scientists
    • EVSC 5110: Systems Analysis in Environmental Sciences

    United States History

    • HIUS 3162: Digitizing America


    • LING 3400: Structure of English
    • LING 5010: Synchronic Linguistics
    • LING 5060: Syntax and Semantics
    • LING 5070: Syntactic Theory

    General Linguistics

    • LNGS 3250: Intro to Linguistic Theory


    • MATH 1160: Algebra, Number Systems, and Number Theory
    • MATH 3000: Transition to Higher Math
    • MATH 3100: Intro Mathematical Probability
    • MATH 3120: Intro Mathematical Statistics
    • MATH 3351: Elementary Linear Algebra
    • MATH 3354: Survey of Algebra
    • MATH 4080: Operations Research
    • MATH 4300: Elementary Numerical Analysis
    • MATH 4452: Algebraic Coding Theory
    • MATH 4750: Introduction to Knot Theory
    • MATH 5110: Intro to Stochastic Processes
    • MATH 5651: Advanced Linear Algebra
    • MATH 5653: Number Theory

    Media Studies

    • MDST 2010: Introduction to Digital Media
    • MDST 3050: History of Media
    • MDST 3702: Computers and Languages
    • MDST 3703: Digital Liberal Arts
    • MDST 4700: Theory of New Media


    • MUSI 2350: Technosonics: Digital Music & Sound Art Composition
    • MUSI 3390: Intro to Music & Computers
    • MUSI 4535: Interactive Media
    • MUSI 4540: Computer Sound Generation
    • MUSI 4543: Sound Studio
    • MUSI 4545: Computer Applications in Music


    • NESC 5330: Neural Network Models


    • PHIL 1410: Forms of Reasoning
    • PHIL 2330: Computers, Minds and Brains
    • PHIL 2420: Introduction to Symbolic Logic
    • PHIL 5420: Advanced Logic
    • PHIL 5450: Language and Logic


    • PHYS 2660: Fundamentals Scientific Computing
    • PHYS 5630: Computational Physics I
    • PHYS 5640: Computational Physics II


    • PSYC 2150: Introduction to Cognition
    • PSYC 2200: Survey of the Neural Basis of Behavior
    • PSYC 2300: Introduction to Perception
    • PSYC 4110: Psycholinguistics
    • PSYC 4111: Language Development & Disorders
    • PSYC 4125: Psychology of Language
    • PSYC 4150: Cognitive Processes
    • PSYC 4200: Neural Mechanisms of Behavior
    • PSYC 4290: Memory Distortions
    • PSYC 4300: Theories of Perception
    • PSYC 4330: Topics in Child Development
    • PSYC 5150: Advanced Cognition
    • PSYC 5210: Developmental Psychobiology
    • PSYC 5260: Brain Systems Involved in Learning and Memory


    • STAT 2120: Intro to Statistical Analysis
    • STAT 3010: Statist Computing & Graphics
    • STAT 5000: Intro to Applied Statistics
    • STAT 5330: Data Mining
  • Distinguished Majors Program

    Distinguished Majors Program

    Bachelor of Arts Computer Science majors who have completed 18 credit hours towards their major may apply to the Distinguished Majors Program.

    Students who are accepted must complete a thesis based on two semesters of research. The Distinguished Majors Program features opportunities for students and advisors to collaborate on creative research; it is not a lock-step thesis program with strict content requirements, but an opportunity to work closely with a professor on a project that is interesting and exciting to you.

    According to College rules, to earn a Distinguished Major, students must have a cumulative GPA of 3.4 or better. Upon successful completion of the program, students will likely be recommended for a baccalaureate award of DistinctionHigh Distinction, or Highest Distinction.

    Distinguished Majors Program Requirements

    Students applying to the DMP must have completed 18 credit hours towards their Computer Science major by the end of the semester in which they apply. Students typically apply during the Spring semester of their third year, but it is possible to apply earlier.

    The 18 credit hours can can come from any course used to fulfill the “Major Subject Requirements”, “Computing Electives” or “Integration Electives” of the Interdisciplinary Major in Computer Science Curriculum. (Exceptions to the 18 credit hours rule may be granted at the discretion of the Distinguished Majors Program Director.)

    In addition to the normal requirements for the computer science major, they must register for two semesters of supervised research (CS 4998 for 3 credits each semester). Students may apply to the DMP before completing this supervised research, but students must complete the supervised research to complete the DMP. Based on their independent research, students must complete, to the satisfaction of their advisor and the Distinguished Major Program Director, a project at least one month prior to graduation.

    Please note: The CS 4998 DMP credits do not apply towards the credit hours required for the major. That is, they cannot be used to fulfill any requirement listed on the BACS curriculum.

    When To Apply

    Students must apply by the third semester prior to graduation. Spring graduates should submit their applications in by March 31st of the year before graduation. Winter graduates, must have their applications in by October 31st of the year before the winter graduation.

    Note that applying to the program occurs relatively early in the research process. It is not necessary to have a fully formed research idea to apply for the DMP, although it is expected that you have found a research advisor to work with. It is not necessary to have a second reader identified when you apply to join the DMP.

    How To Apply

    Students seeking to enter the program should complete the following steps:

    1. Decide on a project.

      Before applying to the DMP, students should decide what project they would like to complete in the program. They should compose a general description of the project and what the goal of the research is. DMP project should be research projects that seek to answer some unknown research question; it is not enough to just build some interesting software or study an area in depth.

      The project proposal need not be very detailed as long as the essential elements are in place. All projects should include a review of relevant previous work and all projects should involve some original research. There are no formal guidelines (e.g., length, format, etc.) for what constitutes an acceptable project, it is up to the research advisor and the DMP Director to agree that a proposed project is satisfactory. Our expectation is that most DMP projects will result in a paper that could be published in a research conference or workshop, but alternative outcomes could also be satisfactory.

    2. Enlist a research advisor.

      Next, students must secure a research advisor and reader for the DMP project. Many students become involved in research well before the DMP application process — some as early as their first semester at UVA.

      The research advisor should be selected from the computer science faculty. (Exceptions to this rule may be granted at the discretion of the DMP Director, and it is often suitable to have an advisor from outside UVA or from another department.) The student and the advisor should discuss the proposed research together, and work together to develop the research proposal. The student should expect to meet regularly (typically every week) with the research advisor during the course of the project. The research advisor should sign the application form after approving the project proposal, indicating their committment to advising the student through completion the DMP.

      If you need help finding a research advisor, contact the DMP Director (David Evans) to meet to discuss the areas you are interested in working in and for advice on finding a potential advisor. It is a good idea to do this early, especially to increase the likelihood you'll be able to find a summer research position.

    3. Enlist a second reader. (optional to do this before applying)

      Your research advisor may be able to help you select a second reader based on your interests and your project proposal. It is not necessary to have the second reader identified when you submit the DMP application, but is important to find a suitable second reader early in the research.

      The second reader should be a faculty member most suited to assess the quality and context of your work. If appropriate, the second readers can be a faculty member from another university or from another department at UVA. However, CS faculty members are also acceptable.

    4. Submit the DMP Application.

      Print out and complete the application form: [PDF]. The application includes a very brief (expected to be no more than one page) research proposal describing your DMP project.

      Submit the application form to the DMP Program Director, David Evans in Rice 507. (If unavailable, applications can be submitted at the Rice Hall Front Desk, but you should also send an email to the DMP Director). After reviewing the proposals, notification will be sent out regarding acceptances.


    The most important preparation for students interested in the DMP is becoming involved in research early. Students need to be familiar with the problems and tools specific to a research area before they can make informed proposals.

    Students are encouraged to start early. It is not too early to start talking to professors about research in your first semester, and one of the best ways to get involved in a research group is to impress a professor with what you do in class. Second-year students and third-year students in their first semester should talk to advisors and faculty members about DMP projects and research opportunities.

    DMP Report Deadlines

    The DMP report must be completed and submitted to the research advisor and reader at least thirty (30) days prior to graduation. The research advisor should specify any requirements for the DMP report, in consultation with the DMP director for any unusual situations. Reviews will be completed and a departmental recommendation will be sent to the Chair of the University Committee on Special Programs two weeks before graduation.

    The Distinguished Majors Program is not directly comparable to a SEAS Senior Thesis or Capstone Project. Compared to the SEAS requirements, there are few formal guidelines. Instead, the DMP focuses on a creative student research project as advised and approved by an advisor.

    By the time DMP evaluations are completed, diploma orders will already have been placed, so DMP students will receive a blank diploma at the Computer Science diploma ceremony. Actual diplomas will be received in the mail shortly after graduation.


    In general, a Distinguished Majors Program thesis should represent the creative research output of a single undergraduate student, guided by faculty advisors. Each interested student must apply separately and produce a separate thesis. Formally, no projects involving groups of students are allowed. In practice, students may, for example, work with a research group or a graduate student in the completion of a project. The DMP Thesis should reflect and represent the student’s individual work, as guided by faculty advisors. The extent to which collaborative work (e.g., a peer-reviewed publication on which two students are co-authors) should be included is left to the discretion of the advisor and DMP Director.

    (Intent: Collaboration is a critical component of creative research and scientific progress. The intent is not to limit research collaboration in any way, and collaboration with faculty advisors is expected. However, individual undergraduate students apply to the DMP program, and potential degree honors are conferred to individual undergraduates, so there must be a way to attribute work to an individual student.)


    Students will usually receive a recommendation for a baccalaureate award of DistinctionHigh Distinction or Highest Distinction upon successful completion of the DMP. This award will be visible on the student’s diploma.

    The thesis advisor and second reader will each give an independent rating to the thesis based on the following:

    1. marginal thesis
    2. good or acceptable thesis
    3. very good thesis
    4. exceptional thesis, in the top 10% of all DMP theses

    The thesis advisor evaluation should not come as a surprise to the student, since the advisor and the student should be meeting to discuss the progress of the research. The student’s final cumulative in-major GPA will be also assigned a value as follows:

    1. GPA 3.4 – 3.59
    2. GPA 3.6 – 3.79
    3. GPA 3.8 and above

    Students who fall below a 3.4 cumulative GPA or who obtain two thesis scores of 0 are no longer eligible to be distinguished majors. The 3.4 cumulative GPA is a College of Arts and Sciences school requirement, and it cannot be waived. There is no penalty beyond not receiving the award for students who are no longer eligible.

    Eligible students who complete the program receive baccalaureate awards based on the Distinguished Majors Program Director’s assessment of their thesis advisor evaluation, second reader evaluation and GPA.

    The student should give the evaluation form (DOCPDF) to the thesis advisor and second reader. It is the student’s responsibility to make sure that the advisor and reader turn in an evaluation to the DMP Program Director at least three weeks before the Final Exercises date on the academic calendar.

  • People



    David Evans

    Founding Director & Director of Distinguished Major

    Tom Horton


    Worthy Martin

    Former Director

    Tina Hittinger

    Senior Student Services Coordinator


    Rice Hall, Room 526




    BA Computer Science Steering Committee


    Tom Horton

    Associate Professor of Computer Science

    Jim Cohoon

    Associate Professor of Computer Science

    Jeff Holt

    Professor & Interim Chair of Statistics, Mathematics

    David Leblang

    J. Wilson Newman Professor of Governance and Chair, Politics

    David Germano

    Professor, Religious Studies


    BA Computer Science Founding Committee (2006)

    David Evans, committee chair

    Associate Professor, Computer Science

    J. Milton Adams

    Professor, Biomedical Engineering & Vice Provost of Academic Programs

    David Golumbia

    Assistant Professor, Media Studies, English and Linguistics

    Jeff Holt

    Associate Professor, Mathematics and Chair of Statistics

    George Hornberger

    Professor, Environmental Studies and Associate Dean for the Sciences

    Thomas Horton

    Associate Professor, Computer Science

    Greg Humphreys

    Assistant Professor, Computer Science

    Worthy Martin

    Associate Professor, Computer Science and Associate Director, Institute for Advanced Technology in the Humanities

    Gary McGraw

    CLAS BA Philosophy 1988 and Chief Technology Officer, Cigital, Inc.

    Dennis Proffitt

    Commonwealth Professor of Psychology and Director, Cognitive Science program

    Judith Shatin

    William R. Kenan, Jr. Professor of Music and Director, Virginia Center for Computer Music

    Mary Lou Soffa

    Owen R. Cheatham Professor and Chair of Computer Science (2004-2012)

    Portman Wills

    CLAS Echols 2002

  • Awards


    CRA Outstanding Undergraduate Researchers

    The CRA Outstanding Undergraduate Researchers Award is the premier national research award that recognized undergraduate research in Computer Science, given to students at North American universities by the Computing Research Association.


    Jonathan Burket (BACS 2013), Honorable Mention
    Matthew Weber, Honorable Mention


    Peter Chapman (BACS 2012), Runner-Up
    Jiamin Chen (BACS 2012), Honorable Mention
    Virginia Smith (BACS 2012), Honorable Mention


    Aleksander Morgan (BACS 2011, now at UVa Math), Honorable Mention


    Ethan Fast (BACS 2011, now at Stanford University), Honorable Mention
    Rachel Lathbury (BACS 2010, now at University of Pennsylvania), Honorable Mention


    Rachel Miller (BACS 2009, now at MIT), Finalist

    NSF Graduate Research Fellowships

    The National Science Foundation's Graduate Research Fellowships recognize outstanding graduate students and provides up to three years of funding to support a student's graduate work (over $100,000 total). Students may apply for NSF Graduate Research Fellowships as final-year undergraduates, or in their early years in a graduate program.


    Brielin Brown (BACS 2011, now at UC Berkeley)


    Sara Alspaugh (BACS 2009, now at UC Berkeley)
    Rachel Miller (BACS 2009, now at MIT)


    The information contained on this website is for informational purposes only.  The Undergraduate Record and Graduate Record represent the official repository for academic program requirements. These publications may be found at:
    Undergraduate Record: www.virginia.edu/registrar/catalog/ugrad.html 
    Graduate Record: www.virginia.edu/registrar/catalog/grad.html