KotlinCS 124 LogoJava

Proficiency Exam

Students with significant prior programming experience and understanding of computer science may elect to bypass CS 124 by taking a proficiency exam.

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
Where to Start

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 124 or skip it via the proficiency exam. But here are some things to keep in mind.

First, there is no way that a two-hour proficiency exam can replace or reflect the experience of taking CS 124. CS 124 students write thousands of lines of code, getting the daily practice that supports mastery learning. They prepare and complete weekly timed assessments, ensuring that their knowledge of the material is growing steadily over the course of the semester, and identifying any gaps in their understanding. And they complete a larger Android programming project, gaining experience working with a large and unfamiliar codebase. No two-hour test can measure or replicate the experience that students gain in CS 124.

Second, CS 124 covers substantially more material than the Computer Science A AP exam and most high-school computer science courses. We cover topics not covered in high school, and will also introduce you to Android programming. CS 124 students also have the opportunity to complete an independent group project by enrolling in the CS 124 honors section which might represent the beginning of a development portfolio that will help you land internships and jobs in the future.

CS 124 also offers students the option to learn either Java or Kotlin. So even if you took Java in high school, there is an opportunity to take CS 124 in Kotlin and learn something completely new.

Third, if you are a freshmen, having a lighter course that represents some amount of review in your first semester is not a bad thing! CS 128 and CS 173—the courses you take after completing CS 124—are both challenging, particularly when taken together. If you already know some of the material in CS 124, taking it will help solidify your understanding, boost your confidence, and provide more time for all of the other opportunities and experiences available to you at college. Side projects. Student organizations. Meeting new people and making new friends! And generally just adjusting to life at college and away from the structures and comforts of home.

Speaking from personal experience, an overly-challenging courseload during your first semester can set your college experience off to a rough start that you may find difficult to recover from. College is not a race. And even if it was, sprinting out the gate at an unsustainable pace is not a great strategy.

All that said, we do not want you to be bored in CS 124! If you really feel that the course has nothing to teach you, take the proficiency exam and move on.

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

Please note that if you do have some prior experience and decide to take CS 124 we will expect you to be patient and generous with the beginners around you! CS 124 enrolls a lot of students with no programming experience, and they will be working hard to learn some of the things 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.

Exam and Practice Materials
Exam and Practice Materials

The CS 124 Proficiency Exam is a two hour proctored exam covering all the content covered in CS 124.

The exam consists of 20 multiple-choice questions worth 80 points and 6 programming questions worth 120 points for a total of 200 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 under an 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 by CS 124 quizzes:

Note that Android programming is not covered on the proficiency exam.

The programming questions are also drawn from all CS 124 topic areas. You should be prepared to

Passing Thresholds
Passing Thresholds

For the Fall 2023 the proficiency exam passing thresholds are as follows:

Preparation Materials
Preparation Materials

To prepare for the multiple-choice portion of the Java proficiency exam please review the online slides and lesson materials.

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 124: Introduction to Computer Science I, 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 124. Actual programming questions on the proficiency exam will be similar but not identical to the ones included in the practice exam.

The proficiency exam will be proctored. During the exam you may not perform internet searches or access more than a few specific pieces of documentation that we provide. 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 like brace matching, it lacks the more powerful features like general autocompletion of a full integrated development environment like IntelliJ IDEA. We have published the online homework problems partly to make sure you are comfortable programming in this environment.