CS 682 Syllabus
Time: TR - 5:30-7:15
Place: HRN 235
Professor: Chris Brooks
Office: Harney 541
email: cbrooks (at) cs.usfca.edu
Office Hours: TBD
CS 601 or equivalent. 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
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
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% large assignments (15% for each)
5% class participation (this includes both attendance and taking
part in class discussion.)
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.
We will be using the following required text:
Service-Oriented Computing : Semantics, Processes, Agents
by Munindar P. Singh and Michael N. Huhns. Wiley, 2005.
Recommended: You will also need access to material that deals with the
nitty-gritty of CSS, XML, XSLT, RDF and SOAP. I find the O'Reilly
books to be particuIarly good at this. I strongly
recommend getting a subscription
Students often ask if they can just use other freely available Web
resources for this, rather than purchasing Safari. My response is
that I will assume you are familiar with these topics to the depth
they are treated in the O'Reilly texts; how you acquire that
knowledge is up to you.
We will also occasionally have supplemental reading from other
sources. I will also provide you with online material or
photocopied chapters from other texts as needed.
Labs may be turned in up to three days late. 10% is taken off for each
day your assignment is late, starting at the beginning of class that
day. Weekends count as one day, so if your assignment is due on a
Friday and you turn it in on a Monday, you get
10% off. After the third day, the assignment is worth zero - at
that point, you're better off moving on to the next assignment rather
than getting further behind.
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.
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
"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
See the Resources
page for a list of
lecture and lab topics.