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 U.Va.’s College of Arts & Sciences), and a Bachelor of Science in Computer Engineering (in collaboration with the U.Va. 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

    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

  • Undergraduate Curriculum Transition Plan

    After years of careful analysis and design, including piloting new courses and getting approvals from the school and university, the Computer Science department is changing its curriculum. The largest component of this change involves moving topics between courses to reduce duplication and improving flow among the early courses in the both the BACS and BSCS programs, creating the "new foundation" courses. 

    UG Curriculum Transition Plan
  • 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://advising.uvacs.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 tak 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, prior to applying to the BSCS major; applications from students who are currently enrolled in CS 2150 may not be processed until after the CS 2150 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, by the application deadlines: October 15 and February 15 each year.​

    The completed form and transcript can be turned in to the main CS desk (Rice Hall 527). The Program director will generally review these requests after each deadline.

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

    Intra-University Transfer Students: SEAS accepts transfer applications for non-SEAS UVa students, currently once a year. Qualified applicants who want to transfer into SEAS 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 SEAS application process, and must contact the Computer Science (CS) department contact person listed in the SEAS webpage before applying. Contact Lisa Lampe and Jim Cohoon 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 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

    Due to the demand for computing courses, the department can only accept a limited number of students to declare a minor in Computer Science. The CS department continues to work with the university to obtain resources that will allow more students to declare the Computer Science minor.

    Students wishing to declare the minor will be considered after completing CS 2150. The normal deadline is March 1. Applicants who have already completed CS 2150 will be notified if they have been accepted as a CS minor by April 1. Applicants who are currently enrolled in CS 2150 will be notified if they have been accepted as a CS minor by June 1.

    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-student-support@virginia.edu

    Students apply to the Computer Science minor by completing the Additional Major - Minor (Minor Declaration) Form and attaching and unofficial transcript from SIS.  The completed form and transcript can be turned in to the main CS Office (Rice Hall 527) by the deadline or sent by email to the address above. 

    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. SEAS 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 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 - Spring 2022

    Visit the page listed below to see a list of enrollment open dates by course number. 


    Enrollment Dates for Spring 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, http://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.

    Graduation Data

    Graduation data for these degree programs is included on this page that provides such information for all SEAS undergraduate degrees.

    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

    The BS in Computer Science program at the University of Virginia enables students to achieve, by the time of graduation:
    ·      (SO-a) An ability to apply knowledge of computing appropriate to the discipline.
    ·      (SO-b) An ability to design, implement, and evaluate a computing-based solution to meet specifications.
    ·      (SO-c) An ability to apply computer science and software engineering principles to develop quality computer-based systems of varying complexity.
    ·      (SO-d) An ability to function effectively on teams to develop a computer-based system.
    ·      (SO-e) An ability to communicate effectively.
    ·      (SO-f) An ability to analyze the local and global impact of computing and engineering on individuals, organizations, and society.
    ·      (SO-g) An understanding of professional, ethical, and legal issues and responsibilities.