Which CS 1 should a student take?

Summary 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 11xx. 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.

For Spring 2017, there is only one section of CS 1113 being offered, and it is for SEAS undergraduate students only:

  • CS 1113 (Section 001) - A CS1 that is designed for first-year engineering students who do not think they want to major in Computer Science or Computer Engineering. It is particularly designed to meet the needs of students intending to major in one of these Engineering degree programs: Aerospace, Biomedical, Civil, Chemical, Material Science, and Mechanical. It will have an emphasis on engineering problem solving, and students will learn some MATLAB in addition to Python. (Note: Taking this course does not lock you into one of the majors listed above. You will be thoroughly prepared to take later CS courses if you choose to.)

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.

Advanced Placement


For Computer Science - 4 or 5 gives credit for CS 1110

For CS Principles - 4 or 5 gives credit for CS 1000T and the student is encouraged to take the CS 1110 Placement Test

International Baccalaureate


For Computer Science

  • 5 on High Level gives credit for CS 1110
  • 6 or 7 on High Level gives credit for CS 1110 and CS 2110

Placement Tests

CS 1110 Placement Test

The placement test allows a student to take a course that requires a CS 1 course as a prerequisite, but it does not grant course credit.

Students who wish to take the placement exam can pick it up during business hours no later than 3pm from the CS office in Rice Hall 527. They must complete and return the exam within 90 minutes. Students cannot use books, notes, computers, or help from other people while taking the exam. A student can only take the exam once, and students who have enrolled CS1110/CS1111/CS1112 at UVa for any amount of time are not allowed to take the placement exam. The exam will be graded in a few days, and the results will be emailed to the student. Students who pass do not receive credit, and will be required to take some other course at UVa in lieu of CS1110.

Students may use any of the following languages on the test: Java, Python, C++, C, Javascript, or C#

The placement test is made up of several multiple choice, short answer, and coding questions. Students interested in taking the test need to be familiar with:

  • variables (creation and manipulation)
  • functions/methods (creation and usage)
  • how to read and interpret code
  • if / else statements
  • various loop constructs (for, while)
  • string manipulation
  • input and output
  • arrays / lists

CS 2110 Placement Test