CS 125 Proficiency Exam
Students with significant prior programming experience and understanding of computer science may elect to bypass CS 125 by taking a proficiency exam 1.
This page provides information intended both to help you make the decision whether to take the proficiency exam and prepare for the exam itself. You will also want to refer to the main CS proficiency exam website for more general information, including important restrictions on who can take proficiency exams.
Where to Start
If you are a CS major who has never programmed before, or a student with a deep interest in the subject, you should take CS 125 2. If you have been programming since you were very young, have completed multiple internships at tech companies, and aced AP Computer Science A, you should take the CS 125 Proficiency Exam and move on to CS 126 or 173 3.
However, for the many students that have some amount of prior programming experience and knowledge of computer science, there are no hard and fast rules about whether to take CS 125 or bypass it via the proficiency exam. One one hand, CS 125 covers considerably more material than the Computer Science A AP exam. So even if you’ve taken AP CS A you’re likely to learn something and have a chance to review what you already know. If it’s your first semester on campus you may appreciate the chance to not jump right in to the workload of CS 126 and CS 173 as you adjust to life at college. And if you already know another language well, CS 125 will both teach you Java and prepare you for other CS@Illinois courses.
On the other hand, bypassing CS 125 brings you one semester closer to all of our exciting upper-level courses. Moving ahead may also help prepare you to obtain internships more quickly.
At the end of the day this is your decision to make based on your own specific goals and circumstances. Discuss your situation with your academic adviser. And feel free to reach out to other students and advisers for advice on the CS Advising Piazza or on our active subreddit.
Of course, keep in mind that you can always take the proficiency exam and see how you do. If you ace it, you’ll know you’re ready to move on. If you don’t pass, you can’t go on. And even if you do pass, you don’t have to accept the proficiency credit and can still choose to take CS 125 to solidify your understanding before moving on.
Finally, if you do have some prior experience and decide to take CS 125 we will expect you to be patient and generous with the novices around you. CS 125 enrolls a lot of beginners, and they will work harder than you to catch up and learn the things that you already know. Please share your enthusiasm about computer science with them! They will definitely appreciate knowing how exciting our field gets once you get past the initial learning curve. But don’t act like you were born knowing this stuff. Nobody is. You just have more practice than they do.
Java and C++ Versions
The CS 125 Proficiency Exam is given in two versions: one with programming examples and problems in Java, the second with them in C++. If you are eligible for and planning to take CS 126, you must take the Java version of the proficiency exam. CS 126 assumes that incoming students are familiar with Java, and students that are not struggle. If you are proficient in another programming language and strong enough to start in CS 126, you should not have trouble learning enough Java to pass the proficiency exam.
Students that are not taking CS 126 may take either the Java or the C++. version.
Online Java Practice Proficiency Exam
To aid your decision-making process we have published a set of Java homework problems and practice Java proficiency exam online. You can attempt these assessments from anywhere and complete them as many times as you want.
So here is a possible algorithm for determining whether to take the CS 125 Proficiency Exam:
Warm up with some of the homework problems included as part of the online preparation materials.
Attempt the practice proficiency exam under realistic testing conditions: without looking things up online and within the time limit specified.
If you feel comfortable with the problems and did well, sign up to take the Java CS 125 Proficiency Exam in the Computer-Based Testing Facility (CBTF).
If not, either continue to practice or enroll in CS 125 4.
The CS 125 Proficiency Exam (Java Version)
The CS 125 Java Proficiency Exam is a three-hour exam given in the Computer-Based Testing Facility (CBTF). The exam is comprehensive and covers all content covered in CS 125 over the course of a typical semester.
The exam consists of 30 multiple-choice questions worth 120 points and 9 programming questions worth 180 points for a total of 300 points. The point allocations are designed to help you allocate your time, although most students should be able to complete the multiple-choice questions in less than one hour. You receive one chance to answer each multiple choice question correctly but can attempt the programming questions as many times as you want for full credit.
The multiple-choice questions cover all core topics covered in CS 125:
object-oriented programming including inheritance, references, polymorphism, and interfaces
recursion and recursive programming,
algorithm complexity and runtime analysis, particularly applied to sorting algorithms
data structures including arrays, lists, trees, and maps.
Extra enrichment topics added to each course instance are not covered by the proficiency exam. These topics may vary from semester to semester, but in Spring 2019 they comprised Android, the internet and web, Java generics, and functional programming in Java. However, note that interfaces, hashing, maps, and exceptions, are fair game for the proficiency exam.
The programming questions are also drawn from all CS 125 topic areas. You should be prepared to
work with arrays, lists and trees
implement imperative and recursive algorithms, including sorting algorithms
and design object classes meeting a given specification.
CS 125 Java Proficiency Exam Passing Thresholds (Summer 2019)
For the Summer and Fall 2019 CS 125 Java Proficiency Exam the passing thresholds are as follows:
81–100%: Do not take CS 125. Proceed directly to CS 126 and/or CS 173. You will not get anything out of CS 125.
60–80%: You may receive proficiency credit for CS 125. However, you may still learn something in CS 125 and have a chance to strengthen your programming abilities and conceptual knowledge before continuing. The choice is up to you. If you earned exactly a score closer to 60%, we’d suggest taking CS 125. If you earned 80%, you should strongly consider beginning in CS 126 or CS 173.
Below 60%: you did not pass the proficiency exam. We look forward to having you in CS 125!
Preparing for the Java Proficiency Exam
To help you prepare for the programming portion of the proficiency exam we have published homework problems and a practice exam online. To access these materials, log in to PrairieLearn using your Illinois login. Then join the CS 125: Introduction to Computer Science, Proficiency Exam course.
That will give you access to the homework problems and practice exam. Each of which you may complete as many times as you want. Note that some of the homework problems are harder than the programming questions you will see on the proficiency exam. But they are representative of the kinds of daily homework assignments students complete in CS 125. Actual programming questions on the proficiency exam will be similar but not identical to the ones included in the practice exam.
The Java proficiency exam will be given in the Computer-Based Testing Facility (CBTF), meaning that only limited online resources will be available to you during the exam. For example, if you forget a bit of Java syntax you will not be able to use Google to help jog your memory. Also note that programming problems are completed in the browser using the Ace editor. While it provides basic code editing features 5 it the powerful features 6 of a sophisticated integrated development environment like IntelliJ IDEA. Part of the reason that we have published the online homework problems is to help you become comfortable programming in this environment.
So the best way to prepare for the programming problems on the CS 125 Proficiency Exam would be to:
Begin by mastering the homework problems to ensure that you are comfortable with the in-browser editor and interpreting the compilation and testing results.
When you are ready, reserve a two hour block of time and attempt the practice proficiency exam uninterrupted, without distractions, and only utilizing the documentation provided.
If you can correctly complete all the questions within that time limit, you are well-prepared for the proficiency exam. Otherwise continue to practice with the homework problems and practice proficiency exam.
The CS 125 Proficiency Exam (C++ Version)
As a reminder, CS majors must take the Java version of the CS 125 Proficiency Exam. Students will not be able to continue to CS 126 by taking the C++ version of the proficiency exam.
The CS 125 C++ Proficiency Exam is a three-hour exam. Someday we will have a computer-based edition, but as of Fall 2019 the C++ version is still a written exam. Content coverage is the same as the Java version, but the exam format is different. It consists of five questions that combine algorithm analysis, programming, computational thinking, and other skills taught in CS 125.
Preparing for the C++ Proficiency Exam
Review the 2017 Practice Final Exam.