CS Undergraduate Programs

  • Prospective Students

    The computer science department in the University of Virginia offers quality programs that emphasizes basic science, technical mastery, research opportunities and a firm grasp of scientific principles as well as strong communication skills and creative problem solving. The department offers a Bachelor of Science in Computer Science, a Bachelor of Arts in Computer Science (in collaboration with UVA’s College of Arts & Sciences), and a Bachelor of Science in Computer Engineering (in collaboration with the UVA Charles L. Brown Department of Electrical and Computer Engineering). The department also offers a Computer Science Minor for Undergraduates.

    Undergraduate students are not admitted to particular majors at the University of Virginia. Instead, they are admitted to a school at the University, and later declare a major.

    The Department of Computer Science resides within the School of Engineering and Applied Science (SEAS), but offers majors both to students admitted to SEAS and to students admitted to the College of Arts and Sciences. Students who perform adequately in early CS courses are admitted to a CS major upon major application regardless of their school.

    We would love for you to visit UVA! Start by viewing the Engineering School's "Visit Us" page for details.  

  • Admissions / Tuition

    Learn about the requirements, application process, transfer information, cost, and more at the Engineering School's undergraduate admissions page

    Questions regarding admissions should be directed to undergradadmission@virginia.edu

    For questions or more information specific to computer science, contact cs-admissions@virginia.edu

    The information contained on this website is for informational purposes only.  The Undergraduate Record represents the official repository for academic program requirements. This publication may be found here: www.virginia.edu/registrar/catalog/ugrad.html.

    The UVA Tuition and Fees page includes the costs per academic year by school. 

  • Undergraduate Degree Information and Advising

    The Computer Science Department offers both a Bachelor of Science degree through the School of Engineering and Applied Science and a Bachelor of Arts degree through the College of Arts and Sciences. For more information about these degree programs, along with advising information and example schedules, please go to https://engineering.virginia.edu/computer-science-undergraduate-advising or http://uvacsadvising.org.

    UVA CS Advising Page
  • Differences: BS vs. BA Degree

    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 (aka CpE) degree which is jointly administered with the Electrical and Computer Engineering Department .

    The main similarities and 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). For example, the traditional option for these includes 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. 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. With the creation of the new curriculum as outlined at http://advising.uvacs.org, students in both degree programs will complete the same CS foundation requirements - CS 111X, CS 2100, CS 2120, CS 2130, CS 3100, CS 3120, CS 3130, and CS 3140.  BACS students need to complete CS 111X and CS 2100 in order to declare the major.
    3. BSCS students are required to take CS 3240 (Advanced Software Development) and a course counting toward the CS capstone requirement, while BACS students are not.

    4. Both degrees require additional courses be taken as CS electives, which are CS courses at the 3000-level or above that are in addition to a degree's required courses described above. The BACS degree requires 3 CS elective courses (9 credits), while the BSCS requires 5 courses (15 credits).

    5. 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. Look under the BACS tab at http://advising.uvacs.org for a list of pre-approved integration electives.

    6. The BSCS degree (like all Engineering School degrees) requires a fourth-year thesis. This involves taking STS 4500 (in which students write a thesis proposal) and STS 4600 (in which students complete a thesis report), and writing a technical thesis. 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.
  • Declaring a Major or Minor

    BS Major | CS Minor | BA Major


    Declaring the BS Major

    First-year students: All first-year Engineering students choose their major in the Spring semester of their first year. At that time, students seeking either the BSCpE or BSCS major will submit their preference to Engineering Dean's Office which manages that process.

    Engineering Students Changing Majors or Seeking a Second Major: It is strongly suggested for students to be enrolled in (or to have already completed) CS 2150 or CS 2100 prior to applying to the BSCS major; applications from students who are currently enrolled in CS 2150 or CS 2100 may not be processed until after the its grade is posted in SIS. In order to apply for the BSCS major, you must turn in the appropriate form below, along with a copy of your unofficial transcript from SIS to cs-office@virginia.eduor in person to the CS desk (Rice Hall 527).

    The program director will generally review these requests after each deadline.

    At this time, Engineering students are not eligible to apply for the BACS (i.e., the College degree) as a second major.

    Intra-University Transfer Students: Engineering accepts transfer applications for non-SEAS UVa students, currently once a year. Qualified applicants who want to transfer into Engineering to become BSCpE or BSCS majors will be considered on a space-available basis given our target caps for each class year. Such students should follow the Engineering application process, and must contact the Computer Science (CS) department contact person listed in the Engineering webpage before applying. Contact Lisa Lampe and Mark Sherriff for more information. 

    Transfer Students from Outside the University: Students transferring into the University from other institutions must apply to the department to be allowed to declare the BSCS or BSCpE major. Qualified applicants will be considered on a space-available basis, given our target caps for each class year. Applications will be considered the summer before a transfer student begins classes, and the application process will be discussed during the summer orientation session. If an incoming transfer does not attend summer orientation, they must meet with a department advisor before classes begin to discuss applying. 

    Transfer students without the CS 1110 equivalent before their first semester in residence cannot be accepted into the major. Due to prerequisite dependencies, it is difficult for rising 3rd-year students who have not completed CS 2110 and CS 2102 or CS 2100 and CS 2120 to complete the BSCS in the 4 remaining semesters. It is important that students transferring to the University as third-years complete the equivalent of these courses before coming to UVa. In exceptional cases, students in this situation may apply for the major, but the ability to complete the degree in a timely fashion is one factor that will determine if you are accepted into the degree program.


    Declaring a Minor in CS

    Any undergraduate student in the university who has completed CS 2100 with a C- or better can apply for the minor.  To apply for the minor, submit the SEAS minor application form and an unofficial transcript to cs-office@virginia.edu

    The Computer Science minor requires credit for six CS courses as described in the Undergraduate Record.   

    Any student who has not declared but is able to complete all of the requirements for a minor in Computer Science before graduation will be awarded the minor if they submit the minor request form at the beginning of their graduation semester. 

    More information regarding the CS Minor can be found in the section above or contacting contact  cs-office@virginia.edu.     

    BS in Computer Engineering majors: When the CpE program was created, it was decided by the two departments that CpE students could not declare the minor in CS. Because the CpE combines CS and EE, graduates with this degree will automatically have the equivalent of the minor in CS.  

    Declaring a BA Major

    Can I declare? The BACS was created for College students who want to combine the study of computer science with coursework that combines computing with other fields of the arts and sciences. Engineering students are not eligible to declare the BACS and should instead declare the CS minor or the BSCS as a second major. Students from other schools should contact the Director of the BACS program at bacsdirector@virginia.edu

    To declare the BACS, you must have completed the prerequisites at the time you submit your major declaration. They are:  CS1110 or equivalent with a C+ or higher, and CS2110 or CS 2100 or equivalent with a C+ or higher.

    Incoming transfer students who believe they have met the prerequisites should contact the BACS Director by emailing bacsdirector@virginia.edu to be advised and have any questions about course equivalencies resolved.

    How do I declare? To declare you will complete a CS department declaration form and submit that when you submit the College’s Major Declaration form using DocuSign. Information on how to do all of this can be found at this link: https://bit.ly/bacs-declaring.  Be sure to follow the instructions on that page (and don’t just follow the College website’s instructions about DocuSign).

    When can I declare? You can submit your declaration any time, but our staff may not necessarily process it immediately. (In particular, those submitted in summer may not be processed until mid-August.) Declaration forms will be reviewed on a rolling basis and pending submissions will normally be handled by the 15th of each month (but not in the summer). We will attempt to process declaration forms submitted at peak times (start of fall term, right before course registration) more promptly.

    Will I be accepted into the major? All College students who meet the prerequisites will be allowed to declare. Currently there are no “caps” or limits on the number of College students who can declare the BACS. So it is not a competitive admissions situation.

    Questions? Send email to cs-admissions@virginia.edu with a subject line "BACS application question".

  • Bachelor of Science in Computer Engineering

    The Computer Engineering Program (a program that CS offers in collaboration with the Charles L. Brown Department of Electrical and Computer Engineering) gives students an opportunity to work with some of the top researchers in the country and to participate in new research initiatives.

    About the Computer Engineering Program
  • Cyber Security Focal Path

    A focal path is a selection of courses that a student can take to fulfill the various elective requirements, which are described in detail in the sections on elective information for the various majors. They do not change any of the requirements, and students are not required to follow a focal path. They are included simply to give prospective majors an idea about various classes that they can take to fulfill an interest that they may have in computing. The Department of Computer Science has a Cybersecurity Focal Path that includes ten courses. Once the courses are completed, the student can apply for a Letter of Completion.

    Cybersecurity Focal Path required courses
  • Current Students - Helpful Info

    Important Information for UVA Engineering Undergrads - This page includes useful links and information for current UVA Engineering undergraduate students. If there is information needed that is not on this page, contact the office of undergraduate programs

    Job Board - opportunities for internships, jobs, etc. can be found on this page.

  • CS Course Enrollment Dates

    Enrollment for Spring 2023 is November 7, 9 - 11, 2022.

  • Accreditation

    The Bachelor of Science in Computer Science degree offered by the Department of Computer Science is accredited by the Computing Accreditation Commission of ABET, https://www.abet.org.

    The Bachelor of Science in Computer Engineering degree offered jointly by our department and the Department of Electrical and Computer Engineering is accredited by the Engineering Accreditation Commission of ABET, https://www.ABET.org

    Each degree program has defined Program Educational Objectives (PEOs), which are broad statements that describe the career and professional accomplishments that the program is preparing graduates to achieve. In addition, each program has defined Student Outcomes (SOs), which are are narrower statements that describe what students are expected to know and be able to do by the time of graduation. These relate to the skills, knowledge, and behaviors that students acquire in their matriculation through the program.

    These objectives and outcomes for the BS in Computer Engineering are found on this page.

    Those for the BS in Computer Science are documented below.

    Program Educational Objectives for the BSCS

    Graduates of the Bachelor of Science program in Computer Science at the University of Virginia:

    1. have the knowledge and skills that allow them to make tangible contributions in their profession.
    2. have the knowledge and skills that allow them meet new technical challenges.
    3. are able to contribute effectively to society.
    4. are able to work effectively as team members.
    5. have the ability to be innovators in the design, analysis and application of computer systems.


    Student Outcomes for the BSCS

    By the time of graduation, students in the BS in Computer Science program at the University of Virginia are able to: 

    1. Analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions. 
    2. Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program's discipline.  
    3. Communicate effectively in a variety of professional contexts. 
    4. Recognize professional responsibilities and make informed judgments in computing practice based on legal and ethical principles. 
    5. Function effectively as a member or leader of a team engaged in activities appropriate to the program's discipline. 
    6. Apply computer science theory and software development fundamentals to produce computer-based solutions. [Program Specific for Computer Science] [Ref]


    Enrollment & Graduation Statistics

    The Bachelor of Science in Computer Science (BSCS) enrollment and graduation statistics can be found on the UVA Engineering School's Enrollment & Graduation Statistics page