Interested in taking a Computer Science course at Oberlin but not sure where to start? We can help! Students generally start in one of three courses: CSCI 140, CSCI 150, or CSCI 151. To narrow your choices, we first need to know what programming experience you have, if any.

**I have no programming experience!** Great, your decision is between CSCI 140 and CSCI 150.

**CSCI 150 (Introduction to Computer Science)**is the standard starting point for the major, and many non-majors take this course as well. It assume zero programming experience. There is no formal mathematics requirement, but the course does require you to work with mathematical notation, logic, and concepts that some students find intimidating. For some concrete examples, take a look at these six self-assessment problems: 150vs140.pdf**CSCI 140 (Introduction to Programming)**covers similar material to CSCI 150, but at a slower pace and with a lighter workload. CSCI 140 doesn’t count towards the major, so students who take CSCI 140 and wish to continue with Computer Science need to take CSCI 150 next. CSCI 140 is offered when staffing permits.

**I have some programming experience!** Cool, in this case, your decision is probably between CSCI 150 and CSCI 151.

**CSCI 151 (Data Structures)**is the follow-up course to CSCI 150, covering fundamental data structures and their implementation in Java (whereas CSCI 150 is taught in Python). If you have a lot of programming experience, you might be ready to start in CSCI 151, though many students find that the courses they took before college didn’t cover as much material as CSCI 150 does.

If you’d like to better evaluate whether your preparation is sufficient for skipping CSCI 150, you can try solving some preselected coding problems at http://codingbat.com/

To start, you’ll need to create an account. Once you’ve do so, go to either one of the following links, and you’ll find four exercises in either Java or Python that we think students would be able to complete after taking CSCI 150. You can try to solve either set of problems (using whichever language you prefer).

**Java:**http://codingbat.com/home/tom.wexler@oberlin.edu/ocjava**Python:**http://codingbat.com/home/tom.wexler@oberlin.edu/ocpython

Once you’ve done that, click on “prefs” in the upper right and “share” the results with Tom.Wexler@oberlin.edu and email the instructor for CSCI 151 to let them know that you have done so.

Keep in mind that some aspects of CSCI 150, e.g. the creation and use of objects, exception handling, file I/O, etc., are not reflected in these questions. We expect these problems to be a little challenging yet doable for students coming out of CSCI 150.