Python track: administrative information


Prerequisites

CS 1 (or placement out of CS 1) is an official prerequisite for this track. Of course, since CS 1 is taught in Python now, there would be little reason to take this track if you took CS 1, so as an alternative, we will accept you if you've taken another CS 11 track (or if you've taken the old CS 1 course, which used Scheme). If you have taken CS 1 using Python, you do not need to take this track and should take another CS 11 track. This track is not suitable for students with no programming experience; it moves much faster than CS 1.

You should have a CMS cluster account. To register for an account on the CMS cluster, please go here and fill out the online form. If you have not already done so, please do this immediately as it will take some time to process and you will need your account for the first assignment. You need to be at least somewhat familiar with Unix (specifically Linux) to work on the CMS cluster computers; if you aren't then you can read this tutorial at ITS. The CMS cluster computers are located in room 110 of the Annenberg building; you will need to have your ID card enabled to allow you to use the card reader to get into the room.

Instructor

The instructor is Mike Vanier (mvanier@cs.caltech.edu). My office is in Annenberg room 110.

My office hours

My office hours are on Tuesdays from 2 to 4 PM in Annenberg room 110.

However, feel free to drop in to my office at any time. I'm unlikely to be in in the mornings, but I'm often around fairly late at night. If you need to meet with me outside of office hours, sending me email beforehand is strongly recommended.

Lectures

Lectures will be held on Tuesdays at 7 PM in room 106 of the Annenberg building.

You will need card access to the Annenberg building if you want to use the CS cluster computers (in Annenberg 104) after hours. If you don't have card swipe access already (e.g. from CS 1) then send me your Caltech UID number and I'll arrange this.

Lectures will typically last an hour. Attendance is optional; if you can do the work without lectures, it's fine with me.

Grading policy

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

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).

The specific day that an assignment is assigned will be indicated on the csman page. Usually, it will be on the same day as a lecture. All labs are due at midnight of the due date.

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 7 labs, for a maximum total mark of 21. The pass grade is 15/21, which is just above a 2 average. This is a very strict pass threshold! A grade of e.g. 14.5 is a failing grade. If you get that grade without having completed all the labs you don't have to complete the remaining labs, but of course, you'll learn more if you do (and you will need to complete all labs to be eligible to be a CS 11 TA in this track in the future).

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! We don't like students trying to game the system.

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).

Teaching Assistants

We have one teaching assistant in this track: Atharv Vaish. Atharv's email address is avaish /at/ caltech /dot/ edu (figure it out). Atharv will be grading your labs, and he will also have office hours (Mondays 8-10 PM) in the computer lab in Annenberg 104. Note that this time overlaps with CS 1 lab section times, so Atharv will try to make himself conspicuous. If all else fails, just ask for him.

Collaboration policy

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

Writing your assignments

Once you have a CMS cluster account the normal place to write your code will be in the CMS cluster itself, which is in Annenberg room 104. You will need to have your card enabled so that the card reader can let you in.

Most of you prefer to write your code in your dorm rooms, and, sadly, most of you run Windows exclusively on your computers. I'd love to persuade you to change that to a dual-boot Windows/Linux machine (or to use Mac OS X with the developers cdrom installed), but failing that, the easiest way to work remotely is to use the freely-available PuTTy program, which will (among other things) act as a terminal into the CMS cluster. Once this is set up, you can log in to the CMS cluster login machine to do your work. However, we prefer that you not do this, since a lot of people use that machine for reading their email and doing routine (non time-intensive) tasks. Whatever you do, don't run a computationally-intensive program (like labs 6 or 7) on the login machine, because that will make it slow down to a crawl and you'll receive nasty emails from people (including me).

A different approach is to use Cygwin, which provides a Linux-like environment on Windows machines, including fully-functional versions of the command interpreter (shell) and emacs. Setting up Cygwin is not for the faint-hearted and will chew up a lot of disk space, but if you get it working, it'll be a great environment for this class.

You could also use an emulator such as VirtualBox, VMWare, or Parallels to run a virtual Linux machine on your home machine. If you do this, you're on your own, but it's not that hard to get going (I've done this successfully with VirtualBox with little difficulty; Ubuntu is a good distribution to run virtually).

Submitting assignments

Assignments are to be submitted through csman. If you haven't got a csman account, one will be created for you. Grades and comments will be submitted to csman, and you'll be notified by email when your assignments have been graded.

Redoing assignments

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

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 based on what the assignment is worth without redos. Once you have received your initial grade (by email), you have one week to submit a redo (or more than one redo). Once the redo is ready, you must notify your grader that it is ready by sending him or her an email. Any redos received in the week after the initial grading will be graded; after that, the last grade is the final grade for that assignment. If your grader gets your redo back to you before the week is up and you still need to make changes, you may submit another redo.

How assignments are graded

We will email you back a copy of your code with in-line comments. Our comments will look like this:

### THIS IS ONE OF OUR COMMENTS (ALL UPPER CASE, 3 #'s AT LEFT).

Please don't write your own comments in this style (at least for the duration of this course). For style (code formatting) issues we will sometimes identify the problem via a tag that can be looked up in the python style guide. An example might be:

    ### STYLE: [STMTS_ON_LINE]"
    i = 1; j = 2; k = 3;

which says to look in the style guide for the style violation called [STMTS_ON_LINE]. If you do that you'll see that we don't like to see more than one statement on a line. Poor code formatting is so common that this notation saves us a lot of work, as well as forces you to read the style guide. In addition, there is also a python style checking program which you will 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. Ignoring such comments will lead to an automatic redo. 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.

Late adds

I (Mike) will generally allow the course to be added during the first two weeks of class. Normally I won't allow adds after that, even if it's before add day.

One thing I do require for late adds is that the student submit proof that he/she has the prerequisites for the class. Officially, this means that the student has passed or placed out of CS 1, though I will also accept students who have passed a different CS 11 track, or students who have taken and passed upper-level CS classes with substantial programming components (e.g. CS 24). Taking a programming course concurrently is not acceptable, and neither is having taken a programming course in high school. Furthermore, since the registrar doesn't yet enforce course prerequisites, any student wishing to add CS 11 must send me their Caltech transcript as evidence of having the proper prerequisites (either a PDF or a written copy is fine). I know this is a nuisance, but we've had a lot of problems with inadequately prepared students taking the class and doing very poorly. CS 11 is emphatically not a course for absolute beginners! If you're a beginner, you should take CS 1 instead.

When a student adds the course, all assignments that have been assigned up to that point are due at the due date for the current assignment. Normal late penalties apply with respect to these due dates.

Auditing

We welcome auditors. If we have time, we will grade assignments submitted by auditors. However, this grading has low priority and may not happen (or may not be up to my usual grading standards, or may not be returned promptly).

If course enrollment is high (i.e. over 100 students) we won't grade labs from auditors. You're welcome to come to the lectures and do the labs on your own, but don't expect feedback.