People

Instructor

The instructor is Mike Vanier. My office is in Annenberg room 110.

My office hours are posted on the course Piazza page.

Teaching Assistants

Here are the teaching assistants for this term:

  • Deepro Pasha (dpasha@)

Teaching assistant office hours are posted on the course Piazza page. Also see the Piazza page for the TA office hour locations (if in person) or for the online link (if online).

Prerequisites

CS 1 (or placing out of CS 1) is a hard prerequisite for this course. In rare cases, we may allow you to take this course if you have equivalent Caltech programming experience (e.g. ACM 11). High school programming experience or experience programming on your own is not sufficient. (Graduate students are considered separately, and different criteria apply.)

Graduate students (those taking CS 111 instead of CS 11) do not have any official prerequisites. However, we strongly advise graduate students not to take this as a first programming course, since it does assume familiarity with the basics of programming.

Lectures

Lectures will be held in Annenberg 213 every Tuesday at 11 AM, starting on January 9th.

Grading policy

The course is pass-fail. Each assignment will get an integer grade from 0 to 3, where the number means the following:

  • 0: the assignment is completely inadequate

  • 1: the assignment has serious problems

  • 2: the assignment is acceptable (passing quality)

  • 3: the assignment is excellent (no serious problems)

Late assignments will lose 0.5 marks for each day they are late (all the way to zero). You may also redo your assignments (see below).

In special cases, I may grant extensions on homework to individuals in special circumstances. The duration of the extension will depend on how compelling the reason for the extension is.

There will be 8 labs, for a maximum total mark of 24. The pass grade is 17/24, which is just above a 2 average. In addition, there is a "completion bonus" of 0.5 marks per lab which you get when all labs have been completed with a mark of 2 or more (not counting late penalties). This is a way to compensate for late penalties. However, if you accrue massive late penalties on the first few labs, this bonus may not be enough to save you and you should drop the course. Note that the completion bonus cannot pull your grade above 100%.

NOTE: We will not accept the first submission of any lab later than one week before grades are due. If you are going to try for the completion bonus, do not try to submit labs for the first time the day before grades are due; you will get a zero on the lab and you will not get an E grade on the course.

If you’re heading for an F and drop day is near, I will encourage you to drop the course so as not to harm your academic record. Don’t count on getting an E; I rarely give E grades (though I will give I grades for e.g. medical problems).

Collaboration policy

Please read this page for the CS 11 C track collaboration policy.

Submitting and grading assignments

We use CodePost for submitting assignments and for grading. This allows us to annotate your code with detailed comments.

In addition, there is also a C style checking program which you should use to check the style of your code. This will give you instant feedback in a way that we can’t, but it won’t catch all style violations. In CS 11, we are very picky about code formatting, so please use the style checker; it’ll save you a lot of time.

When we complain about something in your code, we expect you to fix it. Sometimes we’ll say something like "this is OK, but a better way would be…​". You should fix that too. If you don’t understand what we’re asking you to do, email us or come to our office hours — don’t just ignore the comment and hope it’ll go away. This applies even for style violations. We’re usually fairly lenient about style checking for the first lab, but not after that.

If you are having problems submitting your sets through CodePost, please read this page.

Redoing assignments

We will deduct marks for a variety of reasons, including (but not restricted to) any of the following:

  • a bug in the program (even a trivial one)

  • a program which violates the spec

  • unreadable code and/or significant style violations

  • bad program design

In general, any serious problem will result in a grade of 1 or lower. Less serious problems (e.g. poor formatting) may only result in a grade of 2, but you may want to try to bring this up to a 3. To this end, you are allowed to redo your assignments.

The redo system works as follows. You will be assigned a grade on your initial submission. Once you have received your initial grade, you have one week to submit a redo. Redos will be submitted as a separate CodePost assignment called labN_rework (for assignment N). Late redos (received after the 1-week redo window) will not be graded and your previous grade will stand.

You are only allowed a single rework for a particular assignment. If you have a rework that has not been graded, then you may re-upload the rework and it will overwrite your previous version. (For instance, if you found a typo after you submitted the rework.) Before doing this, you should check with your grader in case they have already started grading the set.

Late adds

If you want to add the course, please arrange it with the registrar and then send an email to the course instructor once you have registered with the course. Be aware that you will be responsible for late penalties on all assignments, even ones due before you added the class, so add sooner rather than later.