CS 682 Syllabus

Course Info:
Time: TR - 3:30-5:15
Place: HRN 235
Professor: Chris Brooks
Office: Harney 541
Phone: 422-5221
email: cbrooks (at) cs.usfca.edu
Office Hours: TBD
Requirements
CS 601 or equivalent (CS 662 is also OK, although you'll need me to sign you in.). You should be comfortable writing medium-sized programs in a fairly short period of time. You should also feel comfortable reading about and playing with a new software tool. You will find in this class that I will treat you like graduate students; labs and projects will often be loosely specified, and you will be expected to make intelligent decisions about how to fill in these gaps. I will also expect you to pick up things on your own, without a lot of hand-holding.
Grading:
We will have a total of eight programming labs throughout the course. These will have a one-week turnaround: You will receive these on a Tuesday and have some time in class to work on them. They will be due the following Tuesday.

You will also have two programming projects. These will be larger in scope (and therefore worth more). They will require you to integrate technologies and ideas from the previous labs. You will have 2-3 weeks to complete these.

There will also be a midterm and a final. These will fit the standard format: in class, closed book, etc.
Here's how the course will be broken down:
30% labs
35% midterm/final
30% large assignments (15% for each)
5% class participation (this includes both attendance and taking part in class discussion.)
Attendance:
Attendance is mandatory. That includes showing up on time at the start of class. If you need to miss a class for a valid reason, you need to talk with me IN ADVANCE. Lack of attendance will lead to a drop in your grade, or your being dropped from the class altogether.
Text
I have prepared an online course reader for you. You will have weekly readings from this. These readings are required, and essential for understanding the material in this course.

I will also be assigning reading from the O'Reilly books available on . Safari. You have free access to this - if you're accessing from off-campus, I believe you need to go through the library's website.
Late Policy
Labs may be turned in up to 24 hours late, for a maximum of 75% credit. I would strongly encourage you to get them done on time; turing in things late not only kills your grade, but puts you behind on starting the next assignment.

Programming assignments may not be turned in late. You will be expected to demo your project in class on the day that it is due. No exceptions.
Collaboration
In general, I expect students to behave responsibly and do their own work. I'm willing to assume this is the case until proven wrong. More specifically, it is OK to talk with each other about the general parameters or approach of the assignment. It is NOT OK to share source code, to do part of an assignment for another person, or to directly copy another person't work. If you are unsure as to whether something is considered fair game or not, please ask me and we can discuss it.

A few examples:
"In this lab, are we supposed to use the DOM parser or the SAX parser?" This is fine; it's a clarification of the assignment. Feel free to talk about this sort of thing with your classmates.
"I don't understand leader election! Can you explain it to me?" Also fine; you're talking about the course material generally; I think students should help each other with this sort of thing - you're great resources for each other.
"Question 3 is really hard. How did you do it?" Now we're getting into a gray area. If you're talking in generalities here ("Well, we have to look for text nodes, then get their children, then sort those ...") that's fine; you're not telling the other person exactly how to do the assignment, you're just discussing approaches. If you're talking specifics ("Here's the code for extracting the info we need.") then we're moving into unacceptable territory. The question to ask is: does the person I'm talking to still need to think for themselves in order to solve the problem, or have I just given them the entire answer? I strongly recommend erring on the conservative side here; if you're unsure whether you're sharing too much, tell the question-asker that they should talk to me. I'm always happy to help people with problems.
"Can I just look at/use/copy your code?" Definitely not acceptable. Keep in mind that both participants are cheating here; the person who is copying and the person who is allowing their friends to copy. Students that I feel are cheating in this manner (this is cheating) will not be treated nicely.
Also note that using code that you get off the web, from a friend, etc. and turning it in as your own is considered plagiarism, just as if you did it in a paper. This will result in (at least) a zero for that assignment.
Topics
See the Resources page for a list of lecture and lab topics.