Introduction to Programming (CS 1), AP/IB, and CS Place-Out Test Info


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 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.

Other Credit

Advanced Placement

http://records.ureg.virginia.edu/content.php?catoid=39&navoid=2365#Advanced_Placement_Program

  • 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

http://records.ureg.virginia.edu/content.php?catoid=39&navoid=2365#the_inte_bacca

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

Dual Enrollment

Please discuss with a CS advisor or the SEAS dean's office.

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.

Placement tests are only available as follows:

One week prior to the beginning of the semester (fall and spring), through the first seven business days of the semester; then again seven business days prior to course registration for the following semester. Typically, this is around the middle of October in the fall semester, and around the last week of March/first week of April in the spring semester.

Students who wish to take the placement test can email cs-office@virginia.edu to receive a link to the exam. The exam must be submitted within 48 hours of receiving the link. The student is allotted 90 minutes to take the exam, beginning when the exam is first opened. 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 in CS 1110 are not allowed to take the placement exam beyond Wednesday of second week of the semester. 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 (this is true, for example, of the CS degree offered by SEAS); however, it does meet prerequisites. 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 Information

Placement tests are only available as follows:

One week prior to the beginning of the semester (fall and spring), through the first seven business days of the semester; then again seven business days prior to course registration for the following semester. Typically, this is around the middle of October in the fall semester, and around the last week of March/first week of April in the spring semester.

Students who wish to take the placement test can email cs-office@virginia.edu to receive a link to the exam. The exam must be submitted within 48 hours of receiving the link. The student is allotted 90 minutes to take the exam, beginning when the exam is first opened. 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 in CS 2110 are not allowed to take the placement exam, beyond Wednesday of the second week of the semester.

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 will be required to take some other course at UVA in lieu of CS 2110. Students should use the Java programming language on the test. The placement test is made up of several multiple-choice, short answer, true/false, implementation, and coding questions. Students interested in taking the test need to be familiar with:

Basic Java Programing

  • Including knowledge of ArrayLists

Java Classes

  • Fields/instance variables
  • Constructor (one or more in a class)
  • toString() method
  • equals() method
  • Getters/setters
  • Methods (“behavior”)
  • Be able to declare, instantiate and initialize an object of a certain type (class)
  • Classes using other classes

Basic Software Engineering

  • Phases of the software development lifecycle
  • Specifications and Requirements: focus on users, functional and non-functional requirements (and constraints)
  • Design: inheritance hierarchies, abstract classes, interfaces

OO Design and Programming

  • Inheritance / understand the Object Class (in particular, the toString() and equals() methods…)
  • Interfaces
  • Comparable Interface // compareTo() method
  • Comparator Interface // compare() method
  • How to extend a class (inheriting methods, overriding methods, overriding abstract methods, use of super in constructor, use of super in other methods)
  • How Java decides which class's version of a method to invoke
  • Sets and Maps
  • Set data structure, Map data structure, Collection interface
  • TreeSet / TreeMap / HashSet / HashMap
  • Java Collections Framework (general)
  • List, Set, Map interfaces

Algorithms

  • Definition of an “algorithm” and how to tell if something is one

Asymptotic Analysis

  • Big-O
  • Comparison of common complexity classes (1, lg(n), n, n lg(n), n^2, n^3, 2^n)
  • Given code (non-recursive only), find its complexity class and identify its critical section
  • Searching and Sorting
  • Sequential search (“linear”)
  • Binary Search: how it works. What’s its complexity? (O(lg n)) How does this compare to sequential search? What must be true of the list before we use this? (Sorted)
  • Sorting: good sorts are O(n lg n). Be able to name the sorts in this complexity class (e.g. MergeSort)

Data Structures

  • Trees definitions and common terms
  • Note recursive definition
  • Ability to draw trees and/or discuss illustrations of them
  • Tree traversal (in-order, pre-order, and post-order traversals on Binary Trees)
  • Heaps
  • Heap definition
  • Minheap/maxheap
  • How items are stored in a heap
  • Methods for heap: adding and removal (do not need to know how to code this)