General Policies and Helpful Advice
Sorry this is so long but over the semesters many situations
have arisen and I want to respond to them here. I am really
not a mean and nasty guy like it may sound by the time you
have read all this. I really am interested in your success
in this course.
Web Page
- The class web page is updated frequently. So are assignment
pages. As people ask questions about the assignments I will put
clarifying remarks and hints in the assignment pages or in the
info box in the class home page. You are
responsible for watching these pages for changes right up to the
moment the assignment is due. There are programs out there that
you can use that will
watch pages for changes, but I am not responsible if they fail to
detect my changes. So stay alert and refresh those pages
when you load
them!
Assignments
- There will be programming assignments and/or class
discussions requiring a working
knowledge of C++.
- You may develop the code for your assignments on any machine you
want, however the source code for programming assignments must
compile and execute on the CS department Sun machines using
the resident g++ compilers for the class.
If it correctly works on a different compiler or interpreter, but
not on the one the homework is to graded on then it is not running
correctly and I may take off points for this. Failure to
get it running on the grading compiler is often a lot of work for me
to fix.
- The more work I take to make a program run the less points
it is worth. This includes not following instructions for program submission.
My trying to make a program run depends on the time
that I and my grader have. There is no guarantee that we will even try.
- If I can't read your source code I will find it difficult to
judge how well you done the assignment or provide a quick fix to
get your assignment to run. So it is in your interest to code
with clarity. You will find that in the corporate sloppy coders get
a bad rep and people don't like to work with them.
Here is a simple coding
standard you might find helpful.
- As in the real world, code may be tested on many examples but
when handed to the end user may fail.
I will supply a set of test data
with each programming assignment.
You should test your program against this data plus any other
data you choose. If your program
works perfectly with this data, it is no guarantee that your
program will work with the data I use to grade your program. That
data is usually a more difficult version of the test data I give
you. In short, your program needs to be general and robust.
-
There are no late assignments.
If you don't get your program submitted by the
the time on the assignment, it does not even get graded.
Don't even miss the due date/time by a second. Yes, I am serious.
The clock on the CS web server is the standard for time. Turn
things in with plenty of time to spare.
When I say a particular assignment is difficult. Believe me and
don't waste time to at least look at it and judge for yourself.
-
Always turn in your homework even if it is not complete.
I do
give some credit for programs that don't work when an effort has
been made. Therefore it is a good strategy to always submit
something even if it doesn't work. There is no guarantee
that you will get any partial credit, but it is certain you won't
if you don't submit anything.
-
The grades are curved. You are in some sense competing against
others in the class. (See final grade calculation below.)
As the semester nears the end, the importance of
not missing an assignment will become more clear.
The competition is that stiff.
-
Do not change the interface of any of the functions that
are specified in the homework or provided. Do not change the spelling of
the function name or
name of the function and do not add or subtract arguments.
This is not acceptable in the real world and it is not acceptable here.
-
Don't miss an exam without talking to me first.
I have been known to make up the occasional exam if warned
in advance. The make up exam is usually not as easy as the
original and I am less forgiving in the grading.
-
If there is terminology in the homework/programming assignment
that you don't understand, ask! You will be graded on
complying with what was asked for. If you don't understand
the scope of the problem or terminology used, ask. It
may be critical to complying with the assignment.
In short it is your responsibility to understand, ask!
- If you have questions in class ask!. If you
have questions later then ask!:
- email me a question.
- if you have a question about code and this class
is using code submission by web page don't send me code
send me your question and the submission number you get when
the submission is successful. I will unpack your tar and
look for myself.
- if you want to talk face to face come durint office hours
or make an appointment via email. I am happy to help.
-
Don't wait until the last minute to do the assignment. You
may find that you don't understand the problem and I will not
be around to ask. These problems can be very tricky or lengthy.
-
I will count off for extra output printed
or output that is not in the requested format. Believe that
I will. You need
to learn to follow the spec because others may be relying on
your output coming out in a particular format. For example, in UNIX
the output of a program is often the input to another program.
-
If I give any extra credit
I tend to grade extra credit harder than regular work since
extra credit is "beyond the call of duty".
The Points System and
How Your Final Grade is Determined
What you need to watch is the final number of points. If you
try to map a test score or a program score to a letter grade
by some simple linear mapping you will go crazy. It is
the final score that counts.
The plain score is the sum of the points of all assignments
and tests
not counting any extra credit.
Procedure for Getting Final Letter Grade
First, note that in the past I have flunked people.
Yet in one course of about a dozen exceptional people
I have given almost the whole class As.
- If your plain score is 90% or above of max possible plain score
you have an A. People below this threshold may also get As.
- I will then sort the plain scores. I will look
for gaps in the continuum of scores. I will look where the
mean falls and the 90% mark falls. Somewhere between the
two and in a gap will probably fall the A/B division. The placement
of this division will depend on my subjective perception of the performance
of people on both sides of the gap.
- I will look for similar gaps for C,D,F. There need not necessarily
be any Cs, Ds, or Fs but there frequently are. The choice for the
divisions is subjective. But again people with similar scores will
probably get the same letter grade.
- Extra credit is now added to your plain score.
If your extra credit would solidly
allow you to bridge the gap between letter grades then you will get the
higher letter grade. Extra credit can never be used to jump
two or more letter grades.
Note: in cases of academic dishonesty I reserve the right
(which I have anyway on any homework) to review all previous homeworks
and reissue grades.
Engineering Outreach Students
If you have questions ask first by email sending as much relevant
information as you can to the question. For example, if your question
is about a piece of code, send the code. Email often works better for
most questions than phone.
All assignments are due exactly to the minute 2 weeks after the
date/time posted on the web page for the assignment. The time on the
web server is the time that counts. It is running on Pacific
Time. Late rules apply to video students as well. If you have a
special situation contact me at the beginning of the semester or when
the assignment is given out. I am flexible but require documentation.
If you have a special situation like a trip to the emergency room or
your own wedding then if k days are taken for the event your
assignment is delayed by k days only. I don't ignore weekend days
since if you took a weekday off you should be prepared to makeup for
it on the weekend like in the real world. And if you took a weekend
day off then it is a one for one substitution anyway.
Ethical Issues
Let's get something straight right off the bat:
When it comes to cases of academic dishonesty
do not confuse me with someone who is merciful.
What is academic dishonesty?
Let's look at the thin line between
what you can and cannot do.
Unless otherwise instructed, you may:
- discuss problems on assignments with fellow students but you
may not share answers.
- you may discuss large scale
design issues and algorithms for programming assignments
with other students.
But do not copy algorithms, programs, procedures, functions, or data types.
Remember that this course is graded on a curve and you are, to some
degree, in competition
with others in the class.
Feel free to offer a little help.
It is nice to help but don't help too much.
This will result in your work being too much alike (see below).
- you may consult books or the web for algorithms or design patterns but you
may not copy from those sources.
However, homework is not a group project in this class.
- You may not copy another student's work from this semester
or earlier one. The words you
use and code you write must be your own work. You are not allowed to
just alter the wording or variable names to "generate" your work.
This is unethical and unfair to others. It pisses people off.
Please do not embarrass yourself or me by doing so. Very nasty things
have to happen and a lot of time wasted for both of us.
- You may not copy books, the web, etc.
You must read and understand the text, programs, diagrams etc
and then express the
ideas in your own words. If I detect that something has been copied,
I will invoke the rule above. We are
both here in this class so that you will understand this material and
be able to use it in the "real world". Copying without understanding
misses the point and is unfair to others that work hard for their grade.
- You may not share information during an exam. The
consequences are even worse. Do not use technology to
get answers from stored material or contacting friends,
cell phones, cameras, pdas, ipods, mp3 players, computers, text messaging devices,
etc are not allowed to be used or keep in any visible area during the
test. I will confuscate them during the test.
- Finally, it is in your best interests to not discuss too
much or share too much information. I have to make a subjective
judgement if two programs are too much a-like. I would
rather see lots of "distance" between the programs.
Here is the key test to see if you are talking too much to
other students:
if two
assignments are turned in that are substantially the same
in shape or form this indicates to me that too much
information has been shared and it will be treated as copying.
Hints to avoid being taken advantage of
You are responsible for protecting your work. Yes, I am serious that
in the past some work was stolen. This can make your work seem
as if you copied. I will assume that copying happened until
the culprit is found.
- Do not share too much information. The more info you share
the more your papers look alike and that gets dangerous.
- Do not loan your paper to someone else even if you think
they are your friend. If they turn in your work (and this has happened)
you are both fried.
- Do not leave your homework lying around where people can find
it. People have stolen people's papers out of the lab.
- When you print stuff on the printer pick it up immediately.
People have stolen people's work off the printer.
- If you feel guilty about how much you are sharing with
each other then you are probably sharing too much. Movies are
a great substitution topic. :-)
- Do not share a computer account with someone. "Friends" have been
known to copy files out of shared accounts. Unbelievable, yes?
Consequences
The very
best you can hope for in the case of academic dishonesty
will be to get a score of -100 on the assignment.
That is not having 100 points taken off... that is a negative score!
I feel free and have made the score substantially more negative (-250
is not unheard of). This can essentially devastate your grade in this class
so that there is little hope of passing. Seniors should think long
and hard about what that means to their graduation date.
Hacking
There have been incidents of attempting to hack the grading scripts.
Please don't try this because not only will I give you an F for the
course but I will give your name to the chair of the department who will
not be as nice as I am.
Conclusions
Sorry to have been so unpleasant about the ethics but I find if I don't say
anything there is always someone who doesn't want to play fair.