To: Incoming Caltech Students — academic year 2022-2023


  • El (Melissa) Hovik, Department of Computing and Mathematical Sciences

Congratulations on choosing Caltech! The Department of Computing and Mathematical Sciences (CMS) looks forward to welcoming you to Caltech this fall.

Frequently Asked Questions (FAQ)

Below, we answer some frequently asked questions about Computer Science (CS) courses at Caltech.

"Are computer science classes required my freshman year?"

Probably not. Computer Science is not yet part of the Caltech core curriculum; most majors do not require you to take CS classes in order to graduate. Nonetheless, basic skills in programming computers have become central to most areas of science and engineering. For this reason, most incoming freshman do take at least one term of CS, often in their freshman year. The introductory CS course is called "CS 1".

"I read the catalog, but tell me…​ what is CS 1 really about?"

CS 1 is a pragmatic course in computer programming which is suitable for students with no previous programming experience. It will concentrate on fundamental concepts in imperative and object-oriented programming as well as basic skills that all programmers need to know (debugging, testing, documentation). It will not be particularly theoretical in its orientation, but will be oriented towards giving all students immediately practical programming skills. CS 1 will use the Python (version 3.10) programming language (with a short unit on Java at the end of the term). CS 2 uses the Java programming language exclusively.

"How hard is CS 1?"

Since CS1 assumes no previous experience with computer programming, it is accessible to all Caltech students. However, it is not a trivial course, and you should expect that CS 1 will add a fairly large load on top of the required first-term freshman core curriculum (programming is inherently a time-consuming activity). For this reason, students who do not intend to major in computer science may consider deferring taking the course until a later year.

"I already know how to program. Should I take CS 1?"

Possibly. Many of you already have computer programming experience — possibly extensive. Nonetheless, just as basic math and physics courses at Caltech take a more rigorous approach to the material than elsewhere, so do our introductory CS courses. Consequently, our curriculum may be very different from what you’ve seen in high school, a local college or university, or on your own, making it unclear where you should start in our sequence. To help you figure out whether CS 1 will be valuable for you, we offer a placement exam which you may choose to take. The exam must be returned by July 31 in order to be considered.

"Do I have to take the placement exam in order to take CS 1?"

This is by far our most frequently-asked question. The answer is no. The placement exam is completely optional and is not required in order to take CS 1. In fact, quite the opposite! The whole point of the placement exam is to allow students with a great deal of programming experience who might already know all the material in CS 1 to skip CS 1 and start taking higher-level CS courses immediately. (However, note that if you pass the placement exam for a course you will not get numerical credit for the course, but you will be eligible to take any other course that requires that course as a prerequisite.)

If you’ve never programmed before, and want to learn, you should take CS 1. If you’re not sure whether you know enough to skip CS 1, you can try the placement exam, but don’t get upset if you don’t pass; it just means that you should start with CS 1. If you have extensive programming experience, you should definitely take the placement exam.

"I’m pretty sure I’ll be taking CS 1. Is there anything I should do now?"

Yes. When you receive your materials for registration please indicate that you would like CS1 to be one of your electives.

"What happens if I pass the CS 1 placement exam?"

If you pass the placement exam, you can skip taking CS 1 and take another course in its place. You do not get credit for the units you would have gotten had you taken CS 1, but you do fulfill the graduation requirements for those programs that require CS 1 (such as the CS degree).

If you pass the CS 1 placement exam, but still want to take CS 1, you may. One reason for doing this is if you intend to become a teaching assistant for CS 1 in the future. Another might be to learn Python in a relaxed setting.

"What happens if I fail the CS 1 placement exam?"

If you don’t pass the placement exam, and your degree program requires you to take CS 1, you must take it. Otherwise, you are still strongly encouraged to take CS 1.

If you didn’t pass the placement exam, but came very close, you may be given the option to take CS 1x instead.

"What is CS 1x?"

CS 1x is an alternative to CS 1, intended for students with significantly more programming experience than the typical CS 1 student. CS 1x is a 6-unit class, so the workload is somewhat less than CS 1, but the pace is much faster. CS 1x concentrates on software engineering principles that are also part of CS 1, but goes into greater depth. Also, CS 1x uses Java, not Python, as its instructional language.

The primary goal of CS 1x is to prepare students for CS 2, which also uses Java as its instructional language.

"Can I take CS 1x if I fail the placement exam?"

This is solely up to the judgment of the CS 1 placement grading team. We look at your placement exam results and make the decision.

"I want to take the CS 1 placement exam. Can you spell out the URLs?"


This is an untimed exam, so feel free to look at it right away even if you’re just curious.

Who to contact if you have questions

You can send questions to the CS 1 placement exam email address:

Thank you,

Melissa (El) Hovik