Old Curriculum
The information on this page is intended for students who declared the BSCS major before the fall semester of 2021. Students who will declare the major after fall 2021 (or have previously taken CS 2100) should refer to the new curriculum page.
Undergraduate Record
The official undergraduate record contains the official rules for completing the degree program. If there is any disagreement between these pages and the rules in the undergraduate record, the record is the final authority.
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.
Degree Handouts
Degree checklist, example schedule, and prerequisite chart: http://bscsoldchecklist.uvacs.org
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.
-
APMA 1090 - Single Variable Calculus I (Credits: 4)
-
APMA 1110 - Single Variable Calculus II (Credits: 4)
-
APMA 2120 - Multivariable Calculus III (Credits: 4)
-
CHEM 1410/1411 - Introductory Chemistry I & Lab (Credits: 4)
-
CS 1110/1111/1112/1113 - Introduction to Programming (Credits: 3) (more info below)
-
ENGR 1624 - Introduction to Engineering
-
PHYS 1425/1429 - Introductory Physics I & Lab (Credits: 4)
-
PHYS 2415/2419 - Introductory Physics II & Lab (Credits: 4)
-
STS 1500 - Science, Technology, and Contemporary Issues (Credits: 3)
-
STS 2000 or 3000 level - STS Elective (Credits: 3) (see Department of Engineering and Society for more information)
-
STS 4500 - STS and Engineering Practice (Credits: 3)
-
STS 4600 - The Engineer, Ethics, and Professional Responsibility (Credits: 3)
-
Math and Science Elective (Credits: 3)
-
Humanities or Social Science Electives (Credits: 9) (more info below)
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.
Lower-Level Required 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.
-
CS 2110 - Software Development Methods (Credits: 3)
-
CS 2120 (or CS 2102) - Discrete Mathematics and Theory 1 (Credits: 3)
-
CS 2150 - Program and Data Representation (Credits: 3)
-
CS/ECE 2330 - Digital Logic Design (Credits: 3)
Upper-Level Required Courses
BSCS majors must take five upper-level courses and one course to complete the CS capstone (as a part of the SEAS senior thesis requirement):
-
CS 3102 (or CS 3120) - Theory of Computation (Credits: 3)
-
CS 3240 - Advanced Software Development Techniques (Credits: 3)
-
CS 3330 - Computer Architecture (Credits: 3)
-
CS 4102 (or CS 3100) - Algorithms (Credits: 3)
-
CS 4414 - Operating Systems (Credits: 3)
-
The CS capstone (senior thesis) should be taken during the student’s last year and consists of the STS 4500/4600 sequence (see the SEAS General Requirements listed above) together with one of the following options:
-
CS 4980 - Capstone Research (Credits: 3)
-
CS 4971 - Capstone Practicum II (Credits: 3)
-
CS 4991 - Capstone Technical Report (Credits: 0) AND a three-credit, graded CS 4000 course not used to fulfill any other CS degree requirement
-
NOTE: CS 4971 may not be offered every year. It will not be offered in Spring 2022.
Computer Science Electives
BSCS majors must take five (5) 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
-
Must be three (3) credits (or more)
-
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.
Note that 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. Also, 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.
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.