Place-Out Tests

UVA CS 1110 and CS 2100 Place-Out Test Request Form

CS 1110 Place-Out Test Information

The place-out test allows a student to take a course that requires CS 1110, CS 1111, CS 1112, or CS 1113 as a prerequisite, but it does not grant course credit.

Place-Out Test Availability

Place-out tests are only available as follows:

One week prior to the beginning of the semester (fall and spring), through the Monday of the second week of the semester; then again seven business days prior to course registration for the following semester.

A student who has previously attempted CS 1110, CS 1111, CS 1112, or CS 1113 cannot take the exam. A student can only take the exam once, and students currently enrolled in a CS 1 course are not allowed to take the place-out exam beyond Monday of second week of the semester. The test will be graded within a few days and the results will be emailed to the student.

Taking the Place-Out Test

Students who wish to take the place-out test can fill out this form to receive a link to the exam. The student is allotted 60 minutes to take the exam, beginning when the exam link is first opened. Students cannot use books, notes, computers, or help from other people while taking the exam. The exam will be graded within a few days, and the results will be emailed to the student. Students who pass do not receive credit, and if CS 1110 was required as part of a degree program may be required to take some other course at UVA in lieu of CS111X; however, it does meet prerequisites. CS majors are required to take another math/technical course that is not already being counted toward their degree program. Some examples include another APMA course, another CS elective, or a technical course in another SEAS department.

Place-Out Test Content

The place-out test is made up of several multiple-choice, short answer, and coding questions. Students may use any of the following languages on the test: Java, Python, C++, C, Javascript, or C#. 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

If You Pass the CS 1110 Place-Out Test

If you are informed that you passed the CS 1110 Place-Out Test, a notation will be added to your SIS academic record that will allow you to register for courses that require CS 1110 as a prerequisite. No credit will be awarded.

CS 1110 was required as part of your degree program, you may be required to take some other course at UVA in lieu of CS 111X.

BACS

BACS majors do not have to replace CS 1110 credits directly, as CS 1110 is a prerequisite to the major, not part of the total credits required.

BSCS

BSCS majors are required to take another math/technical course that is not already being counted toward their degree program. See the Missing/Replacement Credits Policy for more information.

CS Minor

As CS 1110 is a prerequisite for the minor, a student is not required to make up these credits specifically for completing the minor. However, they may need to make up the credits for their major (particularly if the major is in SEAS) and should check with their academic advisor.

Other Majors

Please discuss with your advisor of your major.

CS 2100 Place-Out Test Information

The place-out test allows a student to take a course that requires CS 2100 as a prerequisite, but it does not grant course credit.

Place-Out Test Availability

Place-out tests are only available as follows:

One week prior to the beginning of the semester (fall and spring), through the Monday of the second week of the semester; then again seven business days prior to course registration for the following semester.

A student who has previously attempted CS 2100 cannot take the exam. A student can only take the exam once, and students currently enrolled in CS 2100 are not allowed to take the place-out exam beyond Monday of second week of the semester. The test will be graded within a few days and the results will be emailed to the student.

Taking the Place-Out Test

The place-out test for CS 2100 MUST be taken in person, during scheduled times. It is available Monday-Friday at either 9:30am or 1:30pm. The student is allotted 120 minutes to take the test. Students cannot use books, notes, computers, or help from other people while taking the test. A student can only take the test once, and students who have enrolled in CS 2100 are not allowed to take the place-out test, beyond Monday of the second week of the semester. The test will be graded within a few days, and the results will be emailed to the student.

Place-Out Test Content

Students should use the Java programming language on the test. The place-out test is made up of several short-answer, implementation, and coding questions. Students interested in taking the test need to be familiar with:

Data Structures and Algorithms 1 (CS 2100)

  • Learning Java
    • Hello World Program
    • Primitive Data Types and Sizes of Types
    • Using Basic Objects from the Java API
    • How to read and use the Java API
    • Reading in Input
    • Writing basic methods, parameter passing, static keyword, public / private, overloading methods
    • Strongly Typed Language / Casting
    • Arrays
    • Exceptions
    • If Statements, Switch Statements, For-Loops, For-Each Loops, While Loops, and other control structures, = vs == vs .equals() vs .compareTo(), etc.
    • References to Objects, passing references as parameters, shared references, etc.
    • Writing Classes and Enums
    • The Java Virtual Machine and how compilation works in Java (high-level…basics). What is a compiler? What does it do? What is a JVM? What does it do? Advantages and Disadvantages.
    • Using the Basic Data Structures that come with Java API (Most are covered in the respective section on the data structure itself) - Lists, ArrayList, Vector, LinkedList, TreeSet, TreeMap, HashSet, HashMap
  • Lists
    • What is a list?
    • Abstract Data Types versus implementation of those ADTs
    • Using an interface in Java to describe an ADT without specific implementation
    • Polymorphism and how interfaces allow for type substitution
    • Vector
      • Array-Based implementation
      • How resizing method works. Size vs. Capacity
      • Insert / Delete / [] operator / etc.
      • Advantages and Disadvantages
  • Java Generics and Wildcards
    • Implementing a Generic Vector
    • All Data Structure implementations in course are generics
    • Type erasure and instantiating generic arrays in Java
  • Linked Lists
    • Insert, Delete, etc.
    • Iterators
    • Advantages / Disadvantages
    • Java Generic Implementation
  • Stacks and Queues
    • Array-Based Implementations
    • Linked-List bases Implementations
    • Applications
  • Big-Oh Notation / Analysis
    • Formal definition of Big-Oh, Big-Omega, Big-Theta
    • Comparing growth rates of functions using this notation
    • Complexity Classes
    • Common complexity classes (1,n,nlogn, etc.)
    • Amortized Time Complexity
  • Trees
    • Examples solved with trees / example trees
  • Recursion
    • Base cases, making progress towards termination, etc.
    • Recursive implementations of simple methods like printing a list, seeing if a string is a palindrome, towers of Hanoi, etc..
    • Using recursion to traverse trees
    • Pre, in, post-order traversals of trees.
  • Binary Search Trees
    • Structure Property
    • Insert, Find, Remove, Find-Max, etc.
    • Generic implementation in Java
    • Ordered Set ADT vs. Binary Search Tree
  • AVL Trees
    • Rotation methods
    • Maintaining balance
    • Inheritance in Java
  • Examples of solving problems with Trees
  • Sorting Algorithms
    • Comparison sorts vs Adjacent Sorts, Java’s Comparable Interface
    • Stable, in-place, etc.
    • Using Collections.sort() or Comparable to sort in Java
    • Adjacent Sorts: Bubble Sort, Insertion Sort, Lower-Bound Proof on Adjacent Sorts
    • Comparison Sorts: MergeSort, QuickSort, Nlog(n) lower-bound argument
    • Hybrid Sorts / Other Sorts: TimSort (Java uses this), Radix Sort, etc.
  • Hash Tables
    • Maps vs. Set ADT
    • Hash Tables and HashSet / HashMap
    • Implementation of Hash Table
    • Array Indexing
    • Hash Functions
    • Collision Resolution Strategies
  • Priority Queues
  • Basics of Concurrency
    • Terminology (process, thread, deadlock, race conditions, etc.)
    • Writing simple threads in Java: Runnable, Thread Class, etc.
    • Interrupting threads
    • Exception Handling in Java
    • Shared Resources and Race Conditions
    • Basic locks / ideas behind locks
    • Deadlocks
    • Blocking Queue

If You Pass the CS 2100 Place-Out Test

If you are informed that you passed the CS 2100 Place-Out Test, a notation will be added to your SIS academic record that will allow you to register for courses that require CS 2100 as a prerequisite. No credit will be awarded.

CS 2100 was required as part of your degree program, you may be required to take some other course at UVA in lieu of CS 2100.

BACS

BACS majors do not have to replace CS 2100 credits directly, as CS 2100 is a prerequisite to the major, not part of the total credits required.

BSCS

BSCS majors are required to take another CS course numbered 2000 or higher that is not already being counted toward their degree program. See the Missing/Replacement Credits Policy for more information.

CS Minor

CS Minors are required to take another CS course numbered 2000 or higher that is not already being counted toward their minor. See the Missing/Replacement Credits Policy for more information.

Other Majors

Please discuss with your advisor of your major.