BSCS Information

Page Last Updated: Thursday, May 30, 2024

  1. Undergraduate Record
  2. Declaring the Major
  3. Degree Handouts and Resources
  4. Degree Requirements
    1. School of Engineering and Applied Science General Requirements
    2. Introduction to Programming
    3. Foundation Courses
    4. Upper-Level Required Courses
    5. Computer Science Electives
    6. Applied Mathematics Electives
    7. Humanities and Social Science (HSS) Electives
    8. Unrestricted Electives
    9. GPA Requirement
  5. Capstone Information

Undergraduate Record

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

UVA BSCS Undergraduate Record

Declaring the Major

Students declare their major in the School of Engineering and Applied Science either in their second semester if they entered the school as a first year student or upon transfer to the School. More information can be found on the SEAS page for major declaration.

Engineering Students Changing Majors or Seeking a Second Major: Current SEAS students who want to change their major to the BSCS or add the BSCS as a second major can do so only after they have completed CS 2100 with a C- or better. In order to apply for the BSCS major, please complete the appropriate online DocuSign form:

Transferring from the Virginia Community College System: Update: We are currently reworking our VCCS transfer guide and will update this post when it is available. In the meantime, see the SEAS page for course transfers to see how courses transfer in.

Transferring Credits from Another University: Individual courses in Computer Science may be transferred from another university or college based on how the content in the course compares with our own. Please see your academic advisor in CS or email with the syllabus of the course.

Degree Handouts and Resources

Degree Requirements

All students completing the Bachelor of Science degree in Computer Science must fulfill the following requirements.

School of Engineering and Applied Science General Requirements

BSCS students must complete the unified set of general requirements for all engineering majors. More information can be found on the SEAS Curricular Requirements page. These courses are often completed during the first two years in SEAS, with the exception of STS 4500 and 4600, which are taken during the fall and spring of the fourth year, respectively.

NOTE: The above requirements apply to the class of 2027 and beyond. Students graduating in the class of 2024, 2025, and 2026 may have ENGR 1624, STS 1500, and an STS 2000 level elective as requirements instead of ENGR 1010, ENGR 1020, and STS 2600. Note that STS 2600 does fulfill the requirement of a 2000 level STS elective, but if other 2000 level courses are available, students who have this requirement in SIS can still take them. ENGR 1624 and STS 1500, however, will no longer be offered and students must take ENGR 1010 and ENGR 1020 if they are still missing these courses.

Introduction to Programming

All SEAS students (including CS majors) must complete one Introduction to Programming course as a part of their general SEAS requirements. Students may also complete this requirement through Advanced Placement (AP), International Baccalaureate (IB), or dual-enrollment credit. Some students with programming experience may wish to take the place-out test, which satisfies the requirement but does not award degree credit. More information can be found in the Place-Out Tests section below.

Choose one of the following:

  • CS 1110 - Introduction to Programming (Credits: 3) - A general introduction course, including a lecture and lab. Appropriate for all students, whether they have programming background or not.
  • CS 1111 - Introduction to Programming (Credits: 3) - An introduction course for students who have some programming experience but not enough to place-out of the course or who wish to review the material. Proof of programming experience may be required.
  • CS 1112 - Introduction to Programming (Credits: 3) - An introduction course only for students with no programming experience. Lecture and lab are combined.
  • CS 1113 - Introduction to Programming (Credits: 3) - A special topics introduction course that is offered occasionally. Check the specific course offering for more information.

Foundation Courses

These courses are the next set of courses students take after finishing Introduction to Programming and comprise the set of prerequisites needed for upper-level courses. The 2000 level courses should be taken before the 3000 level courses and note that there are other prerequisites that govern the order that these courses should be taken. An example schedule can be found in the Degree Handouts and Resources section.

Upper-Level Required Courses

BSCS majors must take one upper-level course in software engineering and one course to complete the SEAS senior thesis.

The senior thesis should be taken during the student’s last year and consists of the STS 4500/4600 sequence (see the General Requirements listed above) together with one of the following options:

Computer Science Electives

BSCS majors must complete 15 credits of CS courses at the 3000 level or higher. These courses must have the CS mnemonic. Courses from other disciplines will only be accepted under rare circumstances and by approval of the CS Undergraduate Curriculum Committee. Additional CS electives may be required as part of the CS 4991 option for the senior thesis or to fill in missing credits due to place-out test.

Guidelines for CS Electives:

  • Must have a CS mnemonic.
  • Must be at the 3000 level or higher.
  • Must not be a foundation course or upper-level required course
  • Second digit of course number must not be 0 or 9, except as noted below
  • Two electives with significant overlap of material cannot both count toward the CS degree.
  • Up to three (3) credits of CS 4993 - Independent Study may count toward the CS elective requirement. Credits beyond this limit may be applied to the unrestricted elective requirement.

Applied Mathematics Electives

BSCS majors must take three (3) additional courses in Applied Mathematics beyond the SEAS General Requirements. Equivalent courses from the Department of Mathematics may be substituted for matching APMA courses.

Choose two of these four:


  • APMA 3120 and APMA 3150 are both statistics courses with substantial overlap and thus cannot both count toward the BSCS degree. Students interested in taking these courses should choose one or the other.
  • APMA 3110 - Applied Statistics and Probability does not count toward the BSCS degree. Students switching to the BSCS major who have already had this course should consult with their advisor on further APMA courses.
  • STAT 3080 - From Data to Knowledge cannot be used in place of APMA 3150 due to differences in content.
  • If APMA 2130 is taken at another institution and transfers in as 3 credits, that is fine and it will still count. No replacement is necessary for the other credit.

Humanities and Social Science (HSS) Electives

BSCS majors must complete a total of fifteen (15) credits of HSS electives, which includes the nine (9) credits of HSS courses required by the general SEAS requirements. HSS electives are selected from an approved list (available in A122 Thornton Hall or in the UVA Engineering Undergraduate Handbook) of humanities and social science offerings. Communication courses in the student’s native or first language, regardless of their level, may not be used to satisfy this requirement. See the SEAS page regarding electives for more information.

Unrestricted Electives

BSCS majors must complete fifteen (15) credits of unrestricted electives. Unrestricted electives may be chosen from any graded course in the University except mathematics courses below MATH 1310; courses that substantially duplicate any others offered for the degree, including PHYS 2010, PHYS 2020, CS 1010, CS 1020; any introductory programming course; or SCPS courses. APMA 1090 counts as a three credit unrestricted elective. See the SEAS page regarding electives for more information.

GPA Requirement

BSCS majors must have a 2.0 GPA average for CS courses in order to graduate. For courses that must be repeated due to a failing grade or not obtaining the needed grade as a prerequisite for a later course, all grades (including the original grade) count toward the CS GPA.

Capstone Information

The BSCS Capstone is seperate but related to the SEAS Senior Thesis requirement for graduation. As a part of the SEAS Senior Thesis, students will take STS 4500 and STS 4600 during their last two semesters at UVA. Through these courses, students will create a Senior Thesis Portfolio according to the SEAS Thesis Portfolio Guide. The Portfolio contains several parts, most of which will be done through the STS courses.

However, the part that intersects with the CS Capstone is the “Technical Report.”

The CS Capstone is comprised of two parts:

  1. Three credits of student work, either through independent research or a CS elective
  2. Writing the technical report as a part of the SEAS Senior Thesis

There are two primary options for completing these two steps:

Option 1) Take 3 credits of CS 4980 and write the technical report at the end of this course. Whoever you take CS 4980 with will sign off on the paper as being your technical report component for your senior thesis portfolio that you do with STS during 4500 and 4600. Reach out to faculty to see what projects they may have or check out for ideas!

Option 2) Take a 6th CS elective (CS 4000 or higher) -AND- take the 0-credit CS 4991 course. The 6th CS elective will cover your required 3 credits needed for the capstone slot in your SIS Academic Requirements report. CS 4991 is the course in which we track and evaluate a your technical report that you come up with on your own. This course is pass/fail and you need a pass to graduate.

Q: How do I come up with my paper topic?
A: Here are two prompts to consider:

  • Describe an already completed computing experiential learning event ― internship, personal project, non-profit volunteer effort ― that offered documented value to a specific organization, community, or group. If appropriate, indicate how the project could be enhanced or redesigned for increased value.
  • Propose a synthesis of ideas from two completed CS courses that connects how topic(s) might be enhanced, extended, refined, or reworked.

Q: Do I have to take CS 4991 in the fall or can I take it in the spring?
A: It doesn’t matter which semester you take it. Prof. Vrugtman will take half of the BSCS students who want to do this option this fall and the other half in the spring. If you want to do it in the fall, it may already be full, but you can see if someone wants to drop or swap.

Q: I don’t want to do a 6th elective and would prefer research or an independent project.
A: Great! You can go to to see a list of potential projects or ideas. Even if the idea was posted a while ago, if you think it sounds cool, reach out to the professor! They may still be working on that project or have other ideas based on your interests! It never hurts to reach out to our faculty to talk about their research or your project ideas.