CS 11: Frequently Asked Questions


Certain questions about CS 11 come up over and over again, so we've collected them on this page. If your question is not on this page, feel free to email us at the email addresses given on the CS 11 home page.


Table of Contents

  1. Will you be offering a track in language X this term or next term?

  2. I can't make the organizational meeting. Can I email you my track and time preferences?

  3. Can you offer a track in language X?

  4. I don't know anything about programming. What language track should I take?

  5. I want to learn C++. Can I just start with the C++ track?

  6. I know a bit of C already. Can I take the C++ track?

  7. I only want to learn Java (or Python), and I've never programmed before. Can I just take those tracks?

  8. I've heard that CS 11 is under-united. Can I get more than three credits for CS 11?

  9. Can I audit CS 11?

  10. I'm a graduate student. Can I take CS 11?

  11. I didn't register for CS 11 this term. Can I add the class?

  12. Can I be a teaching assistant for CS 11?

  13. I'm a faculty member here at Caltech, and I have a programming project that I need people to work on. Can you get me students?

  14. I work for a company that needs to hire programmers. Can you get me some?

  15. I'm a faculty member here at Caltech, and I have a programming project, and a student who is willing to work on it, but he/she needs supervision. Can you supervise him or her?


Will you be offering a track in language X this term or next term?

We never know until after the organizational meeting (OM). The OM always takes place on the first Monday of the term, in room 105 of the Annenberg building at 9 PM. We will almost always offer tracks in C and C++. In addition, we sometimes offer additional tracks if there is enough demand. If you come to the OM you will be able to have a direct influence on which tracks we choose to teach.


I can't make the organizational meeting. Can I email you my language track and lecture time preferences?

You can, but we'll ignore them. Here's why.

The way the OM works is that we first determine which tracks we are going to teach based on the students who have shown up (usually by a show of hands). If there are less than four students for any proposed track, we will normally not teach it. After this, we have a sign-up sheet for each track where students put down their contact information, their UID, and also their time preferences for track lectures. However, these time preferences are not usually enough to specify the lecture time. Instead, we go around and interactively figure out what the best time is for the most people. Typically, the average student will have a number of times he or she can make, and it's easier to pick a time interactively than to go through everyone's written preferences in detail. We use the written preferences as a starting point only.

Someday, we may have a fully web-based system where you can select track and time preference online ahead of time, and the system will automatically pick the optimal time which accommodates the most people. Until then, it's too much hassle for us to make lists of the preferences of everyone who can't or won't show up to the OM. If you think this is unfair, realize that compared to the vast majority of courses you'll take at Caltech, we bend over backwards to accommodate our students; most classes just have a set time, take it or leave it.

Also, note that we won't usually teach after 10 PM on any day (we have lives too). Most lecture times end up being scheduled between 7 and 10 PM on a day between Monday and Thursday. We like (prefer) teaching afternoon lectures if it's feasible for the students.


Can you offer a track in language X?

It all depends on what the value of X is ;-) We'll assume that by "X" you mean some language that we don't already offer.

In general, we're happy to receive suggestions for new CS 11 tracks. However, there are only two of us, and only so many hours in the year, so it's unlikely that we can accommodate every single suggestion that is given to us. We will be much more likely to consider adding a new language track if:

  1. You can convince us that a lot of people (i.e. more than 10) would be interested in taking the track.

  2. We see it as something that people would want to do for a long time to come, as opposed to a one-shot track.

  3. The language isn't one of the languages that we dislike and have good reason for not wanting to teach (see below).

  4. The track is about a language and not about how to use e.g. a particular library in some language or a particular web framework written in some language. However, learning a library or a web framework can often be done in the context of the project track of CS 11.

Here are some languages we don't want to offer language tracks in:

There are a number of reasons why we don't want to teach these languages. In some cases (Perl, PHP, Matlab, Visual Basic), we just don't like the language. We think these languages are ugly, unpleasant, and lend themselves to writing bad code (especially for beginning programmers!). In some cases (Perl) we offer obvious alternatives (Python). In some cases (PHP, Matlab, Mathematica, Excel/Word macros) we feel that the language is too specific to a particular kind of application; our focus has always been on teaching general-purpose programming languages.

We recognize that despite this, some people really, really want to learn these languages. If so, we recommend you petition your department to offer courses in those languages. We have our hands full teaching high-quality general-purpose languages, and we can't do everything for everyone.

That said, we are interested in offering more language tracks in the future. We are especially willing to work with students to develop new CS 11 tracks (e.g. as part of a CS 81 project). Contact us if you are interested in this.


I don't know anything about programming. What language track should I take?

None. You should take CS 1 instead. CS 1 is taught in Python, and is a practical course that anyone at Caltech should be able to handle. If you haven't taken CS 1, you can't take CS 11.

CS 1 is only offered in the Fall, so if you haven't taken it, you are going to have to wait until the next Fall before you can take it (obviously). Many, many students ask us if they can "just please" take CS 11 even though they've never programmed before. We have a lot of experience with students like this, and it's almost uniformly negative. You need to take CS 1 if you've never programmed before! CS 1 is specially designed to accommodate beginning programmers, whereas CS 11 goes way, way too fast for them.


I want to learn C++. Can I just start with the C++ track?

In short, no. If CS 11 was a 9-unit course, we could presumably teach C++ right from the beginning. However, CS 11 is only a 3-unit course, and there is just no way we can teach all of C++ in a 3-unit course if we have to cover the part of C++ that is identical with C. Therefore, the sequence we suggest is that you take the C track in one term, and take the C++ track in a subsequent term.


I know a bit of C already. Can I take the C++ track?

Possibly yes, but probably no. Most people who try this regret the decision. "A bit of C" suggests that you don't really know C very well. Unless you are extremely comfortable working with pointers, pointers to pointers, structs, pointers to structs, linked lists, etc. (all of which are covered in the C track), don't even think about taking the C++ track. Remember: the pace in CS 11 is fast, and we don't have time to review the basics of C in the C++ track.


I only want to learn Java, and I've never programmed before. Can I just take that track?

No. See above.


I've heard that CS 11 is under-united. Can I get more than three units for CS 11?

We sympathize, and we wish you luck. Many of the CS 11 tracks are indeed under-united, though in practice it depends a lot on the experience of the student. For instance, students who have taken CS 1 generally have to spend much less time on their CS 11 homework than students who have never programmed before. In general, though, most CS 11 tracks are not very under-united for most students (the C++ track and some of the more advanced tracks may be exceptions to this rule).

Regardless, the department won't allow us to give more than three units for CS 11. The reason for this is that CS 11 can be taken three times for credit, giving a maximum of 9 units. The CS department doesn't feel that CS 11 should be worth more than 9 units towards your degree, and we don't really disagree with this decision.

Think of it this way: you should be in CS 11 to learn programming, which is a skill that will be useful to you in many places in science and/or in your eventual job. You shouldn't be in CS 11 just to rack up lots of easy units (not that they're that easy to rack up anyway).


Can I audit CS 11?

Yes. We have no problem accepting auditors in any of our tracks. If we have time, we'll even grade your homework. However, for obvious reasons this grading will be lower priority than grading the homework of students that are enrolled in the class, and it may not happen at all.

If you're not a Caltech student, you're still welcome to sit in on our lectures, but we won't grade your homeworks.


I'm a graduate student. Can I take CS 11?

If it's OK with your department, it's OK with us. However, if you've never programmed before, you should take CS 1 instead. Note that CS 11 for graduate students is called "CS 111" even though it's exactly the same course.


I didn't register for CS 11 this term. Can I add the class?

See this page.


Can I be a teaching assistant for CS 11?

Read further down on the CS 11 home page; the information is there.


I'm a faculty member here at Caltech, and I have a programming project that I need people to work on. Can you get me students?

Possibly yes, but don't count on it.

Many people think that as CS 11 instructors, we are sitting on a huge pool of first-rate software talent that is just itching to be turned loose on their pet project. In fact, we rarely if ever hear from students who are looking for projects. Part of this is because most of our students are fairly inexperienced programmers and aren't yet ready to work on larger programming projects. Those who are more experienced are usually most interested in working on their own projects, or are already working on such projects. Programming projects are very easy to find both inside and outside Caltech, and it's not uncommon for students to get paid quite well for their programming work.

Therefore, if you do want to entice students to work for you, you had better be able to offer them one or more of:

  1. course credit

  2. money

  3. experience that will be valuable to them in the future

If you can't offer them any of these, don't expect students to want to come and work for you. Caltech students are very busy and have many demands on their time.

If you can offer them one or more of these, send us a description of your project (the more detail, the better) and we'll see what we can do.


I work for a company that needs to hire programmers. Can you get me some?

See the answer to the previous question. The same criteria apply, except that in this case, course credit is not an option.


I'm a faculty member here at Caltech, and I have a programming project, and a student who is willing to work on it, but he/she needs supervision. Can you supervise him or her?

This depends on what our workload is. During the school year, we are usually too busy with our courses to supervise students who are not enrolled in our courses, especially if the student needs a lot of supervision. During the summer, we might be able to help you. However, if all the student needs is a few pointers on how to get over a particular problem, we can usually schedule a meeting anytime during the year.