This is a collection of class policies on a variety of topics.

Sorry this is so long, but over the years 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 you learning a lot in this course. But please do read all of this so there are no misunderstandings.

Web Pages

  • 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 class news on 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!


  • 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 machine for the class. If using C++ then the resident g++ compilers for the class will be used. 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 and computer 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 and with comments. You will find that in the corporate world sloppy coders get a bad rep and people don't like to work with them. Here is a simple coding standard for C that you might find helpful if you are working in C based languages.

  • As in the real world, code may be tested on many examples, but when handed to the end user may fail. I may supply a set of test data with a 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 gave 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. All times are Pacific Time. We follow daylight savings time according to the laws of Idaho. Turn things in with plenty of time to spare. When I say a particular assignment is difficult. Believe me and allocate your time appropriately.

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

  • 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 any time in the semester will become strikingly clear.

  • 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 a function given 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. The exam may be given at the Couseling and Testing Center which may involve nominal fees.

  • Every byte or paper submitted for evaluation or grading becomes the property of the the University of Idaho for any educational purpose they see fit. It may be copied and stored for such things as quality assurance, standards compliance, comparison for academic integrity, acreditation requirements, etc.

  • 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 during 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. Sometimes 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.

  1. 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.
  2. 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.
  3. 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.
  4. On average I flunk 15% or more of the class so don't assume that all grades are C and above. This is not a requirement but if you have, for example, 50% or less the chances of not flunking are very very small.
  5. 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.
  6. After 7 days or day the university requires grades be turned in (which ever is earlier) the point scores and any letter grades become final. If you should have any complaints talk to me early. I will not consider changes after the scores become final. We need to move on at some point.
Fine print: in cases of academic dishonesty I reserve the right (which I have anyway on any homework) to review all previous homeworks and reissue grades.

For graduate students: The 2018 university catalog for the College of Graduate Studies states: "...In order to be eligible for graduation, a candidate for an advanced degree must have a cumulative GPA, based on all grades on his or her graduate transcript, of at least 3.00 (A = 4.00) and at least a 3.0 overall GPA across all courses listed on the approved study plan. The relevant GPA is calculated as stated in regulation E. Courses in which grades of D or F are received may not be counted toward the satisfaction of degree requirements; however, those grades are included in the GPA..."

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

All assignments are due at the same date/time posted on the web page for the assignment for local students. 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.

Class Ethical Issues

This is all about playing fair so 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.

  • you may consult books or the web for algorithms or design patterns but you may not copy from those sources.

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. Programming help is available in CSAC in room 211 in JEB. Email the instuctor for a hint or suggestion. Make an appointment or come in during office hours. It is nice to help a fellow student but don't help too much. This will result in your work being too much alike (see below).

What ever you do don't share your code or show your code to another student. You explain the ideas without showing your actual code. You may quickly find you "friend" will throw you under the bus out of desperation and you both lose.

Most homework is not a group project. If sharing of work is allowed I will make it plain on each assignment. Here is a detailed list of don'ts:

  • 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 off your fellow students. 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, smartphone, cameras, pdas, ipods, ipads, calculators, mp3 players, computers, text messaging devices, watch like devices, etc are not allowed to be used or keep in visible area 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 judgment 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.

Important 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 give your code to someone else... even your friend.
  • Do not show your code to someone else... even your friend.
  • 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 and shared computers in the apartment. Unbelievable, yes? People have broken up for this and been kicked out of living arrangements over this. It isn't worth it.


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. This is like being "red carded" in soccer. Seniors should think long and hard about what that means to their graduation date.

Fine print: in cases of academic dishonesty I reserve the right (which I have anyway on any homework) to review all previous homeworks and reissue grades.


There has been an incident 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. In fact, expulsion would be probably follow.

Laptops in Class

Yes, Please! Bring your laptops. Let's work together on stuff in class! Take notes on the laptop etc. In fact you can do anything you want on your laptop in class. However, do not tick off people around you in class. If you are going to play a game in class then do it at the back of the classroom or use a privacy screen on your laptop so no one around you will be distracted. People don't care if you are not learning as long as it doesn't interfere with their classroom experience.

Deadly Weapons on Campus

To help clarify the new law: The University of Idaho bans firearms from its property with only limited exceptions. One exception applies to people who hold a valid Idaho enhanced concealed carry license, provided those firearms remain concealed at all times. No one, licensed or not, may keep a weapon in their dorm room or even in their car parked on campus even if locked and concealed. If an enhanced concealed carry license holder's firearm is displayed, other than in necessary self-defense, it is a violation of University policy. As a matter of safety, since it is hard to tell the intent or licensing of the owner of an improperly concealed weapon, please contact local law enforcement by calling 911 to report firearms on University property. To read the full complex details of the new law, places where no fire arms are allowed at all, and other topics such as on campus storage facilities for your weapons see the security FAQ. Finally, always go to the source for full details. Do not rely solely on my interpretation.


Sorry to have brought up all this unpleasantness about the ethics but I find if I don't say anything there is always someone who doesn't want to play by the rules. Now you know the rules.

Nuf said. Now back to quiet and peaceful elevator music. :-)