Java track: introduction

This is the home page for the java track of CS 11. This information is for the spring 2004 term.

Administrative information


None. However, CS 1 is strongly recommended as a prerequisite. In addition, those with knowledge of C syntax (e.g. from taking the C track of CS 11) will have a major advantage.

You must have a CS cluster account to submit assignments (an ITS or UGCS cluster account is not acceptable). If you don't have one, go to this page and get one. You need to be at least somewhat familiar with Unix as well; if you aren't then you can read this tutorial at ITS.


The instructor is Mike Vanier ( My office is in Jorgensen room 154a.

My office hours

My office hours are on Friday from noon to 2 PM.

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, send me email and we'll arrange a meeting.


Minilectures will be held on Wednesdays at 8 PM in room 74 of the Jorgensen building.

You will need card access to the basement of Jorgensen (first floor is not sufficient). If you haven't already given me your Caltech UID number (on the signup sheet or by email), email me your UID number and I'll arrange this. If you wrote it on the signup sheet it shouldn't be necessary. If all else fails, knock on the window.

Minilectures will typically last about half an hour to 45 minutes, but may go longer depending on the needs of the class. Attendance is not optional at these lectures, due to the breadth of material that we will be covering. What "not optional" means is that if you don't show up, you do so at your own risk.

Grading policy

The course is pass-fail. I will grade each assignment on a scale of 0 to 10. All assignments are due one week after they are assigned. Late assignments will lose one mark for each day they are late (all the way to zero). If the assignment doesn't meet my standards, I will require you to redo it (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.

All assignments must be completed in order to pass the course, regardless of the numerical grade you get. If you're heading for an F, I will encourage you to drop the course so as not to hurt your academic record. If you have more than two assignments that haven't been completed satisfactorily by the time I have to submit the grades, you will get an F. If you have only one or two incomplete assignments I may give you an E instead, but you will have to complete the assignments as soon as possible.

Collaboration policy

You are welcome to collaborate informally on your assignments with other individuals who are taking or have taken the class, but you must write all of your own code. Copying another student's code verbatim or nearly verbatim is not acceptable. Getting advice on algorithms or (say) syntactic details of the language is fine.

Submitting assignments

Make a subdirectory of your CS cluster home directory called ~/cs11. Under that directory, make a new subdirectory called java. Put the files for each week's assignments in a separate subdirectory of this directory called lab1, lab2, etc. I will collect the assignments on the day that they're due. If your assignment is not ready, let me know by email and also let me know when it's ready to be graded. I'll send you grades and comments by email.

Redoing assignments

I will make you redo assignments under circumstances which include at a minimum (but are not restricted to) any of: If this happens, the redone assignment is due one week after I've requested the redo (though I'd prefer if you completed it earlier). I will not grade assignments that I've asked to be redone until they are completed to my satisfaction. I will deduct from 1 to 5 marks from the grade as a redo penalty (depending on how much needs to be redone). If the redo still doesn't meet my standards, I may ask for a second redo, which will also be penalized accordingly. It is extremely unlikely that I will ask for a third or further redo, but I reserve the right to do so. If a redo is late, the assignment will be graded at 0. If an assignment needs to be redone, you must notify me by email when it's ready. If you don't notify me, I will assume that it isn't ready and grade accordingly. Redone assignments should be placed in the same location as the original assignment, overwriting the old files if necessary.

How assignments are graded

I will send you back a copy of your code with in-line comments. My comments will look like this:
Please don't write your own comments in this style (at least for the duration of this course). For style (code formatting) issues I will sometimes identify the problem via a tag that can be looked up in the java style guide. An example might be:
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 I don't like to see more than one statement on a line. Poor code formatting is so common that this notation saves me a lot of work, as well as forces you to read the style guide. In addition, there is also a java style checking program which you will use to check the style of your code. This will give you instant feedback in a way that I can't, but it won't catch all style violations. Compared to most instructors, I am very picky about code formatting, so please use the style checker; it'll save you a lot of time.

Late adds

I usually allow the course to be added up to add day; the specific choice will depend on my impression of the student's abilities. 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. Fortunately, the first few assignments are quite easy, so this is doable. Normal late penalties apply with respect to these due dates.


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





lab1 lab2 lab3 lab4 lab5 lab6 lab7 lab8
4-5/4-12 4-12/4-19 4-19/4-26 4-27/5-4 5-4/5-11 5-12/5-19 5-21/5-28 5-28/6-4
Travis Bannerman (trock@its)
Barrett Heyneman (heyneman@its)
Eric Kelsic (kelsic@its)
Kathleen Kiernan (kiernan@its)
Jason Mitchell (jemitch@its)