Old Curriculum

The information in these sections is intended for students who declared the BSCS or CS minor before the fall semester of 2021 and students who declared the BACS before the spring semester of 2022.  BSCS students who declare in fall 2021 or later and BACS students who declare in spring 2022 or later should refer to the New Curriculum section below.

  • Bachelor of Science Degree

    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.

    • APMA 3100 - Probability (Credits: 3)

    • Choose two of these four:

      • APMA 2130 - Ordinary Differential Equations (Credits: 4)

      • APMA 3080 - Linear Algebra (Credits: 3)

      • APMA 3120 - Statistics (Credits: 3)

      • APMA 3150 - From Data to Knowledge (Credits: 3)

    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.

  • Bachelor of Arts Degree

    Old Curriculum

    The information on this page is intended for students who can declare the BACS major before the end of spring semester of 2022 (i.e. have completed the prerequisites to declare the major by Fall 2021).  Students who will not have completed the prerequisites to declare the major by the end of Fall 2021 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

    Information on how to declare the BACS major can be found at: https://bit.ly/bacs-declaring

    Degree Handouts

     

    Advising for Spring 2021

    If you have completed CS 2110 with a C+ or higher (or a CR during a “covid” semester) by the end of fall 2021:

    • You will continue with the old curriculum through graduation.  Nothing in the new curriculum section applies to you.
    • If you have not yet declared the BACS degree, you will be able to declare the current BACS Interdisciplinary Major and follow the degree requirements given in the 2021-22 Undergraduate Record above.
    • You should complete CS 2150 in spring 2021 or fall 2022 (the last semester we plan to offer it).

    If you WON’T complete CS 2110 with a C+ or higher (or a CR during a “covid” semester) by the end of fall 2021, please see the New Curriculum section of this page for your degree requirements.

  • Computer Science Minor

    Old Curriculum

    The information on this page is intended for students who declared the CS minor before the fall semester of 2021.  Students who will declare the minor after fall 2021 should refer to the new curriculum page.

    Undergraduate Record

    The official undergraduate record contains the official rules for completing the CS minor.  If there is any disagreement between these pages and the rules in the undergraduate record, the record is the final authority.

    CS Minor Requirements

    The Computer Science minor requires credit for six CS courses as described below. Any undergraduate student in the university who will complete the requirements for the CS minor before graduation can submit the minor application form during the first week of their final semester in order to graduate with the CS Minor listed on their transcript.  (See Declaring a Major or Minor.)

    To obtain a minor in computer science, a student must complete the following requirements:

    • CS 1110 (or equivalent) - Introduction to Programming (Credits: 3)

    • 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)

    • Two additional CS courses numbered 3000 or higher

    Students with a computer science or computer engineering major are ineligible for the CS minor.

    Any student who completes 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.

    Notes:

    (1) If you place out of CS 1110 via the placement exam, you still have to take 6 C  courses; if you receive course credit for it via the AP exam or transfer credit, then you need not substitute a course in its place.

    (2) At most 3 credits of CS4993, Independent Study, can count as a CS elective for the minor.

General Information

The information in these sections is intended for all students interested in CS courses.  It includes information regarding which Introduction to Programming course to take, place-out tests, and more.

  • Which CS 1 Course Should I Take?

    If you have never programmed before, take CS 1110, 1112, 1113, or 1120. If you have programmed a little, take CS 1111 (or 1110 or 1113 if you can't get into 1111). If you have programmed a fair amount, you can probably get transfer credit or test out of CS 111x. More details follow.

    • CS 1110 - A basic introductory course that focuses on learning the basics of programming and computational thinking. No prerequisite required. Language: Python. Requires a lecture section and one of twelve labs. Final course size will be around 530 students. For more information, see http://cs1110.cs.virginia.edu
    • CS 1111 - Only students with some programming experience may take this course. This programming experience can be in any language. CS 1111 has the same assignments and tests as CS 1110, but does not require lab and moves slightly faster through some material since students are expected to have some exposure to basic concepts. Language: Python.
    • CS 1112 - Only students with no programming experience may take this course. Offered as a lecture + lab combination that meets three times a week. Language: Python. Students must submit a permission of instructor request  through SIS to request a seat in the course.
    • CS 1113 - CS1 special topics and can vary from semester to semester. In the past we have offered a version focused on a mathematical approach to computing and a version emphasizing uses of computing in engineering disciplines.
    • CS 1120 - A course designed as an introductory course for the BACS, it now counts the same for all majors and schools.

    Note - You can only receive credit for 1 CS 111X or 1120 course.

     

  • AP, IB, Dual Enrollment, and Place-Out Tests

    Please see Introduction to Programming and Place-Out Tests for more information.

  • Transferring to Computer Science

    Transferring from Another Major

    Please contact the program director of the program you wish to transfer into to determine whether this will be possible or not.

    Transferring Between the School of Engineering and Applied Science and the College of Arts and Sciences

    Transferring between schools at UVA is handled by the dean's office of each school.  For information on how to transfer, please contact the appropriate dean's office.  For students who are already declared as either BSCS or BACS, if you are allowed to transfer between schools, your degree will be switched to the appropriate one for your new school.  This will affect some of your graduation requirements, so make sure to speak with your CS academic advisor.

    Transferring from the Virginia Community College System

    The current transfer guide for students coming from a Virginia community college can be found at http://arcanum.cs.virginia.edu/csdept/UVA_BSCS_Transfer_Guide_F22.pdf Please see the transfer information at http://transfercredit.uvacs.org for more general information about how to transfer.

    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 cs-student-support@virginia.edu with the syllabus of the course.

    Notes about Transferring Courses

    Some courses will transfer automatically when coming to UVA, but some will require manual intervention from CS office staff.  Please see your academic advisor in CS for assistance with this process.

  • Fifth Year Masters Program

    General Information

    Please see the information on the Computer Science Graduate Program page at https://engineering.virginia.edu/departments/computer-science/cs-graduate-program#accordion403365

    UVAccelerate

    https://at.virginia.edu/uvaccelerate

    Current UVA undergraduate students can apply to a Master of Engineering (M.E.), Master of Computer Science (M.C.S.), or Master of Materials Science and Engineering (M.M.S.E.) degree program in the third year of your undergraduate studies. These programs require 30 credits of course work as part of an approved plan of study, and with the right planning you may be able to get a head start on taking graduate-level courses while finishing your bachelor’s degree. Save time and money by accelerating your time to completion of a master’s degree! See the link for more information.

     

  • Student Email Lists

    All Undergrad CS Students Department List (cs-ugrads@virginia.edu): A list called cs-ugrads@virginia.edu is used to send important messages to all our undergraduate computing majors (BSCS, BACS, and BSCpE majors). At least once a year, we update these lists and add all our majors.

    Computing Jobs Mailing List (computingjobs@collab.itc.virginia.edu): CS faculty and staff routinely receive emails from various organizations, companies, individuals, and colleagues at UVa that are interested in hiring students, either for full time positions or internships. There is a Collab site called "Computing Jobs" that you can join and browse the email archive there. Faculty and staff will forward opportunities that we get to this Collab site. You are welcome to join and unjoin from the site at your leisure. To join the site, login to Collab and in the Home tab, choose Membership. In the Membership screen, select Joinable Sites and then search for Computing Jobs. You can then add the site to your list of Collab sites and will receive job postings as they come in.

  • Undergraduate Research Opportunities

    Facutly are often looking for undergrads interested in research, either for paid positions or course credit.  See http://research.cs.virginia.edu for a list of projects and faculty.

  • CS Department Grading Guidelines

    This document was approved as an official guideline for the CS department and its associated courses by vote of the CS faculty on 2019-02-18.

    CS Grading Guidelines

    The giving of grades is a well-established component of our educational system, but the meaning of those grades is not. In an effort to provide some clarity and consistency, the CS department provides the following guidelines. These guidelines are not a grading system, but rather definitions which resulting grades should approximate. Individual courses may establish different definitions in their beginning-of-course memo. Using the definitions in this document will help students understand which subsequent courses and experiences they are prepared to excel in and which they are not yet ready to undertake.

    Course grading practice should be described in syllabi or beginning-of-course memos. Such descriptions should explain how the activities and assessments in the course contribute to student grades. Grading practices should result in final grades that approximate the definitions contained in this document.

    It is traditional for grades to reflect a combination of several kinds of learning objectives, including but not limited to communication skills, creativity, learning, participation, professionalism, skill, teamwork, timeliness, understanding, etc. Each course may combine these learning objectives differently while still satisfying the following definitions.

    • "A" is used for students who demonstrate mastery of all learning objectives. An “A” should be seen as a recommendation that the student would likely do well in areas that depend on these objectives in the future.
    • "B" is used for students who demonstrate competence in all significant learning objectives. A “B” should be seen as an acknowledgement that the student would be able to do well in areas that depend on these objectives in the future, but that their learning was incomplete; they are encouraged to review and improve in this topical area if it is a significant part of their future plans.
    • "C" is used for students who demonstrate sufficient competence in enough of the learning objectives that subsequent work can be contemplated. A “C” should be seen as a caution that some aspects of the course seem to be missing or misunderstood and that future efforts in areas that depend on these objectives are likely to be challenging unless those gaps are first filled.
    • "D" is used for students who demonstrate minimal competence in learning objectives, but not enough to recommend further studies or activities in related areas. A “D” should be seen as a prediction that future efforts in areas that depend on these objectives are unlikely to be successful unless the course that gave the “D” is first retaken.
    • "F" is used for students who failed to demonstrate minimal competence in learning objectives. An “F” should be seen as indicating that future efforts in areas that depend on these objectives should not be undertaken without first retaking the course that gave the “F”.

    Misconduct or lack of professionalism may result in a lower grade than demonstrated competence would otherwise indicate. The scope and nature of such reductions, if any, may be determined independently for each course offering.