CS Undergraduate Curriculum Transition Plan


After years of careful analysis and design, including piloting new courses and getting approvals from the school and university, the CS department is changing its curriculum. The largest component of this change involves moving topics between courses to reduce duplication and improve flow among the early courses in the both the BACS and BSCS programs, creating the "new foundation" courses. Because of that change, it is generally not possible to mix-and-match courses from the old and new curriculum.

The information on this page is intended to answer general questions about the transition that may be asked by students, faculty, staff, and future CS students.  For questions beyond the information found here, please contact Prof. Mark Sherriff, Chair of the New Curriculum Committee.

NOTE: The information on this page represents the most current information and replaces older documents. 

Last Updated: 06/29/2021

Undergraduate Record

The University of Virginia Undergraduate Record is the final authority on all program degree requirements.  The information here is meant to supplement the official undergraduate record.  In any instance where there is disagreement between the information found here and in the undergraduate record, the record's information will be followed.

 

The Old and New Courses and Curricula

For the rest of this page, we will refer to the degree requirements outlined in the AY 20-21 Undergraduate Record for the BSCS, BACS, and CS Minor as the "old course sequence."  This course sequence includes CS 2102, CS 2110, CS 2150, CS 3330, and CS 4102 (including other courses for each degree program).  We will refer to the upcoming changes (which will be in the AY 21-22 Undergraduate Record for the BSCS and CS Minor and likely the AY 22-23 Undergraduate Record for the BACS) as the "new foundation course sequence."  This course sequence includes CS 2100, CS 2120, CS 2130, CS 3100, CS 3120, CS 3130, and CS 3140.

Information for Incoming Students (Fall 2021)

Engineering and Applied Science Students

  • All engineering students without credit for CS 1110 should plan to take CS 1110, 1111, 1112, or 1113 their first year while also completing other SEAS general requirements.  Students may also opt to take a place-out test (see below for more information).
  • Students entering the engineering school with credit for CS 1110 (through AP, IB, dual-enrollment, etc.) who wish to major in Computer Science or Computer Engineering are strongly encouraged to not take CS 2110, but instead take CS 2100 (DSA 1) and CS 2130 (CSO 1) in the spring as a part of the new foundation course sequence.  If students want to take a CS course in the fall, we recommend CS 2120 (DMT 1).
  • Students entering the engineering school with credit for CS 1110 (through AP, IB, dual-enrollment, etc.) who wish to major in System Engineering are welcome to take CS 2110 in either the fall or spring.  CS 2110 will not be offered beyond the spring 2022 semester and Systems Engineering will transition to a new course for the next acadmic year.

College of Arts and Sciences Students

  • College students typically do not declare the BACS major until their second year at the earliest.
  • College students without credit for CS 1110 who wish to eventually declare the BA major should plan to take CS 1110, 1111, 1112, or 1113 during their first year, while also completing other College general requirements.  Students may also opt to take a place-out test (see below for more information).
  • College students entering UVA with credit for CS 1110 (through AP, IB, dual-enrollment, etc.) who wish to apply for the BA major are strongly encouraged to not take CS 2110, but instead take CS 2100 (DSA 1) and CS 2130 (CSO 1) in the spring as a part of the new foundation course sequence.  Note that DSA 1 is a prerequiste for declaring the major.  If students want to take a CS course in the fall, we recommend CS 2120 (DMT 1).

Transfer Students

  • Depending on the courses you took at your previous institution, we anticipate that transfer students coming in as second or third years will take the old course sequence.  See the appropriate Undergraduate Record above for a list of required courses.
  • Transfer students should plan to take a reasonable load of CS courses in their first year at UVA to ensure they can complete the needed requirements on time.

Choosing a CS 111X Course

All CS 111X courses have similar learning outcomes and students will be successful in later CS courses regardless of the CS 111X course they take.  You should take the course that makes the most sense for you based upon your previous programming experience.

  • 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.  Course uses the same assignments and tests as CS 1110, but students do not have to attend a lab.  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.

More information can be found at https://engineering.virginia.edu/introduction-programming-and-place-out-tests.

Place-Out Tests

  • Students who have sufficient programming experience in most any language (e.g. Python, Java, C++, C#, etc.), but do not have degree credit for CS 1110 may choose to take a place-out test for CS 1110.  Place-out tests can be requested from the CS office in Rice 527 between [time to be determined].  Upon completing a place-out test and turning it in to the CS office, a CS faculty member will determine whether the student has sufficient background and experience with the material to move on to the next course.  NOTE: Passing a place-out test DOES NOT award degree credit.  It only grants an exception to needing the course as a prerequisite to move on.  Students will have to make up these credit hours with a technical elective (typically another CS elective for CS and CPE majors).
  • While there is a place-out test available for CS 2110, there are no tests available yet for the new foundation courses.  We strongly recommend that students who feel they have programming experience beyond CS 1110 but no degree credit sign up for CS 2120 (DMT 1) in the fall and CS 2100 (DSA 1) and CS 2130 (CSO 1) in the spring.

More information can be found at https://engineering.virginia.edu/introduction-programming-and-place-out-tests.

Schedule Suggestions Summary

  • SEAS Students:
    • Considering majoring in CS or CPE:
      • Starting with CS 111X - Take the appropriate CS 111X course during your first year.  Take CS 2100 and CS 2130 the following semester.  Take CS 2120 either at the same time as CS 2100 and CS 2130 or the semester after along with CS 3140.
      • With credit for CS 111X - Wait until the spring 2022 semester to take CS 2100 and CS 2130 together when they are offered for the first time.  If you want to take a CS course in fall 2022, we recommend CS 2120.
    • All other SEAS Students: Take the appropriate CS 111X course during your first year if you do not already have credit.
  • College Students
    • Considering the BACS major:
      • Starting with CS 111X - Take the apprpriate CS 111X course during your first year.  Take CS 2100 and CS 2130 the semester after that and apply for the major at the end of that semester.  Watch for information from the Director of the BA program during that time period.
      • With credit for CS 111X - Take CS 2100 and CS 2130 in the spring 2022 semester or fall 2022 semester.  Take CS 2120 when it fits in your schedule in the first three semesters.  Apply for the major after you have taken CS 2100.  Watch for information from the Director of the BA program during that time period.

 

Information for BSCS / BACS Majors who have taken CS 2110

  • Students who currently have credit for CS 2110 will need to finish their degree in the old course sequence.  Because material has been moved between various courses, it is generally not possible to mix-and-match courses from the old course sequence and the new foundation course sequence.  Thus, the majority of the new changes only affect current BSCS and BACS students who were a part of the pilot program for the new courses (and thus did not take CS 2110).  The one exception is that some new foundation courses will count toward either the old or new degree requirements, as shown in the table below.  SIS is encoded to allow you to take either course and it will count properly.  Depending on the semester you need to take a given course, you may need to sign up for the new equivalent version.
Old Course Equivalent New Foundation Course Differences
CS 2102 Discrete Mathematics CS 2120 Discrete Mathematics and Theory 1 2120 is more fully specified, including coverage of proof writing skills; these were optional in 2102 and present in only some sections
CS 3102 Theory of Computation CS 3120 Discrete Mathematics and Theory 2 3120 has an additional prerequisite (CS 3100 or CS 4102) and includes more coverage of the mathematical characteristics of algorithms and data structures
CS 4102 Algorithms CS 3100 Data Structures and Algorithms 2 4102 focuses more on proofs of algorithm correctness, and 3100 covers a wider array of algorithms including basic machine learning algorithms
  • Students should pay careful attention to the charts below to ensure they complete the needed courses before they are phased out of the curriculum.  Any student on a normal progression path should have no trouble completing the courses before this occurs.

General Information for BSCS Majors

  • BSCS students will graduate under the old course sequence if they have taken CS 2110.  Once a student no longer has the option of taking CS 2110 and must instead take CS 2100, then that student must graduate under the new foundation course sequence.
  • The old course sequence contains CS 2110, CS 2150, CS/ECE 2330, CS 3330, and CS 4414.
  • The new foundation course sequence instead contains CS 2100, CS 2130, CS 3130, and CS 3140.
  • Both course sequences also include the three courses in the equivalence table above, CS 1110, and CS 3240.
  • By default, the academic year in which you declare a major is used to pick the version of the major you are in, depending on when you have the option to either take CS 2110 or CS 2100. As a special case, students who declare the major in AY 21-22 or later but who have taken AY 20-21 courses will be given the AY 20-21 degree requirements.
  • For transfer students during the summer of 2021 and 2022, we expect you will be on the old course sequence, but should check with your transfer advisor.
  • Incoming first year students for the fall of 2021 should wait until the spring 2022 semester to take CS 2100 and CS 2130 in order to be in the new foundation course sequence.  Incoming first year students that take CS 2110 in the Fall 2021 semester will need to remain on the old course sequence throughout their time at UVA.

 

General Information for BACS Majors

  • BACS students will graduate under the old course sequence if they have taken CS 2110.  Once a student no longer has the option of taking CS 2110 and must instead take CS 2100, then that student must graduate under the new foundation course sequence.
  • The old course sequence contains CS 2110 (as prereq), CS 2150, and CS 3330.
  • The new foundation course sequence instead contains CS 2100 (as prereq), CS 2130, CS 3130, and CS 3140.
  • There are other differences between the degree requirements outside the new foundation course sequence and the record should be consulted.
  • By default, the academic year in which you declare a major is used to pick the version of the major you are in, depending on when you have the option to either take CS 2110 or CS 2100.
  • For transfer students during the summer of 2021 and 2022, we expect you will be on the old course sequence, but should check with your transfer advisor.
  • Incoming first year students for the fall of 2021 should wait until the spring 2022 semester to take CS 2100 and CS 2130 in order to be in the new foundation course sequence.  Incoming first year students that take CS 2110 in the Fall 2021 semester will need to remain on the old course sequence throughout their time at UVA.

 

Information for CS Minors

  • The old course sequence contains CS 2110 and CS 2150.
  • The new foundation course sequence instead contains CS 2100, CS 2130, and CS 3140.
  • By default, the academic year in which you declare a minor is used to pick the version of the minor you are in. 
  • There may be special exceptions when a student declares the minor in their final semester, having taken course in the old course sequence.  Please consult with the minor advisor for more details.
  • Please consult the appropriate Undergraduate Record for the specific courses that are required for the year a minor is declared.

 

Anticipated Schedule of Changes

The exact change schedule will vary based on the speed at which the new BA CS program is approved (the following assumes it will be approved prior to Spring 2022) and the facility with which we can transition students who took old course prereqs into new or changed courses.

Entries show "--" if the course is not planned on being offered; a new course number if a different course will satisfy this requirement; and "Changed" if the course will remain, but its contents or prerequisites change.

New Foundation Courses

Course Fall 2021 Spring 2022 Fall 2022 Spring 2023 Fall 2023 Spring 2024 and beyond
CS 2100 -- Yes Yes Yes Yes Yes
CS 2120 Yes Yes Yes Yes Yes Yes
CS 2130 -- Yes Yes Yes Yes Yes
CS 3100 -- -- Yes Yes Yes Yes
CS 3120 -- -- -- Yes Yes Yes
CS 3130 -- -- Yes Yes Yes Yes
CS 3140 -- -- Yes Yes Yes Yes
CS 3240 Yes Yes Yes Yes Changed* Changed*
CS 4457 Yes Yes Yes Yes Yes Changed*

Old Course Sequence

Course Fall 2021 Spring 2022 Fall 2022 Spring 2023 Fall 2023 Spring 2024 and beyond
CS 2102 CS 2120 CS 2120 CS 2120 CS 2120 CS 2120 CS 2120
CS 2110 Yes Non-Majors# -- -- -- --
CS 2150 Yes Yes Non-Majors# -- -- --
CS 2330 ECE 2330 ECE 2330 ECE 2330 ECE 2330 ECE 2330 ECE 2330
CS 3102 Yes Yes Yes CS 3120^ CS 3120^ CS 3120^
CS 3240 Yes Yes Yes Yes Changed* Changed*
CS 3330 Yes Yes Yes Yes Changed* Changed*
CS 4102 Yes Yes CS 3100 CS 3100 CS 3100 CS 3100
CS 4414 Yes Yes Yes Yes Yes Changed*
CS 4457 Yes Yes Yes Yes Yes Changed*

* Adds a prereq and changes content.

^ Has extra prereqs compared to the course it replaces.

# At this point, these courses are being offered mainly for students in other majors or for legacy reasons need to remain on the old course sequence.  Most CS majors should plan to move to the new foundation course sequence before this point.

Common Questions

  • Which courses should I take?

    Whichever are offered when you are ready for your second CS course, with a preference for the new courses if both are being offered. In practice, this generally means that if you take CS 2100, you use the new courses; if you take CS 2110, you use the old courses.

  • I'm in a degree program not listed here. How will this affect me?

    We haven't had official word from other degree programs yet. When we do, we'll add it here.

  • I took some of the old courses, then took a year off and now the rest of the old courses are not offered. What do I do?

    You'll need an individual plan to help your situation. Please contact your academic advisor in CS and the current curriculum change coordinator.

  • I took some of the old courses and some of the new courses before I saw this. What do I do?

    Generally, you'll need to pick one or the other to complete the degree. Please contact your academic advisor in CS and the current curriculum change coordinator to determine which courses to complete.