Kotlin
Java

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

  • If you have never programmed before and are either a CS(+X) major or have a deep interest in the subject, you should take CS 124. For a gentler introduction, consider CS 105 or CS 107.
  • If you have been programming since you were very young, have completed multiple internships at tech companies, and scored a 5 on the AP Computer Science A exam, you should take the CS 124 Proficiency Exam and begin in CS 128 and CS 173.

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 three-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 three-hour test can measure 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

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

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

  • imperative programming
  • object-oriented programming including inheritance, references, polymorphism, and interfaces
  • recursion and recursive programming,
  • exceptions and hashing
  • algorithm complexity and runtime analysis, particularly applied to sorting algorithms
  • data structures including arrays, lists, trees, and maps.

Note that Android programming is not covered on 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 classes that meet a given specification.

Passing Thresholds

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

  • 90–100: High pass. You should proceed directly to CS 128 and CS 173.
  • 70–89: Low pass. You may proceed directly to CS 128 and CS 173. However, you should consider taking CS 124 to firm up your knowledge before proceeding. If you earned something close to 70%, we'd strongly suggest taking CS 124.
  • *0–69**: No pass. We look forward to having you in CS 124!

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.